免费预览已结束,剩余48页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章模块化编程、编程艺术、结构编程使用两个最高级的艺术算法设计艺术结构设计艺术功能(function),这是结构设计的最基本单元。“一个程序必须轻快自由,其子过程就像一串珍珠。”GeoffreyJames的编程之道,模块化编程的核心:函数设计。重要概念:将解决问题的方案设计为独立的模块。程序调用模块功能解决问题。这个模块是通过函数实现的,也称为函数模块。每个函数都有单独的功能,程序通过模块之间的协调工作执行复杂的程序功能。数学函数(1)、参数、变量、函数名、函数返回值、数学函数(2)、参数、变量、参数、原因变量、编程函数和编程函数不限于计算类(例如打印继承表的程序).可以判断排序、查找等推理类,解决问题的要点,使用子函数将大任务分解为多个小任务,并提取公用任务。多路复用程序员可以基于其他函数构造程序,而无需从头开始。正确设计信息隐藏的函数可以隐藏程序中不需要知道的部分的特定操作细节,从而使整个程序结构清晰。说明:源程序文件由一个或多个函数组成。c程序由一个或多个源程序文件组成。c程序的执行从main函数开始,调用另一个函数,然后进程返回到main函数,在main函数中结束整个程序的执行。所有函数都是平行的。也就是说,定义函数时,它们彼此独立,一个函数不依赖另一个函数。一,c语言中的函数,一,c语言中的函数,1,角色:函数是c程序的基本单位2,分类:main函数,其他函数,程序角度,库函数,用户定义的函数,从用户角度来看,参数函数,表达式,函数Int、float、char等。如果函数没有返回值,则使用null类型void定义函数的返回值。默认值为int类型(某些编译器不支持默认值)。(2)函数名由有效标识符组成。建议函数名称的命名与函数内容有关。例如,程序编写自定义函数abs_sum(),以获得两个整数的绝对值之和。Intabs _ sum (intm,intn) if(m0)m=m;if(n0)n=n;return(m n);或直接调用系统函数来实现。intabs _ sum (intm,intn) return(ABS(m)ABS(n);注意:函数ABS()的声明位于头文件math.h中。3,函数参数和函数值,1,参数和实际参数:a,寿命:调整函数(几何参数)和主要函数(实际)b,类型:c,数据传递方法:传递值(ByVal):常规变量确定的返回值:return语句b,不确定的返回值:没有return语句实例说明,4,函数调用,1,调用格式:函数名(实际表列)2,调用方法:函数语句,表达式3,函数的声明:a,调用例如intabs_sun(intm,intn);例如,说明两种不需要声明的情况。示例1:调用intabs_sum(inta,intb)函数以求两个整数绝对值之和的作者。,/* example 6 _ 1 . c */# include intabs _ sum(intm,intn);/*函数声明*/main()intx,y,z;Scanf (%d% d ,思考:如何合计任意三个整数的绝对值?intx、y、z和sumScanf(%d%d%d ,5,函数变量,1,按范围列出的本地变量:在此函数中有效。全域变数:从定义位置到来源程式结尾都有效。2、存储类型的静态存储变量:程序运行时有固定存储空间,程序退出时释放内存设备。动态存储变量:根据需要动态分配和释放内存设备。局部变量:函数内部或控制块内部定义的变量。局部变量的范围:函数内部。角色:提高了函数模块的独立性。全局变量:在函数外部定义的变量称为全局变量。全局变量的范围:从定义变量的位置开始,直到源文件结束。活动:同一文件中的所有函数都可以引用全局变量。函数之间的数据连接已得到改进。局部变量和全局变量的范围为:例如,变量的存储类型变量的存储类型表示变量的存储属性,该属性说明变量占用存储空间的区域。在内存中,用户的存储由三部分组成:程序区域、静态存储和动态存储。变量有四种存储类型:auto、register、static和exetern。自动变量存储在内存的动态存储区。寄存器中存储的注册变量;静态和extern变量存储在静态内存中。变量的范围和存储库类型,以及本地变量的存储库类型默认值为auto。全局变量的存储类型默认值为extern类型。注:一般为auto类型,register类型定义局部变量。静态类型既可以用作局部变量,也可以用作全局变量。如果是局部变量,则保留局部变量的值;如果没有初始值,则自动指定零值。如果是全局变量,则有效范围是该变量所在的源文件,其他源文件不可用。6,数组作为函数参数,1,数组元素作为函数参数(传递值)数组元素,起到简单变量的作用。如果实际参数是阵列元素,则几何参数必须是简单变量。2、数组名函数参数(地址传递)如果实际参数是数组名,则不接受参数作为简单变量。在函数中变更造型参数值会变更实际参数值。数组元素作为函数参数,void add(intx) x=1;main()inta4=1,2,3,4,I;for(I=0);i4;I)add(aI);for(I=0);i4;I)printf(“% d”,aI);运行结果:1234,传递值,2,3,4,a 0,1,1,a 1,a 2,a for(I=0);i4;I)pI=pI10;main()inta4=1,2,3,4 ;add(a);for(I=0);Ib?A:bReturnc main() inta=8;printf(“% d % d % d % d n”,a,b,max (a,b);,示例3:设计longfac(intn)函数以计算正整数的阶乘,然后编写程序进行测试。算法的核心思想:在任意正整数n的情况下(n1)!n!=n (n1)!即可从workspace页面中移除物件。您可以在函数中定义static变量,用于存储每个阶乘的计算结果。变量的范围(2),变量的范围(2),intfac(intn) static intf=1;f=f * n;Returnf main() inti;for(I=1);iy)z=x;elsez=y;return(z);,函数的返回值(2),main()intmax(int,int);Inta=3,b=2,c;C=max(a,b);Printf(max=%d ,c); intmax (intx,inty) intrz;if(xy)z=x;elsez=y;,errors 47163360 max : mustreturavlue,函数嵌套格式,main函数a函数b函数a函数b结束,递归调用格式(1),函数1.f1 (m,n);函数1.,递归调用的形式(2),函数1函数2,f1 (intx,inty) .F2 (m,n);,F2 (inta,intb) .f1 (p,q);。,(1)有递归出口。递归退出定义了递归退出条件,当程序运行满足时,递归执行过程将终止。一些问题的递归程序可能有多个递归出口。(2)不满足递归出口,原始问题的结构相同,但原始问题的规模很小,根据已解决问题的性质,将原始问题分解为多个子问题。子问题解决通过特定的方法修改参数,进行函数本身的调用,然后将子问题解决组合到原始问题的解决方案中。递归调用时,修改参数应确保最终满足递归出口。递归编程是int fact(intn) intm;if(n=0)return(1);else m=n * Fact(n-1);return(m);,示例1尝试查找正整数n的阶乘值n的递归函数!即可从workspace页面中移除物件。n!=n*(n-1)*(n-2)*.*2*1n!=n*(n-1)!根据阶乘的数学定义,n的阶乘值为fact(n=0f act (n)=n * fact (n-1) n0,intn(intm) in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国再保险行业发展展望及投资策略报告
- 2024年人力资源管理师(三级)专业技能测验卷及答案
- 陶瓷烧成工安全宣传评优考核试卷含答案
- 复印打印设备维修工安全文明模拟考核试卷含答案
- 腈纶回收操作工岗前内部控制考核试卷含答案
- 电池及电池系统维护员冲突解决竞赛考核试卷含答案
- 企业培训师岗位安全技术规程
- 商务数据分析师安全生产能力模拟考核试卷含答案
- 《GBT 26831.4-2017 社区能源计量抄收系统规范 第 4 部分:仪表的无线抄读》专题研究报告
- 公司光缆线务员岗位设备技术规程
- 施工安全技术操作规程(房建)
- 金融担保品管理办法
- 2025年士兵考试题及答案
- 2025充电桩智能化升级改造项目合同
- 平凡与伟大-李富贵小货车的乡村温度-2026年高考语文作文热点话题素材积累与实战训练
- 研发投入工时管理办法
- 新概念英语第二册课后答案(全部)
- 滑膜细胞外基质构建-洞察及研究
- 新版2026统编版小学道德与法治三年级上册 第3课《 学习有方法》第2课时 我和时间交朋友 教案设计(教案)
- 事业单位聘用合同范本及签订规范
- 持续葡萄糖监测临床应用专家共识2024解读
评论
0/150
提交评论