程序设计专题一 结构化程序设计与递归函数 主讲教师:刘新国
主讲教师: 刘新国
专题要点 ◇用结构化程序设计的思想解决问题 ◇将多个函数组织起来,将多个源程序文件组 织起来 ◇理解程序设计规范及其重要性 ◇函数嵌套求解复杂的问题 ◇理解和使用函数递归 ◇类型定义与宏定义 ◇编译预处理
用结构化程序设计的思想解决问题 将多个函数组织起来,将多个源程序文件组 织起来 理解程序设计规范及其重要性 函数嵌套求解复杂的问题 理解和使用函数递归 类型定义与宏定义 编译预处理
程序结构 maino 函数1函数2 函数m 函数函数 函数 函数 12
main( ) 函数1 函数2 … … 函数m 函数 1_1 函数 1_2 函数 m_1 函数 m_n … …
函数定义 ◇好的函数名字:描述函数所做的所有事情。如: ◆ checkUrderinto e ca l mOnth l y Revenues(.) ◇一个函数只实现一个功能 ◇函数参数: ◇按照输入-修改-输出的顺序排列参数 ◎考虑对参数采用某种表示输入、修改、输出的命名规则 使用所有的参数 把状态或出错变量放在最后 ◇不要把函数的参数用作工作变量 在接口中对参数的假定加以说明 尽可能少的参数(限制在大约7个以内)
好的函数名字:描述函数所做的所有事情。如: checkOrderInfo(...) calcMonthlyRevenues(...) 一个函数只实现一个功能 函数参数: 按照输入-修改-输出的顺序排列参数 考虑对参数采用某种表示输入、修改、输出的命名规则 使用所有的参数 把状态或出错变量放在最后 不要把函数的参数用作工作变量 在接口中对参数的假定加以说明 尽可能少的参数(限制在大约7个以内) 4
2.源程序文件组织 ◇,C文件:实现文件 函数实现 全局变量定义 ◇.h文件:自定义的头文件 ◇类型定义,函数说明 ◇一个程序通常包含多个.c和,h文件 几个到几千个 ◆系统越大越复杂,文件越多
.c文件:实现文件 函数实现 全局变量定义 .h文件:自定义的头文件 类型定义,函数说明 一个程序通常包含多个.c和.h文件 几个到几千个 系统越大越复杂,文件越多 5
头文件(h文件) 为了方便模块函数被其他模抉调用,编写头文件,保存: 宏定义 常量定义 ◇数据类型定义 外部变量声明 函数声明(函数原型要求) ◇正确使用头文件可提高代码的可读性、可维护性、以及 开发效率 ◇在.C文件中通过命令包含.h头文件。例如: #include stdio. h #inc lude " mydata. h ◇包含自定义的头文件时,一般用
为了方便模块函数被其他模块调用,编写头文件,保存: 宏定义 常量定义 数据类型定义 外部变量声明 函数声明(函数原型要求) 正确使用头文件可提高代码的可读性、可维护性、以及 开发效率 在.c文件中通过命令包含.h头文件。例如: #include #include "mydata.h" 包含自定义的头文件时,一般用" " 6
文件模块(.C文件) ◇编译单元 ◇在编译一个.C文件时,预处理器首先递归包含 头文件,形成一个含有所有必要信息的单个源 文件。 每个.c文件都对应一个编译单元,生成一个目 标文件 ◇连接程序 把各个目标程序中产生的符号联系起来,构成 个可执行程序
编译单元 在编译一个.c文件时,预处理器首先递归包含 头文件,形成一个含有所有必要信息的单个源 文件。 每个.c文件都对应一个编译单元,生成一个目 标文件 连接程序 把各个目标程序中产生的符号联系起来,构成 一个可执行程序。 7
模央编峄链接 编译 progl.C :/ al.h,., b1. h pI 编译 可执行 h.. c2. h prog 链接 文件 编译 progM.c a h, b. h.c. h prom.o w量
8 prog1.c a1.h, …, b1.h prog2.c a2.h, …, c2.h progM.c a.h, b.h, c.h …… prog1.o 编译 prog2.o 编译 progM.o …… 编译 链接 可执行 文件
头文件编写 ◇头文件由三部分内容组成 ◇版权声明和版本信息(起始处) 预处理块 ◇定义和申明 ◇结构和枚举类型定义 ◇ typedef定义和宏定义 ◇具名常量定义 ◇外部变量声明 ◇函数申明 ◇头文件应该只用于声明,不应该包含 “占据存储空间的变量或函数”的定义
头文件由三部分内容组成: 版权声明和版本信息(起始处) 预处理块 定义和申明 结构和枚举类型定义 typedef定义和宏定义 具名常量定义 外部变量声明 函数申明 头文件应该只用于声明,不应该包含 “占据存储空间的变量或函数”的定义 9
包合(# include)头文件 ◇头文件可以嵌套包含 A.h包含B.h,B.h包含C.h,。。。 ◇避免循环包含(为什么),避免头文件被 多重复包含 ◇虽然函数、变量的声明都可以重复,不会影响 桯序编译和运行,但会增加编译处理的时间 当头文件中包含结构的定义、枚举定义等一些 定义时,这些定义是不可以重复的,必须通过 一定措施防止发生
头文件可以嵌套包含 A.h包含B.h,B.h包含C.h,。。。 避免循环包含(为什么),避免头文件被 多重复包含 虽然函数、变量的声明都可以重复,不会影响 程序编译和运行,但会增加编译处理的时间 当头文件中包含结构的定义、枚举定义等一些 定义时,这些定义是不可以重复的,必须通过 一定措施防止发生 10