程序设计和C语言
计算机程序
计算机程序:一组计算机能够识别和执行的指令
计算机语言
机器语言
计算机只能识别和接受由二进制数(0或1)组成的指令
机器指令:计算机能够直接识别和接受的二进制代码
机器语言:机器指令的集合
符号语言
符号语言(符号汇编语言,汇编语言):用英文字母和数字表示一个指令
汇编程序:把符号语言的指令转换为机器指令,一条符号语言的指令一般对应转换为一条机器指令
高级语言
低级语言:机器语言和汇编语言完全依赖于具体机器的特性,是面向机器的语言,离计算机“很近”
高级语言:功能很强,不依赖于具体机器,写出的程序对任何型号的计算机都适用(或只需做少量修改),与具体机器“较远”
编译程序:把高级语言写的程序(源程序)转换为机器指令的程序(目标程序),让计算机执行并得出结果,一条高级语言的语句往往对应多条机器指令
高级语言的不同发展阶段
非结构化的语言:编程风格比较随意,只要符合语法规则即可,没有严格的规范要求,程序中的流程可以随意跳转,程序难以阅读和维护,如BASIC、FORTRAN和ALGOL等
结构化语言:采用结构化程序设计方法,程序必须由具有良好特性的基本结构(顺序结构、分支结构、循环结构)构成,程序中的流程不允许随意跳转,程序总是由上而下顺序执行各个基本结构,程序结构清晰,易于编写、阅读和维护,如QBASIC、FORTRAN 77和C语言等
面向对象的语言
基于过程的语言在编写程序时,需要具体指定每一个过程的细节,仅适合编写规模较小的程序
处理规模较大的问题时使用面向对象的语言,如C++、C#、Visual Basic和Java等,程序面对的不是过程的细节,而是由数据以及对数据进行的操作组成的对象
C语言的主要特点
语言简洁、紧凑,使用方便、灵活。C语言一共只有37个关键字、9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分
运算符丰富。C语言包含34种运算符,把括号、赋值和强制类型转换等都作为运算符处理,使运算类型极其丰富,表达式类型多样化
数据类型丰富。C语言的数据类型包括整型、浮点型、字符型、数组类型、指针类型、结构体类型和共用体类型等,C99扩充了复数浮点类型、超长整型(long long)和布尔类型(bool)等
具有结构化的控制语句,如if…else语句、while语句、do…while语句、switch语句和for语句等。C语言是完全模块化和结构化的语言,用函数作为程序的模块单位,便于实现程序的模块化
语法限制不太严格,程序设计自由度大。如不检查数组下标越界、对变量类型的使用比较灵活、放宽语法检查等
C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
C语言既具有高级语言的功能,又具有低级语言的许多功能,这种双重性使C语言既是成功的系统描述语言(编写系统软件),又是通用的程序设计语言(编写应用程序)
用C语言编写的程序可移植性好
生成目标代码质量高,程序执行效率高
C语言的可移植性好、硬件控制能力高、表达和运算能力强,主要用途之一是编写“嵌入式系统程序”
C语言程序的结构
一个程序由一个或多个源程序文件组成,源程序文件的组成:
预处理指令
C编译系统在对源程序进行转换以前,先由“预处理器”(“预处理程序”、“预编译器”)对预处理指令进行预处理,如#include、#define等
例:#include,就是将stdio.h头文件的内容读进来,并放在#include指令行取代#include,与程序其他部分组成完整的、可编译的源程序,然后再由编译器进行正式编译
全局声明
全局声明:即在函数之外进行的数据声明
全局变量:即在函数之外声明的变量
在程序开头(定义函数前)声明的变量,在整个源程序文件范围内有效;在函数中声明的变量(即局部变量),只在函数范围内有效
函数定义
每个函数用来实现一定的功能,在调用这些函数时,会完成函数定义中指定的功能
函数是C程序的主要组成部分
函数是C程序的基本单位,一个C语言程序由一个或多个函数组成,其中必须有且只能有一个main函数
在进行编译时,以源程序文件为对象进行
一个函数包括两个部分
函数首部
即函数的第1行,包括函数类型、函数名、函数属性、函数参数(形式参数)名、函数参数类型
一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型,如果函数没有参数,可以在括号中写void,或直接使用空括号
函数体
即函数首部下面的花括号内的部分,一个函数中包括有多层花括号,则最外层的一对花括号是函数体的范围
函数体的组成
声明部分:对本函数所用到的变量进行定义,以及对本函数所调用的函数进行声明
执行部分:由若干语句组成,指定在函数中所进行的操作
存在某些