上次作业中的问题 思路不清,尤其是迭代法 两种理解 1.计算完这一次,还要为下一次准备数据。 2.每次都要完成的工作,除了按照迭代公式(方 法)处理数据以外,还有其它的步骤。 对于多重穷举,要一层一层地来,别忘 了在循环体中加上必要的{}
1 上次作业中的问题 ▪ 思路不清,尤其是迭代法 ▪ 两种理解: 1. 计算完这一次,还要为下一次准备数据。 2. 每次都要完成的工作,除了按照迭代公式(方 法)处理数据以外,还有其它的步骤。 ▪ 对于多重穷举,要一层一层地来,别忘 了在循环体中加上必要的{}
第5部分 多函数程序设计
第5部分 多函数程序设计
先看一个大型实例 程序的结构: 编译预处理命令 其它必要的定义 其它函数声明 主函数 其它函数定义 结论: C程序是由很多个函数组成的。 C语言中关于函数有三个主要内容: 函数定义 函数调用 函数声明
3 先看一个大型实例 ▪ 程序的结构: ▪ 编译预处理命令 ▪ 其它必要的定义 ▪ 其它函数声明 ▪ 主函数 ▪ 其它函数定义 ▪ 结论: ▪ C程序是由很多个函数组成的。 ▪ C语言中关于函数有三个主要内容: ▪ 函数定义 ▪ 函数调用 ▪ 函数声明
为什么定义函数? 大型任务总要由多人完成,因此,在编 程之前,一定要将任务划分成多个功能 独立的模块,再分别分配给多个程序分 别编程实现。 n函数可以复用,以节省开发时间。每个 函数,就象一块雕刻好的积木,可以直 接用来构建新的程序
4 为什么定义函数? ▪ 大型任务总要由多人完成,因此,在编 程之前,一定要将任务划分成多个功能 独立的模块,再分别分配给多个程序分 别编程实现。 ▪ 函数可以复用,以节省开发时间。每个 函数,就象一块雕刻好的积木,可以直 接用来构建新的程序
模块化的几个原则 模块分解的原则 保证模块的相对独立性 高聚合:一个模块只能完成单一的功能,代码 般几十行。 ■低耦合:指模块之间参数传递尽量少,尽量不 通过全局变量来实现数据传递 信息隐藏 把所有用户不需要关心的细节隐藏至模块内部
5 模块化的几个原则 ▪ 模块分解的原则 ▪ 保证模块的相对独立性 ▪ 高聚合:一个模块只能完成单一的功能,代码 一般几十行。 ▪ 低耦合:指模块之间参数传递尽量少,尽量不 通过全局变量来实现数据传递 ▪ 信息隐藏 ▪ 把所有用户不需要关心的细节隐藏至模块内部
我们怎么做? 关键是如何"分段"。 比较独立的、完整的功能分为一个函数, 般函数十几行 函数定义时注意与被调函数之间的沟通与 联系,即参数传递与返回两个方向的数据 流动。 在讲例题的时候请注意这两点
6 我们怎么做? ▪ 关键是如何"分段" 。 ▪ 比较独立的、完整的功能分为一个函数, 一般函数十几行。 ▪ 函数定义时注意与被调函数之间的沟通与 联系,即参数传递与返回两个方向的数据 流动。 ▪ 在讲例题的时候请注意这两点
例1:定义一个函数,求梯形面积 先完成一个数学函数的定义: s(a, b, h=(a+b*h/2 自变量 函数名 函数公式 n编写函数必须考虑的三个内容: 先来考虑这个任务需要什么必要的数据,都是什 么类型?(形式参数) 有没有结果,结果又是什么类型?(返回值) 应该完成什么功能?如何实现?(函数功能)
7 例1:定义一个函数,求梯形面积 ▪ 先完成一个数学函数的定义: s(a,b,h)=(a+b)*h/2 ▪ 自变量 ▪ 函数名 ▪ 函数公式 ▪ 编写函数必须考虑的三个内容: ▪ 先来考虑这个任务需要什么必要的数据,都是什 么类型?(形式参数) ▪ 有没有结果,结果又是什么类型?(返回值) ▪ 应该完成什么功能?如何实现?(函数功能)
分析结果 函数功能:求梯形面积 函数形式参数: floq↑a表示上底 float b表示下底 float h表示高 函数返回值:梯形面积(flot类型)
8 分析结果 /*函数功能:求梯形面积 函数形式参数: float a表示上底 float b表示下底 float h表示高 函数返回值:梯形面积(float类型) */
涉及的语法 函数定义格式「养成注释的 好习惯: /函数功能:实现××××功能 函数形式参数:参数1,表示×X×× 参数2,表示×××× 函数返回值:×××× 返回值类型函数名(形式参数列表) 函数体
9 涉及的语法 -函数定义格式 /*函数功能:实现××××功能 函数形式参数:参数1,表示××××× 参数2,表示××××× ... 函数返回值: ××××× */ 返回值类型 函数名(形式参数列表) { 函数体 } 养成注释的 好习惯:
函数定义 函数功能:函数名称 返回值类型 at af 旧,<示高 个形式参数下示下 函数返回值:梯形面积 float Area float a, float b, float h) int s=(a+b*/2 」返回语句 return s 函数体 函数定义相当于建立一个 s(a,bh)=(a+b)h2这样一个函数的形式化 表示,此时没有具体的数值,只有代入数值 才能计算出数值
10 函数定义 /*函数功能:求梯形面积 函数参数: float a表示上底,float b表示下 底, float h表示高 函数返回值:梯形面积*/ float Area(float a,float b, float h) { int s = (a+b)*h/2 ; return s; } 返回值类型 三个形式参数 函数名称 返回语句 函数体 函数定义相当于建立一个 s(a,b,h)=(a+b)*h/2这样一个函数的形式化 表示,此时没有具体的数值,只有代入数值 才能计算出数值