程序设计有两个重要特征:科学性和工程性。
科学性指程序构造过程应有充分科学依据:分解弄清问题各部分的意义和互相联系,需要人对程序实现过程有科学认识。
程序设计的工程性是指从另一个角度看问题。工程设计中需要分析和理解问题,寻找可能解决方案,对各种方案做出评价和选择。对所做选择应有清醒认识(优点和缺点,是否对问题的某些方面有所偏向或不足等),进而确定具体实施方案。
程序设计问题并没有什么“标准答案”,要追求的是比较好的“正确”答案。
程序设计是“从问题到程序”的思考和工作过程,这里既要求掌握严格的科学方法,又要求谨慎灵活的工程能力。
程序和程序语言
程序是什么
按部就班地一步步完成一系列动作,对这种工作(事物、活动)过程的细节动作描述就是一个“程序”。在一个程序描述中,总有一批预先假定的“基本动作”,这些基本动作是执行程序者能够理解和直接完成的。一个程序总有开始与结束。在执行此程序的过程中,动作者(无论是不是人)需要按照程序的描述执行一系列的动作。在达到结束位置时工作就完成了。
程序语言
程序设计语言是人描述计算的工具,也是人与计算机交流信息的媒介:通过用程序语言写程序,人能指挥计算机完成各种特定工作,完成各种计算。计算机诞生之初,人们只能直接用二进制形式的机器语言写程序。
一个复杂程序里的指令可能有成百万、成千万条或者更多, 程序中的执行流程错综复杂,很难在二进制机器指令的层面上理解复杂程序到底做了什么。为缓解这一问题,人们发展了符号形式的,使用相对容易些的汇编语言。
1954 年诞生了第一个高级程序语言 FORTRAN,宣告程序设计新时代的开始。FORTRAN采用完全符号化的描述形式,用类似数学表达式的形式描述数据计算。语言中提供了有类型
的变量,作为存储的抽象模型。此外它还提供了一些流程控制机制,如循环和子程序等。
数据对象与计算
数据对象
基本字符、标识符、关键字
C 语言基本字符包括:
- 数字字符,0,1,2,3,4,5,6,7,8,9;
- 大小写拉丁字母:a~z,A~Z;
- 其他一些可打印(可以显示)的字符(如各种标点符号、 运算符号、括号等),包括:
~!%&*()_-+={}[]:;"'<>,.?/| - 还有一些特殊字符,如空格符、换行符、制表符等
标识符
程序中的名字叫做标识符
一个标识符是字母和数字字符的一个连续序列,其中不能有空白字符,而且要求第一个字符必须是字母。为了方便起见, C 语言特别规定将下划线字符“_”也当作字母看待。这
就是说,下划线可以出现在标识符中的任何地方,特别是可以作为标识符的第一个字符。
关键字
在程序中具有预先定义要的意义
C 语言关键字共 32 个,列在这里:
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
数据类型
数据
数据是程序处理的对象。 C 语言把程序能处理的基本数据对象分成一些集合。
类型
属于同一集合的数据对象具有同样性质: 采用统一的书写形式, 在具体实现中采用同样的编码方式(按同样规则对应到内部二进制编码,采用同样二进制编码位数),对它们能做同样操作等等。语言中具有这样性质的一个数据集合称为一个类型。
C 语言的基本类型包括字符类型、整数类型、实数类型等。
整数类型:
常用表示二进制,十进制,八进制,十六进制
实数类型:
- 浮点类型的数用 4 个字节 32 位二进制表示。 这样表示的数大约有 7 位十进制有效数字,数值的表示范围约为 ± × × ( . . ) 34 10 34 10 −38 38 L ;
- 双精度类型的数用 8 个字节 64 位二进制表示,双精度数大约有 16 位十进制有效数字,数值的表示范围约为 ± × × ( . . ) 17 10 17 10 −308 308 L ;
- 长双精度类型的数用 10 个字节 80 位二进制表示,大约有 19 位十进制有效数字,其数值的表示范围约为 ± × × ( . . ) 12 10 12 10 −4932 4932 L 。
字符类型:
最常用的字符类型的类型名是 char。字符类型的数据值包括本计算机所用编码字符集中的所有字符。目前微机和工作站常用 ASCII 字符集,其中的字符包括所有大小写英文字母、
数字、各种标点符号字符,还有一些控制字符,一共 128 个。扩展的 ASCII 字符集包括 256个字符。字符集的所有字符都是字符类型的值。在程序执行时,其中的字符就用对应的编码表示,一个字符通常占用一个字节。字符文字量的书写形式是用单引号括起的单个字符。
运算符、表达式、计算
算术运算符一共有 5 个:
表达式
算术表达式由计算对象(例如数值的文字量等)、算术运算符及圆括号构成,表达式的计算过程又称表达式求值。
计算
1.优先级
2.C 语言里不规定表达式中两个运算对象求值顺序的定义C 语言里不规定表达式中两个运算对象求值顺序的定义
3.程序里不应该写对求值顺序敏感的表达式
4.两个 int 类型的数据经过计算,得到的还是 int 类型的结果。对长整数类型、各种实数类型,情况也一样。
5.运算结果超出范围发生溢出
数学函数库
使用一个函数,只需要知道:
- 该函数的名字,
- 该函数的使用方式,
- 该函数完成什么计算,能给出什么结果
使用一个函数的专门术语是函数调用,在表达式中使用函数的一般形式是:
函数名(实际参数)
函数名(实际参数, 实际参数)
……
标准库的每个数学函数都规定了参数个数,规定了所要求的实际参数的类型,都规定返回值类型。标准数学函数大都要求一个 double 参数,其返回值也是 double 类型。
函数对参数有明确的类型要求,C 语言规定,先把实参求出的值自动转换为函数所要求类型的值,然后再送给函数去计算。