构建程序功能框架ppt培训课件

上传人:aa****6 文档编号:54548104 上传时间:2018-09-14 格式:PPT 页数:22 大小:435KB
返回 下载 相关 举报
构建程序功能框架ppt培训课件_第1页
第1页 / 共22页
构建程序功能框架ppt培训课件_第2页
第2页 / 共22页
构建程序功能框架ppt培训课件_第3页
第3页 / 共22页
构建程序功能框架ppt培训课件_第4页
第4页 / 共22页
构建程序功能框架ppt培训课件_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《构建程序功能框架ppt培训课件》由会员分享,可在线阅读,更多相关《构建程序功能框架ppt培训课件(22页珍藏版)》请在金锄头文库上搜索。

1、第五章:构建程序功能框架,主要内容,案例:构建“学生信息管理系统”的功能框架 使用函数构建功能框架 案例实施 学生练习 拓展 小结,下一步的工作,似乎只需要在第四章的switch case语句中添加相关的功能代码就可以了。虽然这么做逻辑上是可以实现程序功能的,但是这种方式有如下两个缺点: main函数代码冗长,可读性差。 后期维护困难。 解决的方案是为每一个模块设计相应的函数,通过在main函数中调用相应的函数来实现程序功能。,构建“学生信息管理系统”功能框架,函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。C语言不仅提供了丰富的库函数,还允许用户建立自己定义的函数。 自定义函数

2、,一般需要经过以下三个步骤:函数定义,函数声明,函数调用。 函数定义决定函数做什么事情; 函数声明有点类似变量的声明,告诉编译器调用的函数用什么类型的参数,返回值是什么等; 函数定义和函数声明的时候,该函数里的代码并不执行,只有在函数调用,也就是程序运行到函数调用语句的时候,它才执行。 C语言中的函数之间的关系都是平等的。函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数,被调用者称为被调函数。函数还可以自己调用自己,称为递归调用。,使用函数构建功能框架-函数及分类,从函数是否需要用户定义的角度看,函数可分为库函数和用户定义函数两种。 .从主调函数和被调函数之间数据传送的角度看又

3、可分为无参函数和有参函数两种。 C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。,使用函数构建功能框架-函数及分类,函数的定义一般形式 函数类型 函数名(形式参数表列)声明语句其他语句函数类型指明了本函数的数据类型,函数的类型实际上是函数返回值的类型。如果该函数没有返回值,则函数类型符号写成void。函数名是由用户定义的一个标识符。它的命名语法规则和变量是一样的。函数名后有一个括号,括号里面是形式参数表列,在形参表列中给出的参数称为形式参数,它们可以是各种类型的变量参数,各参数之间用逗号隔开。 形式参数表列的一般形式:形参1类型 形参

4、1,形参2类型 形参2形参n类型 形参n在进行函数调用时,主调函数将赋予这些形式参数实际的值。在无参函数中形式参数表列是可以省略的,但是它外面的括号不可省略。,使用函数构建功能框架-函数的定义,函数头部,函数体,/求两个数的最大公约数的函数定义 int gcd(int a,int b) int r;r=a%b;while(r!=0)a=b;b=r; r=a%b;return b; 第一行说明gcd函数是一个整型函数,其返回的函数值是一个整数。形参为a,b,均为整型变量。a,b的具体值是由主调函数在调用时传送过来的。在函数体内,第一句“int a”声明了整型变量r,这就是函数体的声明部分。在gc

5、d函数体中的return语句是把变量r的值作为函数的值返回给主调函数。有返回值函数中至少应有一个return语句。 在C程序中,一个函数的定义可以放在任意位置,既可放在主函数main之前,也可放在main之后。,使用函数构建功能框架-函数的定义,在主调函数调用某函数之前应对该被调函数进行声明,这与使用变量之前要先进行变量说明是一样的。在主调函数中对被调函数作说明的目的是告诉编译系统被调函数的参数列表及其返回值的数据类型,提供给编译器对函数调用语句进行检错的依据。 函数声明一般形式为:类型说明符 被调函数名(类型1 形参1,类型2 形参2); 或:类型说明符 被调函数名(类型1,类型2); 函数

6、声明在以下几种情形是是可以省略的。 如果被调函数的返回值是整型或字符型时,可以不对被调函数作声明,而直接调用。这时系统将自动对被调函数返回值按整型处理。 当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。,使用函数构建功能框架-函数的声明,int gcd(int a,int b);,int gcd(int,int);,在程序中是函数体中的代码要执行,就必须在主调函数中调用。C语言中,函数调用的一般形式为:函数名(实际参数表列) 对无参函数调用时则无实际参数表列,但是它外面的括号不能省略。实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。各实

7、参之间用逗号分隔。 函数调用的形式 函数语句形式:这种方式很简单,就是函数调用单独作为一个语句。函数表达式形式: 这种方式的函数调用出现在一个表达式的语句中,这个时候函数的返回值参与到表达式的运算中去。只有有返回值的函数才会以函数表达式这种形式调用。函数实际参数形式: 这种方式的函数调用是以另外一个函数的实参的形式存在,这个时候该函数的返回值将会传递给形式参数。只有有返回值的函数才会以这种形式调用。,使用函数构建功能框架-函数的调用,int i = 12 int j = 8; gcd(i , j);,int i = 12 int j = 8; int lcd= i*j/gcd(i,j);,in

8、t i = 12 int j = 8; printf(“%d和%d的最大公约数为%d“, i , j , gcd(i,j) );,函数调用时的实际参数的的值传递给相应的形式参数。下面对实参和形参的使用总结出以下几个注意事项: 形参出现在被调函数定义中,在整个被调函数体内都可以使用,离开该被调函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数

9、调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。 实参和形参在数量上,类型上,顺序上应严格一致,否则在函数调用的时候就会发生“类型不匹配”的错误。 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。,使用函数构建功能框架-函数的调用,使用函数构建功能框架-函数的调用,/* *关于形参和实参的例子 */ #include main() void swap(int,int);/swap函数声明int i = 10 ,j = 20 ;sw

10、ap(i , j);/swap函数的调用printf(“i = %d , j = %dn“ , i , j); /swap函数的定义 void swap(int a , int b)int tmp = a;a = b;b = tmp; 程序执行后打印出:i = 10 , j = 20,函数调用前,i=10;j=20;a,b不可用,函数返回后,a,b变量空间被释放;i=10;j=20,a=10;b=20 ; i , j不可用,a=20;b=10;i,j不可用,使用函数构建功能框架-函数的调用,使用函数构建功能框架-函数的嵌套调用,/编写函数求最小公倍数的例子 int gcd(int a,int

11、b)/*求最大公约数的函数的定义*/int r;r=a%b;while(r!=0)a=b;b=r; r=a%b;return b; int lcd(int a,int b) /*求最小公倍数的函数的定义*/ int gcd(int,int); /gcd函数的声明return a*b/gcd(a,b); /gcd函数的调用 int main()int i = 12 , j = 8, ij_lcd = lcd(i , j ); printf(“%d,%d的最小公倍数为%dn“, I , j , ij_lcd ); /lcd函数的调用return 1; ,使用函数来构建“学生管理信息系统”的程序框架

12、的源代码请参考教材,使用函数构建功能框架-案例实施,模仿本章构建程序功能框架程序,完成构建“图书信息管理系统”功能框架,具体的要求有: (1)在上一章搭建的功能菜单的基础上,为每一个功能菜单项定义一个函数。 (2)在main函数中声明各功能函数。 (3)在main函数中调用各功能函数。,练习:构建“图书信息系统”的功能框架,C语言中的函数都是平行的,也就是说都是可以相互调用的。但是,main函数是C程序中相对特殊一点的函数。它是C程序的入口,它可以调用其他函数,但是其他函数不能调用main函数,main函数只能被系统调用。 前面接触到的C语言程序都是无参数的,其实main还是也是可以带参数的。

13、对于有参的形式来说,就需要向其传递参数。但是其它任何函数均不能调用main()函数。当然也同样无法向main()函数传递,只能由程序之外传递而来。 带参的形式的main()函数:int main(int argc , char *argv).,拓展-main函数的命令行参数,从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件。一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:command str1 str2 str3 。strn 此格式也称为命令行。命令行中的command就是可执行文件的文件名,其后所跟参数需用空格分隔。 命令行与main()函数的参数存在如下的关系:对main()函数来说,它的参数argc记录了命令行中命令与参数的个数。指针数组argv的各数组元素指向分别是命令,及随后的参数。,拓展-main函数的命令行参数,/打印出命令行参数的例子 int main(int argc,char *argv) int i;for(i=1;i0)Hanoi(n-1,A,C,B);printf(“%c%c“,A,C);Hanoi(n-1,B,A,C); int main()char x = A, y = B,z = C;Hanoi(4,x,y,z);return 1; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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