一. 程序设计和C语言
1. 计算机程序
计算机程序:一组计算机能够识别和执行的指令
2. 计算机语言
2.1. 机器语言
a) 计算机只能识别和接受由二进制数(0或1)组成的指令
b) 机器指令:计算机能够直接识别和接受的二进制代码
c) 机器语言:机器指令的集合
2.2. 符号语言
a) 符号语言(符号汇编语言,汇编语言):用英文字母和数字表示一个指令
b) 汇编程序:把符号语言的指令转换为机器指令,一条符号语言的指令一般对应转换为一条机器指令
2.3. 高级语言
a) 低级语言:机器语言和汇编语言完全依赖于具体机器的特性,是面向机器的语言,离计算机“很近”
b) 高级语言:功能很强,不依赖于具体机器,写出的程序对任何型号的计算机都适用(或只需做少量修改),与具体机器“较远”
c) 编译程序:把高级语言写的程序(源程序)转换为机器指令的程序(目标程序),让计算机执行并得出结果,一条高级语言的语句往往对应多条机器指令
d) 高级语言的不同发展阶段
d.1. 非结构化的语言:编程风格比较随意,只要符合语法规则即可,没有严格的规范要求,程序中的流程可以随意跳转,程序难以阅读和维护,如BASIC、FORTRAN和ALGOL等
d.2. 结构化语言:采用结构化程序设计方法,程序必须由具有良好特性的基本结构(顺序结构、分支结构、循环结构)构成,程序中的流程不允许随意跳转,程序总是由上而下顺序执行各个基本结构,程序结构清晰,易于编写、阅读和维护,如QBASIC、FORTRAN 77和C语言等
d.3. 面向对象的语言
d.3.1. 基于过程的语言在编写程序时,需要具体指定每一个过程的细节,仅适合编写规模较小的程序
d.3.2. 处理规模较大的问题时使用面向对象的语言,如C++、C#、Visual Basic和Java等,程序面对的不是过程的细节,而是由数据以及对数据进行的操作组成的对象
3. C语言的主要特点
a) 语言简洁、紧凑,使用方便、灵活。C语言一共只有37个关键字、9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分
b) 运算符丰富。C语言包含34种运算符,把括号、赋值和强制类型转换等都作为运算符处理,使运算类型极其丰富,表达式类型多样化
c) 数据类型丰富。C语言的数据类型包括整型、浮点型、字符型、数组类型、指针类型、结构体类型和共用体类型等,C99扩充了复数浮点类型、超长整型(long long)和布尔类型(bool)等
d) 具有结构化的控制语句,如if…else语句、while语句、do…while语句、switch语句和for语句等。C语言是完全模块化和结构化的语言,用函数作为程序的模块单位,便于实现程序的模块化
e) 语法限制不太严格,程序设计自由度大。如不检查数组下标越界、对变量类型的使用比较灵活、放宽语法检查等
f) C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
C语言既具有高级语言的功能,又具有低级语言的许多功能,这种双重性使C语言既是成功
的系统描述语言(编写系统软件),又是通用的程序设计语言(编写应用程序)
g) 用C语言编写的程序可移植性好
basic语言是一种h) 生成目标代码质量高,程序执行效率高
i) C语言的可移植性好、硬件控制能力高、表达和运算能力强,主要用途之一是编写“嵌入式系统程序”
4. C语言程序的结构
a) 一个程序由一个或多个源程序文件组成,源程序文件的组成:
a.1. 预处理指令
a.1.1. C编译系统在对源程序进行转换以前,先由“预处理器”(“预处理程序”、“预编译器”)对预处理指令进行预处理,如#include、#define等
a.1.2. 例:#include<stdio.h>,就是将stdio.h头文件的内容读进来,并放在#include指令行取
代#include<stdio.h>,与程序其他部分组成完整的、可编译的源程序,然后再由编译器进行正式编译
a.2. 全局声明
a.2.1. 全局声明:即在函数之外进行的数据声明
a.2.2. 全局变量:即在函数之外声明的变量
a.2.3. 在程序开头(定义函数前)声明的变量,在整个源程序文件范围内有效;在函数中声明的变量(即局部变量),只在函数范围内有效
a.3. 函数定义
每个函数用来实现一定的功能,在调用这些函数时,会完成函数定义中指定的功能
b) 函数是C程序的主要组成部分
b.1. 函数是C程序的基本单位,一个C语言程序由一个或多个函数组成,其中必须有且只能有一个main函数
b.2. 在进行编译时,以源程序文件为对象进行
c) 一个函数包括两个部分
c.1. 函数首部
c.1.1. 即函数的第1行,包括函数类型、函数名、函数属性、函数参数(形式参数)名、函数参数类型
c.1.2. 一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型,如果函数没有参数,可以在括号中写void,或直接使用空括号
c.2. 函数体
c.2.1. 即函数首部下面的花括号内的部分,一个函数中包括有多层花括号,则最外层的一对花括号是函数体的范围
c.2.2. 函数体的组成
c.2.2.1. 声明部分:对本函数所用到的变量进行定义,以及对本函数所调用的函数进行声明
c.2.2.2. 执行部分:由若干语句组成,指定在函数中所进行的操作
c.2.2.3. 存在某些情况,函数体既无声明部分,也无执行部分
d) 不论main函数在整个程序中的位置如何,程序总是从main函数开始执行
e) 程序中对计算机的操作是由函数中的C语句完成的
f) 在每个数据声明和语句的最后必须有一个分号,分号是C语句的必要组成部分,不可缺少
g) C语言本身不提供输入输出语句,输入输出的操作由库函数scanf和printf等函数来完成,C对输入输出实行“函数化”
h) 程序应当包含注释,以增加程序的可读性
5. 运行C语言的步骤与方法
a) 上机输入和编辑源程序,并将源程序以文件形式存放,文件用.c作为后缀生成源程序文件
b) 对源程序进行编译,编译系统对源程序进行编译时,自动包括预编译和正式编译两个阶段
b.1. 预编译(详见4.a.1.)
b.2. 正式编译:首先对预编译得到的源程序进行检查,判定有无语法方面的错误,随后自动把源程序转换为二进制形式的目标程序(后缀为.obj),此时源文件依然存在没有消失
c) 进行连接处理
c.1. 编译是以源程序文件为对象的,一次编译只能得到与一个源程序文件对应的目标文件(目标模块),而一个程序可能包含多个源程序文件,因而编译得到的二进制文件还不能供计算机直接执行
c.2. 必须通过连接编辑程序(linkage editor)把所有编译得到的目标模块连接装配起来,再与函数库相连形成一个整体,最终生成一个可供计算机执行的目标程序-可执行程序(executive program),后缀为.exe
c.3. 即使程序只包含一个源程序文件,编译以后也要经过连接处理,与函数库相连以后才能生成可执行程序
d) 运行可执行程序,得到运行结果
运行结果不正确:语法方面的错误一般在编译阶段已经过检查,因而可能是程序逻辑方面的错误(计算公式不正确、赋值不正确等)
6. 程序设计
a) 程序设计是指从确定任务到得到结果、写出文档的全过程
b) 程序设计的步骤
b.1. 问题分析。研究所给定的条件、分析应达到的目标、到解决问题的规律、选择解题的方法,可以忽略一些次要因素使问题抽象化,即建立模型
b.2. 设计算法。设计出解题的方法和具体步骤,一般用流程图表示解题的步骤
b.3. 编写程序。根据得到的算法用一种高级语言编写出源程序
b.4. 对源程序进行编辑、编译和连接,得到可执行程序
b.5. 运行可执行程序,分析结果
b.5.1. 对程序进行调试(debug):调试的过程就是通过上机发现和排除程序中故障的过程
b.5.2. 对程序进行测试(test):测试就是设计多组测试数据,检查程序对不同数据的运行情况,从中尽量发现程序中存在的漏洞并修改程序,使之能够适用于各种情况
b.6. 编写程序文档。软件是计算机程序和程序文档的总称,程序文档是软件的一个重要组成部分,正式提供给用户使用的程序,必须向用户提供程序说明书(用户文档),内容应包括:程序名称、程序功能、运行环境、程序的装入和启动、需要输入的数据以及使用的注意事项等,有的程序文档是在程序中以帮助(help)或readme形式提供。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论