第三章模块化程序设计ppt课件.ppt

上传人:牧羊曲112 文档编号:1626406 上传时间:2022-12-11 格式:PPT 页数:24 大小:878KB
返回 下载 相关 举报
第三章模块化程序设计ppt课件.ppt_第1页
第1页 / 共24页
第三章模块化程序设计ppt课件.ppt_第2页
第2页 / 共24页
第三章模块化程序设计ppt课件.ppt_第3页
第3页 / 共24页
第三章模块化程序设计ppt课件.ppt_第4页
第4页 / 共24页
第三章模块化程序设计ppt课件.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《第三章模块化程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《第三章模块化程序设计ppt课件.ppt(24页珍藏版)》请在三一办公上搜索。

1、济南大学信息学院,C语言程序设计,第1页,第三章 模块化程序设计,3.1 模块化程序设计思想3.2 函数定义3.3 函数调用3.4 函数的原型与声明3.5 函数的嵌套与递归3.6 库函数3.7 变量的作用域与存储类型3.8 指针与函数,济南大学信息学院,C语言程序设计,第2页,#include int max(int x, int y) int z; if (xy) z=x; else z=y; return(z);void main( ) int a,b,c; scanf(%d%d, ,一个完整的函数,一个完整的函数,函数体,教材第3页例1.3,注意:程序永远从main函数开始。max(a,

2、b)是什么?自定义函数max(),济南大学信息学院,C语言程序设计,第3页,结构化程序设计的特点:自顶向下、逐步细化、模块化C语言程序的基本单位是函数有且至少有一个函数main( ),函数模块化程序设计的体现,济南大学信息学院,C语言程序设计,第4页,3.1 模块化程序设计的思想,什么是模块化程序设计?模块化程序设计就是将一个复杂的大问题,分解为一个个独立的简单的小问题(即模块),分别解决简单的小问题,进而解决复杂的大问题。在C语言中,这些独立的简单的模块就是函数。,功能分解是一个自顶向下、逐步求精的过程。,必须有且只能有一个名为main的主函数C程序的执行总是从main函数开始,在main中

3、结束函数不能嵌套定义,可以嵌套调用(即使用)。,济南大学信息学院,C语言程序设计,第5页,阶乘模块fac(n)的实现: f = 1;for ( i=1; i= n ; i+)f = f * i;,例3-1:计算,m,k,只需实现模块fac()即可,济南大学信息学院,C语言程序设计,第6页,#include /普通设计void main()int i, k, m, n;float x, y, z;scanf(%d%d%d, ,x = fac(k);y = fac(m);z = fac(n);,float fac(int n)int i;float f = 1;for (i=1; i=n; i+)

4、f = f * i;return f;,模块即函数,济南大学信息学院,C语言程序设计,第7页,3.2 函数定义,在C语言中,函数分为以下两种:(1) 库函数是由系统提供的,用户不用定义,只需用#include包含其头文件,即可直接使用。如:printf( )、scanf( )、sqrt( )等。(2) 自定义函数:这种函数是根据具体需求按自己的意愿编写的,以完成相应的功能。,本章学习的内容,济南大学信息学院,C语言程序设计,第8页,void main( )int k, m, n;float x, y, z;scanf(%d%d%d, ,函数定义格式: 函数返回值类型 函数名(形参表) 函数体;

5、 ,#include float fac(int n)int i;float f = 1;for (i=1; i=n; i+)f = f * i;return f;,函数调用格式: 函数名(实参表);,例如:float fac(int n) ,济南大学信息学院,C语言程序设计,第9页,函数名:命名规则同变量相同;同一个文件中函数名不能重复!参数(形参)列表:需说明参数的个数和类型,多个参数间用逗号间隔,也可以无参数,但括号不能省。,函数定义的说明,书写格式 : 每一个形参都要写上数据类型和参数名;参数之间以逗号分隔,无参数时函数值返回值一般写上 void 或什么也不写 。函数名后的括号一定要有

6、。,float average(float a1, float a2, float a3) ,形参不能写成:float a1, a2, a3 ,济南大学信息学院,C语言程序设计,第10页,函数定义的说明,函数体:由左右花括号括起来的部分。包括说明部分和语句部分,是实现函数的核心部分说明部分:定义函数内除形参以外的其它变量等;语句部分:实现函数功能的执行语句;,函数返回值类型 函数名(形参表) 变量说明部分; 语句部分;,返回值类型:当函数有返回值时,在函数名前指定函数返回值的类型 若省略类型标识符,默认为int 若函数无返回值,函数定义时应写上 void,济南大学信息学院,C语言程序设计,第1

7、1页,语言不允许在一个函数内定义另一个函数,即不能嵌套定义。所有函数在书写时都是平行的,通常写在main上方。,应为平行关系:float area( float a,float b ) main() ,注意,济南大学信息学院,C语言程序设计,第12页,void main( )int k, m, n;float x, y, z;scanf(%d%d%d, ,#include float fac(int n)int i;float f = 1;for (i=1; i=n; i+)f = f * i;return f;,主函数,函数调用,函数定义,通常写在main函数上方,济南大学信息学院,C语言程

8、序设计,第13页,例:,、编写一个函数,打印一行信息“How do you do!”,printf(How do you do!n);,_ print( _ ),void,void main( ),print( );,#include ,经验1:数据已知或固定则不需要作为参数传递;值事先不确定则需要参数传递!,经验2:不要求计算结果或没有计算出一个数值则不需要返回值。,EG302.C,济南大学信息学院,C语言程序设计,第14页,3.3 函数调用(函数使用),3.3.1 函数调用的形式,1、形式:,函数名(实参表列);,2、说明、实参表列由0到多个实参名组成,实参之间用逗号分隔、实参与形参的个数

9、应相等,类型应一致,顺序要一一对应、调用无参函数的格式为:函数名( );,#include int max( int x, int y ) int z; if (xy) z=x; else z=y; return(z);void main( ) int a,b,c; scanf(%d%d, ,函数调用,形参,实参,济南大学信息学院,C语言程序设计,第15页,3、函数调用的方式,、函数调用语句: 无返回值函数的调用由函数调用加上分号构成,在主调函数中可作为一个独立的语句;此时不要求函数带回返回值,、函数表达式:函数调用作为一个运算对象出现在表达式中,此时要求函数带回一个确定的值以参加表达式的运算

10、,c=max(a, b);,y=2*pow(x,2.5);,、函数参数:函数调用作为另一个函数的实参,其值作为一个实际参数传给被调函数的形参;此时也要求函数带回一个确定值,m=max(a, max(b, c);,printf(%dn, max(a, b);,济南大学信息学院,C语言程序设计,第16页,3.3.2 函数间的参数传递,把需要参数的函数称为“有参函数”,不需要参数的函数称为“无参函数”。形式参数:定义函数时函数名后面括号内的变量,简称形参实际参数:调用函数时函数名后面括号内的变量,简称实参,#include int max(int x, int y) return(xy?x:y);,

11、void main( ) int a, b, c; scanf(%d%d, ,形参,实参,济南大学信息学院,C语言程序设计,第17页,函数调用的说明,运行期间,只有当函数被调用时,形式参数才被分配存储空间;调用结束后,形参所占的空间将被释放;实参与形参一一对应。可以是常量,变量或表达式;实参和形参的类型应相同或赋值相容;实参对形参的数据传递是“值传递”,即单向传递;即函数内形参的值无法传给实参。,济南大学信息学院,C语言程序设计,第18页,定义函数时需要解决的问题:有没有参数?即:需要从主调函数中传递数据吗?参数的个数:参数的类型:int、float、double、char或指针是否有返回值?

12、即:是否向主调函数返回计算结果?返回值的类型:void?其它int、float?,济南大学信息学院,C语言程序设计,第19页,例:输入圆的半径r,用自定义函数area实现圆的面积,并在主函数中输出最终的结果。也可以这样思考:,float area(int m),main() int r; float a; scanf(“%d”, ,float s; s=3.14*m*m; return s;,a=area(r);,济南大学信息学院,C语言程序设计,第20页,编写函数的技巧:,主函数的内容:主要就是函数调用。,void main( ),自定义函数的内容:主要就是程序功能的完成,,然后返回值。,函

13、数返回值类型 函数名 (形参) 除形参外的其它变量定义; 执行语句; 函数返回语句;,变量定义输入实参处理-函数调用输出结果,济南大学信息学院,C语言程序设计,第21页,编写函数,计算下式前n项的和。注意,n在主函数中输入,计算结果在主函数中输出。例如,当n=10时,结果为0.909091。,注意:函数的命名、参数个数及每个参数的类型、返回值的类型?如何将主函数中的数据传到被调函数中?如何累加得到S?,#include double fun(int n)void main( ) int n; printf(Input n:); scanf(%d,int i;double s=0;for (i=

14、1; i=n; i+) s+=1.0/(i*(i+1);return(s);,济南大学信息学院,C语言程序设计,第22页,例3.2 输入两个整数,计算其平均值。要求用函数实现平均值的计算。,average函数:有没有参数:有参数的个数:2参数的数据类型:int是否有返回值:有返回值的类型:float 或 double,float average(int x,int y) float result; result=(x+y)/2.0; return(result);,void main( ) int a,b; float ave; scanf(%d%d,主函数:函数调用average函数:实现平

15、均值的计算。,济南大学信息学院,C语言程序设计,第23页,3.3.3 函数的返回值,int max(int x, int y) int z; z=xy?x:y; return(z);,1、函数的返回值是通过return语句获得的。return语句的作用是终止当前函数的执行并将一个确定值带回主调函数中,return语句的一般形式是:,return(表达式);,或:return 表达式;,2、函数返回值的类型:在定义函数时指定,int max(int x, int y),double power(int x, int y),语言规定,凡不指定类型的函数,自动按整型(int)处理。,max(int

16、x, int y),int max(int x, int y),济南大学信息学院,C语言程序设计,第24页,函数值的类型与return语句中表达式的类型应一致;若不一致,则以函数类型为准(自动转换)。,int max(double x, double y) return(xy?x:y);,3、一个函数可以有多个return语句,但每个return后的表达式类型要相同;当执行到其中任何一个return语句时会立即返回主调函数,4、对于有返回值的函数,若return语句后面没有表达式,或没有return语句,此时带回一个不确定的返回值。,return;,5、为了明确表示“不带回值”,可以用void定义“无类型”(或称“空类型”,即无返回值)。,void main( ) ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号