欢迎来到天天文库
浏览记录
ID:39621625
大小:239.50 KB
页数:51页
时间:2019-07-07
《函数—模块化程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、高级语言程序设计第5章函数—模块化程序设计福建工程学院鲍春波学习目标模块化程序设计的思想,自顶向下的实现方法,系统函数库的使用方法,自定义函数的方法,参数传递方式,函数调用过程,接口与实现的分离,开发大规模程序引言如何对比较复杂、庞大的问题进行程序设计?例如:绘制一个动物图案头—正方型躯干—菱形下肢—矩型建立一个学生信息管理系统界面建立信息维护信息查询信息解决比较大的问题要成千上万行代码怎么实现呢?每个软件只有一个main(),main()当中能放多少行程序?读多少行的程序能让你不头疼?如果所有代码都在main()当中,怎么团
2、队合作?如果代码都在一个文件中,怎么团队合作?模块化程序设计思想复杂问题分解成若干子问题—模块,逐个解决每个子问题模块各司其职每个模块只负责一件事情,它可以更专心一个模块一个模块地完成,最后再将它们集成便于开发、调试、测试和维护等工作开发人员各司其职按模块分配任务,职责明确并行开发,缩短开发时间分而治之(Wirth,1971)信息隐藏(Parnas,1972)C语言用函数表示模块分而治之函数把较大的任务分解成若干个较小的任务,并提炼出公用任务代码复用程序员可以在其他函数的基础上构造程序,而不需要从头做起信息隐藏(黑盒子)设计
3、得当的函数可以把具体操作细节对程序中不需要知道它们的那些部分隐藏掉,从而使整个程序结构清楚如把编程比做制造一台机器,函数就好比其零部件可将这些“零部件”单独设计、调试、测试好,用时拿出来装配,再总体调试。这些“零部件”可以是自己设计制造/别人设计制造/现在的标准产品函数的定义形式返回值类型函数名(参数列表){函数体变量声明部分语句部分}函数可以没有返回值,也可以没有参数,均用void表示如:voidfuncname(void)参数列表的形式:参数类型参数名称1,参数类型参数名称2,…如:intmaxium(inta,intb,
4、intc)具有三个参数,返回类型为int的函数或voidprint(inta,intb)如大家熟悉的intmain(void){printf(。。。);}实际上printf,scanf也是这样定义的我们可以根据需要定义各种自己的函数。函数调用●已经定义的函数要在某个地方使用才有意义,使用一个函数称为函数调用。●可以在main()中调用其它函数●在任意一个函数中均可以调用其它函数。●调用的形式:函数名(实际参数)----有参数时或函数名()------无参数时问题1绘制一个动物图案。定义无参数、无返回类型的函数如打印矩型的函数v
5、oidRectangle(void){。。。}使用已经定义的函数—测试voidRectangle(void)//这种函数叫做stub树桩或存根{printf(“rectangleok”);//仅供测试}voiddiamond(void){printf(“diamondok”);}intmain(void){rectangle();//函数调用diamond();rectangle();return0;}被调用的函数必须先定义,即各个函数的定义现在一定要放在主函数之前(等会我们会有另外的方法)问题2学生信息系统同样每个功
6、能模块用一个函数表示voidcreate(void){…}voiddisplay(void){…}voidmodify(void){…}voidquery(void){…}voiddelete(void){…}…写一个main测试它们问题3:设计一个能求某个自然数以内的自然数之和的函数模块—有参数和返回值的函数分析:首先取名sum确定是否有返回值?如果有,是什么类型?确定是否有参数?几个?什么类型?函数定义intsum(intn){ints=0;for(inti=1;i<=n;i++)….s=s+i;returns;}此函数有
7、一个整型参数,有一个整型的返回值在函数定义中的参数称为形参,只是一个形式定义,这个参数的具体值由调用者通过实参给定,实参可以是一个与形参类型一致的表达式。测试sum函数–驱动程序#includeintsum(intn){…}intmain(void){intm,s;scanf(“%d”,&m);//准备一个实参ms=sum(m);//调用sumprintf(“%d”,s);//输出结果//或者直接printf(“%d”,sum(m));return0;}函数调用的注意事项1有返回值时调用结果可以放到一
8、个数值表达式中,如s=sum(m);也可以作为另一个函数调用的参数,如printf("%d",sum(m));无返回值时函数调用只能独立使用rectangle();函数调用的注意事项2实参可以是符合参数类型的常量如s=sum(100);变量如s=sum(m);表达式如s=
此文档下载收益归作者所有