资源描述:
《C语言第4章 模块化程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章模块化程序设计1.概念:模块,函数,算法2.函数的定义与说明(重点)3.函数的调用(重点,难点递归调用)4.变量的作用域(重点)5.变量的存储属性(重点,难点)6.编译预处理14.1概念一.功能模块1.功能模块:求解较小问题的算法和程序称作“功能模块”,各功能模块可以先单独设计,然后将求解所有子问题的模块组合成求解原问题的程序。一个解决大问题的程序,可以分解成多个解决小问题的模块,这就是“自顶向下”的模块化程序设计方法。22.由功能模块组成程序的结构图:主控模块模块1_1模块1_n模块2_1模块2_n模块n_1模块n_n模块1模块2模块n3二.函数函数:
2、完成相对独立功能的程序.库函数(可以直接调用)C语言函数分为自定义函数(用户需要时,自己定义)4[例4.1]输入三个数,将其按从大到小的顺序输出.输出时,如果该数大于等于85,就紧跟在该数后面输出一个字符‘A’;如果该数小于85且大于等于70,则输出字符‘B’;若该数小于70且大于等于60,输出字符‘C’;如果该数小于60,则输出字符‘D’。输入(用scanf函数)主控模块排序输出判别等级输出等级和函数56(2)判别等级可以设计一个函数完成该功能,根据不同的分数,得到等级标准,其程序如下:chargrade(x)/*根据x的值,得到等级标准*/floatx;{
3、if(x>=85)return('A');elseif(x>=70)return('B');elseif(x>=60)return('C');elsereturn('D');}7(3)输出排好了序的三个数及其相应等级的函数定义如下:voidputabc(){charg;g=grade(a);/*判别等级*/printf("%6.1f:%c",a,g);g=grade(b);printf("%6.1f:%c",b,g);g=grade(c);printf("%6.1f:%c",c,g);}8(4)在主函数中分别调用三个函数,就可完成全部任务。#include
4、tdio.h>floata,b,c;/*定义a,b,c为全程变量*/main(){scanf("%f,%f,%f",&a,&b,&c);/*输入*/sortabc();/*排序*/putabc(a,b,c);/*输出a,b,c三个数及相应等级*/}注意:在完整的程序中,(1)~(3)三个函数应放在main()函数之前。9三.模块设计原则1.模块独立。2.模块规模适当3.分解模块要注意层次10四.算法1.算法:是求解某一类特定问题的方法和步骤。2.算法的性质(1)算法是一个有限操作序列。即算法的有穷性。(2)算法的每一步都应是确定的,没有二义性。(3)算法的每一
5、步都应是计算机能进行的有效操作。(4)有一个或多个输入。(5)有一个或多个输出,表示问题的解。3.算法的描述算法描述的任务是将解题步骤和方法用一定的形式表示出来,描述算法一般可以用类计算机语句或自然语言描述具体操作,用流程图描述控制结构。11流程图标准化符号1数据2处理3特定处理4准备5选择8连接符9端点符10注解符11流线12虚线12例4.2设计算法实现:找出a,b两数中的较大者,并输出。这个问题分三个步骤:(1)输入两个数;(2)找出其中的大数;(3)输出大数;算法可用下图表示。图4.5找出a,b两数中的较大者算法流程图输入a,b交换a,b输出a结束开始a
6、/*包含math.h头文件*/#include/*包含stdio.h头文件*/main(){doublea,b;scanf(“%f“,&a);/*调用输入函数,输入变量a的值*/b=sin(a);/*调用sin函数,求sin(a)的值*/printf(“%6.4f”,b);/*调用输出函数,输出变量b的值*/}14二.用户
7、自定义函数1.函数定义(方式1)函数返回值类型名函数名(参数列表)参数类型说明{局部变量说明;/*函数体*/语句序列;}例如:intmax(a,b)inta,b;(方式2)函数返回值类型名函数名(参数类型说明及参数列表){局部变量说明;/*函数体*/语句序列;}例如:intmax(inta,intb)15例如,一个求两个数中较大数的函数定义如下:intmax(inta,intb)/*函数定义和形式参数类型说明*/{intt;/*局部变量说明*/if(a>b)t=a;/*执行语句*/elset=b;returnt;/*返回语句*/}从上面的叙述可见,C语言函数分
8、为两大部分:函数的说明部分和函数体部分