对于初次学习C语言程序设计,我们要了解到C语言程序设计的学习包括两个方面语法规则的学习和程序设计方法的学习学习计算机语言和程序设计的目的: 就是要学会用计算机语言编写解决实际问题的程序。

一、C语言发展过程

产生背景

  • ALGOL 60(1960)→CPL语言(1963)→BCPL(1967)→B语言(1970)→C语言(1972),重写UNIX系统

产生过程 :

  • 时间:1972~1973
  • 地点:美国贝尔实验室
  • 目的:UNIX操作系统 
  • 设计人:Ken.Thompson和Dennis.M.Ritchie

C标准 :

  • 标准C: 1978年    K&R合著《The C Programming Language》
  • ANSI C: 1983年 87 ANSI
  • C: 1987年 1990年国际标准的ANSI C ,1994年再次修订。

C版本 :

  • Microsoft C 或称 MS-C
  • Turbo C 或称 TC

二、C语言的特点

C语言的特点主要包括:简洁性、表达式简练实用、丰富的数据类型、具有低级语言的特点、结构化的语言、可移植性强、代码效率高等。

  1. C语言简洁、紧凑、灵活。C语言的核心内容很少,只有32个关键字,9种控制语句。
  2. 表达方式简练、实用。C语言有一套强有力的运算符,达44种。
  3. 具有丰富的数据类型。C语言具有现代语言的各种数据类型,如字符型、整型、实型、数组、指针、结构体和共用体等。
  4. 具有低级语言的特点,使用地址访问内存,地址运算、数位运算。
  5. C语言是一种结构化语言,适合于大型程序的模块化设计。C语言提供了编写结构化程序的基本控制语句,例如if~else语句、switch语句、while语句和do~while语句等。
  6. C语言程序是函数的集合,函数是构成C语言程序的基本单位,每个函数具有独立的功能。
  7. 各种版本的编译器都提供了预处理命令和预处理程序。
  8. 可移植性好。程序从一个环境不经改动或稍加改动就可以移植到另一个完全不同的环境中运行。
  9. 生成的目标代码质量高。由C源程序编译和连接得到的目标代码的运行效率比用汇编语言编写的也不过只低10%~20%,可充分发挥机器的效率。
  10. C语言语法限制不严,程序设计自由度大。

 三、计算机解题过程(分→设→编→运

 计算机的解题过程大概分为四个阶段,分别是分析问题、设计算法、编写程序、运行验证。

  1. 1 分析问题

详细分析需要解决什么问题,清楚了解问题的需求。已知的原始数据有哪些?使用什么方法或者数学模型?要得到什么结果?分析问题就是明确知道自己要做什么的过程(What to do)。

  1. 2 设计算法

明确了做什么之后,就是需要考虑怎么做(How to do)。通常将解决问题的方法或者数学模型转换成解决问题的步骤,即设计算法。设计算法是计算机解题过程中一个具有创造性的重要环节,涉及的算法是否合理直接关系到问题能否解决。同时,解决问题的方法可以有多种,所以需要设计出多种算法,通过分析比较找到最优算法。

  1. 3 编写程序

确定了解决问题的算法后,需要使用一种计算机程序设计语言编写程序。编写程序就是将设计的算法等价映射(转换)为计算机程序,所编写的程序从逻辑上看是算法的一种表现形式。

  1. 4 运行验证 

编写的程序可能会不能满足解决实际问题的需求,所以就需要调试,即在计算机上运行并排除潜在错误。必要时还要使用测试数据对程序进行测试,验证程序的正确性。如果程序测试不充分,则有可能导致潜在错误的存在。除此以外,问题需求也可能随着时间的推移而变化,使程序使用一段时间后还需要进行修改和完善,这个过程被称为维护。

四、算法及其表示

 算法是精确定义的一系列规则的集合,它是为解决一个特定的问题所采取的确定的有限步骤。算法由数据、操作和控制结构三要素组成。

算法的操作种类也有很多,最基本的有赋值运算、算术运算、关系运算和逻辑运算;稍复杂的有函数运算、向量运算等;更复杂的有表、栈、队列、树和图的运算。

算法的控制结构给出了算法的框架,决定了各操作的执行次序。但任何复杂的算法都可以用顺序结构、分支结构、循环结构3种控制结构组合而成。

 

求解问题时,算法必须具有以下特性:

  1. 有穷性:算法在执行了有限步骤之后结束,并且每一步都可以在有穷的时间内完成。
  2. 确定性:算法中每种操作必须有确切的含义,即无二义性。同时,无论如何算法只有唯一的一条执行路径,也就是相同的输入要得到相同的结果。
  3. 可行性:每一步都可以有效的实现
  4. 输入:有零个或多个输入,即算法的输入需要初始数值
  5. 输出:有一个或多个输出,输出的是与输入的有某种特定的关系的数据

算法的表示方法:

算法的表示方法包括:自然语言描述、传统流程图、N-S流程图、伪代码、程序设计语言

  1. 自然语言描述:自然语言可以是中文、英文、其他民族语言或数学表达式等。用自然语言描述算法通俗易懂,其缺点是文字有可能冗长,不太严格,容易产生歧义,表达分支和循环结构不方便等。     
  2. 传统流程图:是用约定的图框和流程线表示运算或操作流程的图示形式。其优点是直观形象、易于理解。美国标准化协会ANSI规定的一些常用流程图符号如下图所示:
  3. N-S流程图:是一种结构化流程图,适合于表示结构化算法。N-S流程图完全取消了带箭头的流程线,全部算法写在一个矩形框内,框内还可以包含从属于它的框。基本图形符号如下所示: 
  4. 伪代码:伪代码采用了类似程序设计语言的语句表示算法,但是伪代码不是一种程序设计语言,不涉及程序设计的细节。

五、常用算法策略介绍:

 常用的算法策略包括枚举法、递推法和递归法

  1.  枚举法又称为穷举法。该方法通过逐一考察问题的所有可能解,找出问题真正的解。枚举法要求问题的可能解必须是有限的,而且这些可能解是已知的
  2. 递推法是从已知的初始条件或问题的最简单情况出发,逐次推出中间结果。在理想状态下,每递推一次,结果逐渐接近问题的最后解。
  3. 、一个直接或间接调用过程(或函数)自身的算法称为递归算法,一个函数如果调用自身进行计算则称该函数为递归函数。一些问题的算法描述中,递归法往往比非递归法更加简洁易懂。 

六、结构化程序设计方法:

结构化程序设计以功能模块和过程设计为主,其要点如下:

结构化程序设计中三种基本结构: 顺序、选择、重复

  1. 用顺序方式对过程分解,确定各部分的执行顺序。

  2. 用选择方式对过程分解,确定某个部分的执行条件。

  3. 用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。

 

 

 

更多推荐

C语言程序设计----初识C语言与程序设计