模块化程序设计与语言函数.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《模块化程序设计与语言函数.ppt》由会员分享,可在线阅读,更多相关《模块化程序设计与语言函数.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、模块化程序设计与语言函数2023/4/4现在学习的是第1页,共66页u6.1.1 模块化程序设计模块化程序设计1.模块化程序模块化程序设计设计基本思想基本思想基本思想:基本思想:将程序按功能将程序按功能分割分割成小模块。成小模块。开发方法开发方法:FTTB,逐步分解逐步分解,分而治之分而治之。特点和作用:特点和作用:模块独立模块独立,功能单一功能单一,结构清晰结构清晰,接口简单。接口简单。控制了程序设计的复杂性。控制了程序设计的复杂性。提高模块元件的可靠性。提高模块元件的可靠性。缩短开发周期。缩短开发周期。避免程序开发的重复劳动。避免程序开发的重复劳动。易于维护和功能扩充。易于维护和功能扩充。
2、FBTT方法与方法与FTTB方法方法6.1 模块化程序设计基础模块化程序设计基础What to do?How to do?2023/4/4现在学习的是第2页,共66页模块化程序设计的方法基础。模块化程序设计的方法基础。特点:特点:把复杂问题的求解过程分步骤进行。把复杂问题的求解过程分步骤进行。面向目标面向目标。采取。采取先全局先全局、后局部后局部的的逐步分逐步分解解思想。思想。有利于将更多精力集中于较小模块的局部有利于将更多精力集中于较小模块的局部设计中。设计中。避免了盲目性。降低了系统设计与实现的避免了盲目性。降低了系统设计与实现的整体工作量。整体工作量。FTTB(From Top To B
3、ottom)2023/4/4现在学习的是第3页,共66页实践中:实践中:FBTT与与FTTB结合结合来解决问题。在来解决问题。在问问题求解步骤题求解步骤和和方法方法的确定上用的确定上用FTTB方法,在方法,在将所有模块将所有模块构成一个整体时构成一个整体时用用FBTT方法。方法。FBTT(From Bottom To Top)例例6-1 以以FTTB、逐步求精的模块化分解思想,分、逐步求精的模块化分解思想,分析析1948年下半年解放战争战略决战问题。年下半年解放战争战略决战问题。P125-1262023/4/4现在学习的是第4页,共66页例例6-2 求求1+2+100的和。的和。分析:分析:问
4、题可分为三个部分,对应三个模块:问题可分为三个部分,对应三个模块:1)确定求值范围确定求值范围2)计算过程计算过程3)输出结果输出结果给定求和的上界给定求和的上界计算计算i从从1到给定上界的和到给定上界的和输出所求的和值输出所求的和值用选定方法求和用选定方法求和2023/4/4现在学习的是第5页,共66页 例例6-3 分析九九乘法表输出功能。分析九九乘法表输出功能。1.1.分析九九表的形状分析九九表的形状分析九九表的形状分析九九表的形状(例如第一种例如第一种例如第一种例如第一种)。2.2.打印九行,每行分成两个部分:前导空格和九九表打印九行,每行分成两个部分:前导空格和九九表打印九行,每行分成
5、两个部分:前导空格和九九表打印九行,每行分成两个部分:前导空格和九九表的口诀内容。的口诀内容。的口诀内容。的口诀内容。右上角九九表右上角九九表输出九行输出九行输出某行输出某行i口诀构成:口诀构成:3*3 9 (即即i*j=i*j)输出第输出第i行行前导空格前导空格输出第输出第i行行口诀口诀输出第输出第输出第输出第i i行的行的行的行的i-1i-1个前个前个前个前导空格口诀导空格口诀导空格口诀导空格口诀输出第输出第输出第输出第i i行第行第行第行第k k个前导个前导个前导个前导空格口诀空格口诀空格口诀空格口诀输出第输出第输出第输出第i i行行行行9-i+19-i+1个口诀个口诀个口诀个口诀输出第
6、输出第输出第输出第i i行第行第行第行第k k个口诀个口诀个口诀个口诀空格口诀与口诀空格口诀与口诀字符结构相同字符结构相同2023/4/4现在学习的是第6页,共66页2.模块化模块化程序程序的基本特征的基本特征模块的模块的IPO结构:结构:要注意模块功能的独立性、要注意模块功能的独立性、完成功能所需的参数和提供给外界的输出信完成功能所需的参数和提供给外界的输出信息。息。模块的接口问题:模块的接口问题:唯一的通信渠道。应保证唯一的通信渠道。应保证接口的接口的单入口单入口和和单出口单出口特征。特征。模块的功能问题:模块的功能问题:大小要合适大小要合适;具有较强的;具有较强的独立性独立性和相对简单性
7、;内部实现方法也应按照和相对简单性;内部实现方法也应按照结构化程序设计思想进行组织和设计。结构化程序设计思想进行组织和设计。2023/4/4现在学习的是第7页,共66页u6.1.2 C语言对模块化程序设计技术的支持语言对模块化程序设计技术的支持1.函数式程序语言结构函数式程序语言结构函数函数带入函带入函数参数数参数带出计带出计算结果算结果图图6-6 C语言函数的基本结构语言函数的基本结构2023/4/4现在学习的是第8页,共66页float average(float fA,float fB,float fC)float fAve;fAve=(fA+fB+fC)/3;return fAve;/
8、*End of average()*/外部向内部外部向内部传递信息传递信息内部控内部控制信息制信息由内部由内部由内部由内部向外传向外传向外传向外传递信息递信息递信息递信息1.允许进行模块内部及外部的信息交换允许进行模块内部及外部的信息交换3.具有编译预能力以方便模块化调试和移植具有编译预能力以方便模块化调试和移植2023/4/4现在学习的是第9页,共66页u6.2.1 C 语言程序的组织结构语言程序的组织结构6.2 函数的声明、定义和调用结构函数的声明、定义和调用结构源程序源程序n函数函数1函数函数2函数函数m源程序源程序i源程序源程序1C程序程序声明区声明区执行体执行体2023/4/4现在学
9、习的是第10页,共66页u6.2.2 函数声明与定义函数声明与定义从用户角度分为:从用户角度分为:标准函数标准函数(库函数库函数):由系统提供。:由系统提供。用户用户自定义函数自定义函数:由程序员提供。:由程序员提供。从函数形式上分为:从函数形式上分为:无参函数无参函数有参函数有参函数使用使用库函数库函数应应注意:注意:1)函数完成的功能函数完成的功能 2)参数数目和顺序参数数目和顺序及各参数意义和及各参数意义和类型类型 3)返回值返回值的意义和类型的意义和类型4)调用函数所需的包含文件调用函数所需的包含文件(头文件头文件)先声明、后定先声明、后定义、再引用义、再引用2023/4/4现在学习的
10、是第11页,共66页1.函数的声明函数的声明(Function Declaration)声明的作用:声明的作用:告诉编译器告诉编译器函数类型、参数个数函数类型、参数个数及类型,以便进行类型检验,保证调用的数及类型,以便进行类型检验,保证调用的数据传递的正确性。据传递的正确性。对被调用函数的要求:对被调用函数的要求:函数已经被定义,即函数已经被定义,即函数存在函数存在对库函数,知道库的头文件对库函数,知道库的头文件.h对自定义函数,有对自定义函数,有函数类型声明函数类型声明函数声明函数声明(函数原型声明函数原型声明)的的一般形式:一般形式:函数类型函数类型 函数名函数名(形参类型形参类型1 形参
11、名形参名1,形参类型形参类型n 形参名形参名n);或或 函数类型函数类型 函数名函数名();P129:函数的声明函数的声明函数的声明函数的声明形参数据类型形参数据类型和顺序很重要和顺序很重要必须要必须要用分用分用分用分号号号号结束结束2023/4/4现在学习的是第12页,共66页函数定义函数定义与与函数声明函数声明不同不同函数声明的位置函数声明的位置(P133)下列情况,可不作函数声明:下列情况,可不作函数声明:u对对char或或int型函数型函数(隐含声明隐含声明)u函数的定义出现在主调函数之前函数的定义出现在主调函数之前有些系统要求函数声明指出函数返值和形参类有些系统要求函数声明指出函数返
12、值和形参类型,即使对型,即使对void和和int型函数也要进行函数说明型函数也要进行函数说明(如如Borland C+)P130-1332023/4/4现在学习的是第13页,共66页一个完整形式的函数声明一个完整形式的函数声明/*exam0604a.c:完整形式的函数声明完整形式的函数声明*/#include int main(void)float fA=1,fB=2,fC=3;float sum(float fA,float fB,float fC);/*声明声明*/printf(sum=%fn,sum(fA,fB,fC);/*调用调用*/return 0;/*End of main()*/
13、float sum(float fA,float fB,float fC)/*定义定义*/return(fA+fB+fC);/*End of sum()*/例例6-4 函数声明实例。函数声明实例。声明了一个声明了一个float型型函数函数sum()sum函数的定义函数的定义sum()函数有三函数有三个形式参数个形式参数观察函数的声明观察函数的声明和定义的区别和定义的区别2023/4/4现在学习的是第14页,共66页允许声明与定义的参数名字不同允许声明与定义的参数名字不同#include /*exam0604b.c*/int main(void)float x=1,y=2,z=3;float s
14、um(float x,float y,float z);float sum(float x,float y,float z);/*声明参数名声明参数名*/printf(sum=%fn,sum(x+y,y,z);printf(sum=%fn,sum(x+y,y,z);/*/*实参名实参名*/return 0;return 0;/*End of main()*/*End of main()*/float sum(float a,float b,float c)float sum(float a,float b,float c)/*/*定义体参数名定义体参数名定义体参数名定义体参数名*/return
15、(a+b+c);return(a+b+c);/*End of sum()*/2023/4/4现在学习的是第15页,共66页声明时可不给参数名,但类型要一一对应声明时可不给参数名,但类型要一一对应#include /*exam0604c.c*/int main(void)float x=1,y=2,z=3;float sum(float,float,float);/*声明声明*/printf(sum=%fn,sum(x,y,z);/*实参实参*/return 0;/*End of main()*/float sum(float a,float b,float c)return(a+b+c);/*
16、End of sum()*/2023/4/4现在学习的是第16页,共66页/*exam0604d.c*/#include int main(void)float x=1,y=2,z=3;float sum(int a,float b,float c);/*声明声明*/printf(sum=%fn,sum(x,y,z);/*调用调用*/return 0;/*End of main()*/float sum(float a,float b,float c)/*定义定义*/return(a+b+c);/*End of sum()*/类型不一致类型不一致出错信息:出错信息:Type mismatch
17、in redeclaration of sum2023/4/4现在学习的是第17页,共66页/*定义时参数名不能省略定义时参数名不能省略*/#include int main(void)float x=1,y=2,z=3;float sum(float a,float b,float c);/*声明声明*/printf(sum=%fn,sum(x,y,z);/*调用调用*/return 0;/*End of main()*/float sum(float,float,float)/*定义定义*/return(a+b+c);/*End of sum()*/定义时省略了参数名定义时省略了参数名出错
18、信息:出错信息:Argument missing name in function sumUndefined symbol a in function sumUndefined symbol b in function sum Undefined symbol c in function sum2023/4/4现在学习的是第18页,共66页2.函数定义函数定义(Function Definition)是完成模块功能实现的主要工作。它对应是完成模块功能实现的主要工作。它对应一个分程序功能,也称为一个分程序功能,也称为函数体函数体。定义一般格式:定义一般格式:合法标识符合法标识符函数类型函数类型
19、函数名函数名(类型类型1 形参形参1,类型类型n 形参形参n)声明区域声明区域 /*变量或函数等的声明变量或函数等的声明*/执行语句区域执行语句区域 /*可执行命令序列可执行命令序列*/返回命令返回命令 /*retrun*/现代风格现代风格:函数体函数体函数返回值类型。缺省函数返回值类型。缺省函数返回值类型。缺省函数返回值类型。缺省时为时为时为时为int或或void2023/4/4现在学习的是第19页,共66页例例例例 有参函数有参函数有参函数有参函数(现代风格现代风格现代风格现代风格)int max(int max(int nX,int nYint nX,int nY)int nZ;int
20、nZ;nZ=nXnY?nX:nY;nZ=nXnY?nX:nY;return(nZ);return(nZ);/*End of max()*/*End of max()*/例例例例 有参函数有参函数有参函数有参函数(现代风格现代风格现代风格现代风格)int max(int max(int nX,nYint nX,nY)int nZ;int nZ;nZ=nXnY?nX:nY;nZ=nXnY?nX:nY;return(nZ);return(nZ);/*End of max()*/*End of max()*/例例例例 空函数空函数空函数空函数dummy()dummy()/*End of dummy()
21、*/*End of dummy()*/函数体为空函数体为空例例例例 无参函数无参函数无参函数无参函数printStar()printStar()printf(printf(*n);*n);/*End of printStar()*/*End of printStar()*/或或或或printStar(printStar(voidvoid)printf(*n”);printf(*n”);/*End of printStar()*/*End of printStar()*/2023/4/4现在学习的是第20页,共66页函数类型函数类型 函数名函数名(形参名形参名1,形参名形参名n)数据类型数据类型
22、1 形参名形参名1;数据类型数据类型n 形参名形参名n;语句组语句组早期的函数定义经典方法早期的函数定义经典方法double sum(n1,n2,d1,d2)double d1,d2;int n1,n2;return(n1+n2+d1+d2);/*End of sum()*/函数类型函数类型形参名列表形参名列表声明次序声明次序和现代格和现代格式的区别式的区别参数类型参数类型2023/4/4现在学习的是第21页,共66页#include float average(float val_1,float val_2,float val_3);int main(void)float x=1,y=2,z
23、=3,q=4,t=5;float ave_1,ave_2;/*存放返回结果存放返回结果*/ave_1=average(x,y,z);printf(ave_1=%fn,ave_1);ave_2=average(x,q,t);printf(ave_2=%fn,ave_2);return 0;/*End of main()*/float average(float val_1,float val_2,float val_3)float ave;ave=(val_1+val_2+val_3)/3.0;return ave;/*End of average()*/文件包含编译预处理命令文件包含编译预处理
24、命令文件包含编译预处理命令文件包含编译预处理命令函数声明函数声明函数声明函数声明函数调用函数调用函数调用函数调用函数调用函数调用函数调用函数调用函数定义函数定义函数定义函数定义2023/4/4现在学习的是第22页,共66页3.函数的返回值函数的返回值返回语句返回语句格式:格式:return(表达式表达式);或或 return 表达式表达式;或或 return;功能:功能:使控制从被调用函数返回到调用函数,使控制从被调用函数返回到调用函数,同时把返值带给调用函数。同时把返值带给调用函数。说明:说明:一个函数可有多个一个函数可有多个一个函数可有多个一个函数可有多个returnreturn语句。语句
25、。语句。语句。若无若无若无若无returnreturn语句,遇函数的语句,遇函数的语句,遇函数的语句,遇函数的 时,自动返回调时,自动返回调时,自动返回调时,自动返回调用函数。用函数。用函数。用函数。若函数类型与若函数类型与若函数类型与若函数类型与returnreturn语句中表达式值的类型不语句中表达式值的类型不语句中表达式值的类型不语句中表达式值的类型不一致,按前者为准,自动转换一致,按前者为准,自动转换一致,按前者为准,自动转换一致,按前者为准,自动转换函数调用转函数调用转函数调用转函数调用转换。换。换。换。voidvoid型函数。型函数。型函数。型函数。例例 无返回值函数。无返回值函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块化 程序设计 语言 函数
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内