第7章用函数实现模块化程序设计知识课件

上传人:yulij****0329 文档编号:138583395 上传时间:2020-07-16 格式:PPT 页数:182 大小:1.20MB
返回 下载 相关 举报
第7章用函数实现模块化程序设计知识课件_第1页
第1页 / 共182页
第7章用函数实现模块化程序设计知识课件_第2页
第2页 / 共182页
第7章用函数实现模块化程序设计知识课件_第3页
第3页 / 共182页
第7章用函数实现模块化程序设计知识课件_第4页
第4页 / 共182页
第7章用函数实现模块化程序设计知识课件_第5页
第5页 / 共182页
点击查看更多>>
资源描述

《第7章用函数实现模块化程序设计知识课件》由会员分享,可在线阅读,更多相关《第7章用函数实现模块化程序设计知识课件(182页珍藏版)》请在金锄头文库上搜索。

1、7.1 函数是什么 7.2 函数的定义和调用 7.3 函数的嵌套调用和递归调用 7.4 数组作为函数参数 7.5 变量的作用域和生存期 7.6 内部函数和外部函数 7.7 提高部分,第7章 用函数实现模块化程序设计,P168,7.1 函数是什么,如果程序的功能比较多,规模比较大,把所有的程序代码都写在一个主函数中,就会使主函数变得庞杂、头绪不清,使阅读和维护程序变得困难。,P168,有时程序中要多次实现某一功能,就需要多次重复编写实现此功能的程序代码。这使程序冗长,不精炼。,7.1 函数是什么,P168,采用“组装”的办法简化程序设计过程 事先编好一批函数实现各种不同的功能 用到什么函数就直接

2、装使用就可以 这就是模块化的程序设计,7.1 函数是什么,P168,在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包括一个或多个函数,每个函数实现一个特定的功能。,7.1 函数是什么,P168,一个程序可由一个主函数和若干个其他函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次,7.1 函数是什么,P168,7.1 函数是什么,P168,main,a,b,c,f,g,h,d,e,i,e,除了可以使用库函数外,还可以编写一些本领域或本单位常用到一些专用函数,供本领域或本单位的人员使用。、 在程序设计中要善于利用函数,可以减少各人重复

3、编写程序段的工作量,同时可以方便地实现模块化的程序设计。,7.1 函数是什么,P168,7.1 函数是什么,P168,例7.1 输出以下的结果,用函数调用实现。 * How do you do! *,7.1 函数是什么,P168,解题思路: 在输出的文字上下分别有一行“*”号,显然不必重复写这段代码,用一个函数print_star来实现输出一行“*”号的功能。 再写一个print_message函数来输出中间一行文字信息 用主函数分别调用这两个函数,#include void main() void print_star(); void print_message(); print_star(

4、); print_message(); print_star(); void print_star () printf(*n); void print_message() printf( How do you do!n);,输出18个*,输出一行文字,#include void main() void print_star(); void print_message(); print_star(); print_message(); print_star(); void print_star () printf(*n); void print_message() printf( How do

5、you do!n);,声明函数,定义函数,说明: (1) 一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对于较大的程序,一般不把所有内容全放在一个源程序文件中,而是将它们分别放在若干个源文件中,由若干个源程序文件组成一个C程序。这样便于分别编写、分别编译,提高调试效率。一个源程序文件可以为多个C程序所调用。,说明: (2) 一个源程序文件由一个或多个函数以及其他有关内容组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。,说明: (3) 不论main函数出现在什么位置,总是从main函数开始执行。如果在main函数

6、中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。,说明: (4) 所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是由系统调用的。,说明: (5) 从用户使用的角度看,函数有两种。 库函数,它是由系统提供的,用户不必自己定义而直接使用它们。应该说明,不同的C语言编译系统提供的库函数的数量和功能会有一些不同,当然许多基本的函数是共同的。 用户自己定义的函数。它是用以解决用户专门需要的函数。,说明: (6) 从函数的形式看,函数分两类。 无参函

7、数。函数没有参数,一般用来执行固定的一组操作。无参函数可以带回或不带回函数值,但一般以不带回函数值的居多。 有参函数。在调用函数时,要给出实参。主调函数在调用被调用函数时,通过参数向被调用函数传递数据,一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。,7.2 函数的定义和调用,7.2.1 为什么要定义函数 7.2.2 函数定义 7.2.3 函数的调用 7.2.4 对被调用函数的声明和函数原型,P170,C语言要求,在程序中用到的所有函数,必须“先定义,后使用” 指定函数名字、函数返回值类型、函数实现的功能以及参数的个数与类型,将这些信息通知编译系统。,7.2.1 为什么要定义函数

8、,P170,指定函数的名字,以便以后按名调用 指定函数类型,即函数返回值的类型 指定函数参数的名字和类型,以便在调用函数时向它们传递数据 指定函数的功能。这是最重要的,这是在函数体中解决的,7.2.1 为什么要定义函数,P170,如果程序中要调用库函数,只需用#include指令把有关的头文件包含到本文件模块中即可。 如果想使用库函数中没有的函数,需要程序设计者在程序中自己定义。,7.2.1 为什么要定义函数,P170,7.2.2 函数定义,1.怎样定义无参函数 函数名后面圆括号中空的,没有参数 定义无参函数的一般形式为: 类型名 函数名() 函数体 ,P171,包括声明部分和语句部分,指定函

9、数值的类型,7.2.2 函数定义,1.怎样定义无参函数 函数名后面圆括号中空的,没有参数 定义无参函数的一般形式为: 类型名 函数名() 函数体 ,P171,表示不需要带回函数值,void,7.2.2 函数定义,2. 怎样定义有参函数 定义有参函数的一般形式为: 类型标识符 函数名(形式参数表列) 函数体 ,P171,7.2.2 函数定义,2. 怎样定义有参函数 int max (int x,int y) int z; if(xy) z=x; else z=y; return(z); ,P171,函数的功能是什么?,求x和y二者中大者,7.2.3 函数的调用,1.调用无参函数的形式 函数名()

10、 如print_star() 2. 调用无参函数的形式 函数名(实参表列) 如max(a,b),P172,如果有多个参数,用逗号隔开,例7.2 输入两个整数,输出二者中的大者。要求在主函数中输入两个整数,用一个函数max求出其中的大者,并在主函数中输出此值。,解题思路: 题目要求用一个max函数实现比较两个整数,并将得到的大数带回主函数。显然,二个整数中的大者也应该是整数,因此max函数应当是int型。 两个数是在主函数中输入的,在max函数中进行比较,因此应该定义为有参函数,在函数调用时进行数据的传递。,#include int max(int x,int y) int z; if (xy)

11、 z=x; else z=y; return(z); ,参数类型,函数类型,定义函数,定义函数内使用的变量,#include void main() int max(int x,int y); int a,b,c; printf(”please input two number:”); scanf(“%d,%d”, ,调用函数,c=max(a,b); (main函数) int max(int x, int y) (max函数) int z; z=xy?x:y; return(z); ,#include void main() int max(int x,int y); int a,b,c; p

12、rintf(”please input two number:”); scanf(“%d,%d”, ,if (xy) return(x); else return(y);,#include void main() int max(int x,int y); int a,b,c; printf(”please input two number:”); scanf(“%d,%d”, ,形式参数,实际参数,函数调用的过程:,在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。在发生函数调用时,函数max的形参被临时分配内存单元。,2,a,3,b,x,y,2,3,实参,形参,函数调

13、用的过程:,2,a,3,b,x,y,2,3,实参,形参,调用结束,形参单元被释放 实参单元仍保留并维持原值,没有改变 如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值,调用函数的方式:,按函数在程序中出现的位置来分,可以有以下3种函数调用方式 . 函数语句 调用没有返回值的函数,函数调用单独作为一个语句 如例7.1中的“print_star();”,调用函数的方式:,按函数在程序中出现的位置来分,可以有以下3种函数调用方式 . 函数表达式 函数出现在一个表达式中,这种表达式称为函数表达式 如例7.2中的“c=max(a,b);”,调用函数的方式:,按函数在程序中出现的位

14、置来分,可以有以下3种函数调用方式 . 函数参数 函数调用作为一个函数的实参 如printf (%d, max (a,b);,7.2.4 对被调用函数的声明和函数原型,P175,在一个函数中调用另一个函数需要具备如下条件: (1) 被调用函数必须是已经定义的函数(是库函数或用户自己定义的函数)。 (2) 如果使用库函数,应该在本文件开头加相应的#include指令。 (3) 如果使用自己定义的函数,而该函数的位置在调用它的函数后面,应该进行函数声明,7.2.4 对被调用函数的声明和函数原型,P175,函数原型的一般形式有两种: 如 int max(int x,int y); int max(i

15、nt,int); 原型说明可以放在文件的开头,这时本文件中所有函数都可以使用此函数,7.3 函数的嵌套调用和递归调用,P177,7.3.1 函数的嵌套调用 7.3.2 函数的递归调用,7.3.1 函数的嵌套调用,调用一个函数的过程中,又可以调用另一个函数,P177,7.3.1 函数的嵌套调用,P177,main函数,调用a函数,结束,a函数,调用b函数,b函数,例7.3 输入4个整数,找出其中最大的数。用一个函数来实现。 解题思路: 定义max_4函数,找4个数中最大者 max_4中再多次调用max,找4个数中的大者,然后把它作为函数值返回main函数,#include void main()

16、 int max_4(int a,int b,int c,int d); int a,b,c,d,max; printf(“4 interger numbers:); scanf(%d%d%d%d, ,主函数,对max_4 函数声明,#include void main() int max_4(int a,int b,int c,int d); int a,b,c,d,max; printf(“4 interger numbers:); scanf(%d%d%d%d, ,主函数,输入4个整数,#include void main() int max_4(int a,int b,int c,int d);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号