电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[2017年整理]函数—模块化程序设计

51页
  • 卖家[上传人]:油条
  • 文档编号:51940557
  • 上传时间:2018-08-17
  • 文档格式:PPT
  • 文档大小:239.50KB
  • / 51 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、高级语言程序设计第5章 函数 模块化程序设计 学习目标l模块化程序设计的思想,l自顶向下的实现方法,l系统函数库的使用方法,l自定义函数的方法,l参数传递方式,l函数调用过程,l接口与实现的分离,l开发大规模程序引言l如何对比较复杂、庞大的问题进行程序设计?例 如:绘制一个动物图案l头 正方型l躯干菱形l下肢矩型 建立一个学生信息管理系统l界面l建立信息l维护信息l查询信息解决比较大的问题要成千上万行代码怎么实现呢?l每个软件只有一个main(), main()当中能放多少行程序?l读多少行的程序能让你不头疼?l如果所有代码都在main()当中,怎么团队 合作?l如果代码都在一个文件中,怎么团队合作 ?模块化程序设计思想l复杂问题分解成若干子问题模块,逐个解决每 个子问题l模块各司其职每个模块只负责一件事情,它可以更专心一个模块一个模块地完成,最后再将它们集成便于开发、调试、测试和维护等工作l开发人员各司其职按模块分配任务,职责明确并行开发,缩短开发时间 l分而治之(Wirth, 1971 ) 信息隐藏(Parnas, 1972)C语言用函数表示模块l分而治之函数把较大的任务分解成若干

      2、个较小的任务,并提炼出公用任务l代码复用程序员可以在其他函数的基础上构造程序,而不需要从头做起l信息隐藏(黑盒子)设计得当的函数可以把具体操作细节对程序中不需要知道它们的 那些部分隐藏掉,从而使整个程序结构清楚l如把编程比做制造一台机器,函数就好比其零部 件可将这些“零部件”单独设计、调试、测试好,用时拿出来装配,再 总体调试。这些“零部件”可以是自己设计制造/别人设计制造/现在的标准产品函数的定义形式l返回值类型 函数名 (参数列表) l l 函数体 变量声明部分 语句部分 l l函数可以没有返回值,也可以没有参数,均用void表示如:void funcname(void)l参数列表的形式:参数类型 参数名称1,参数类型 参数名称2, 如:int maxium( int a, int b, int c) 具有三个参数,返回类型为int的函数或 void print( int a, int b) 如大家熟悉的int main(void)printf(。);实际上 printf,scanf也是这样定义的我们可以根据需要定义各种自己的函数。函数调用已经定义的函数要在某个地方使用才有意义,使

      3、用一个函 数称为函数调用。可以在main()中调用其它函数在任意一个函数中均可以调用其它函数。调用的形式:函数名(实际参数)-有参数时或函数名()- 无参数时问题1 绘制一个动物图案。l定义无参数、无返回类型的函数l如打印矩型的函数l void Rectangle (void) 。 使用已经定义的函数测试lvoid Rectangle (void) /这种函数叫做stub 树桩或存根 printf(“rectangle okn”) ; /仅供测试 void diamond(void) printf(“diamond okn”); lint main(void)ll rectangle();/函数调用l diamond(); l rectangle();l return 0;l l被调用的函数必须先定义,即各个函数的定义现在一定要放在主函数之前( 等会我们会有另外的方法)问题2 学生信息系统l 同样每个功能模块用一个函数表示void create(void) void display(void) void modify(void) void query(void )void delete

      4、(void )l写一个main测试它们问题3 :设计一个能求某个自然数以内的 自然数之和的函数模块有参数和返回值 的函数 l分析:首先取名 sum确定是否有返回值?如果有,是什么类型?确定是否有参数?几个?什么类型? l函数定义int sum(int n) int s=0; for(int i=1;i lint sum(int n) l l l lint main(void) lint m,s; scanf(“%d”, /准备一个实参ms = sum(m); /调用sumprintf(“ %dn”, s); /输出结果 /或者直接printf(“ %dn”, sum(m);return 0; 函数调用的注意事项1l有返回值时调用结果可以放到一个数值表达式中,如s = sum(m);也可以作为另一个函数调用的参数,如printf(“%dn“, sum(m);l无返回值时函数调用只能独立使用rectangle();函数调用的注意事项2l实参可以是符合参数类型的常量l如 s = sum(100);变量l如 s = sum(m);表达式l如 s = sum(m+10);实参与形参必须一致l函数

      5、调用时实参与形参必须保持参数个数相同参数类型相同,如果不同将自动转换参数顺序相同l当函数有多个表达式参数时,函数调用时实参求值的顺序可能是从左到右或从右到左,举例funcpara.cpp为了清楚起见,需要对函数接口加以注释 说明/* 函数功能:实现功能函数参数: 参数1,表示参数2,表示函数返回值: */ 返回值类型 函数名(参数表) 函数体 return 表达式; 问题4 设计一个求两个数的平均值的函数 模块/*函数功能: 计算平均数函数入口参数: 整型x,存储第一个运算数整型y,存储第二个运算数函数返回值: 平均数 */ int average(int x, int y) int result;result = (x + y) / 2;return result; 函数执行的过程l函数调用时,实参值传递给形参变量l暂时离开调用者,去执行函数体l函数执行完毕后,回到调用的位置,继续 执行调用者的语句使用了average函数的main() main() int a = 12; int b = 24; int ave;ave = average(a, b);printf(“average

      6、 of %d and %d is %d.n“, a, b, ave); int Average(int x, int y) int result;result = (x + y) / 2;return result; main() int a = 12;int b = 24;int ave;ave = Average(a, b); printf(); 数据传递执行顺序问题5 设计一个判断某个数是否是素数的 函数模块问题6 设计一个求某个数a的n次幂的函数 模块l可以定义各种各样的函数模块当问题比较复杂时,需要很多函数l所有自定义的函数都要放在main的前面, 这将喧宾夺主,本末倒置l解决的方法是在使用之前,先有函数的原型声明l实际上,头文件中包含了要使用的函数的 原型声明l 如stdio.h中包含了printf,scanf等跟I/O相 关的函数原型l某一模块定义为一个函数之后,在使用它 (函数调用)之前,先用函数原型声明。l使用函数原型声明,重写上述例题函数原型的作用l函数原型 如 int sum(int n);可以写成 int sum(int) l函数原型告诉编译器函数返回的数据类型

      7、 ,函数接收的参数个数,参数类型及参数 顺序l强制转换参数类型小结:函数三要素l函数原型l函数调用l函数定义函数的分类l库函数ANSI/ISO C定义的标准库函数l符合标准的C语言编译器必须提供这些函数l函数的行为也要符合ANSI/ISO C的定义第三方库函数l由其它厂商自行开发的C语言函数库。不在标准范围 内,能扩充C语言的功能(图形、网络、数据库等)l自定义函数自己编写的函数l包装后,也可成为函数库,供别人使用数学函数库使用l常用的数学函数l sqrt(x) l exp(x) l log(x) 自然对数l log10(x)l fabs(x)l ceil(x) 不小于x的最小整数l floor(x) 不大于x的最大整数l pow(x,y)l sin(x) x为弧度l #includel找出所有小于500的构成直角三角形的三条边input a, b,cc = sqrt(pow(a,2)+pow(b,2)l求一元二次方程的根 a,b,c sqrt(b*b 4*a*c) 0 sqrt(b*b 4*a*c) 0 sqrt(b*b 4*a*c) =0l打印02PI之间sin(x)对照表l例si

      8、necurve.cpp随机数的产生l rand() 产生一个0到 RAND_MAX(32767) 之间的一个 整数,伪随机数l需要包含 stdlib.hl l模拟掷硬币和骰子l缩放 rand()%6lsrand(unsigned) 为rand()设置种子ltime(NULL)参数NULL返回秒为单位的计算机系统的当 前时间。time.hl srand(time(NULL)l例rand.cppvoid Print(int flag)void Print(int flag) if (flag) if (flag) printf(“Right!n“); printf(“Right!n“);else elseprintf(“Not correct!n“); printf(“Not correct!n“); 小学生加法考试题/* 函数功能: 计算两整型数之和,如果与用户输入的答案相同,则返回1 ,否则返回0函数参数: 整型变量a和b,分别代表被加数和加数函数返回值:当a加b的结果与用户输入的答案相同时,返回1,否则返回0 */ int AddTest(int a, int b) int answ

      9、er; printf(“%d+%d=“, a, b); scanf(“%d“, if (a+b = answer) return 1; else return 0; 只答只答1 1次次main() int a, b, answer;printf(“ “Input a,b:“ “);scanf(“ “%d,%d“ “, answer = AddTest(a, b);Print(answer);do while (answer = 0);小学生加法考试题 直到做对为止直到做对为止main() int answer,chance=0;doanswer = AddTest(a, b);Print(answer);chance+;while (answer = 0 小学生加法考试题 最多给最多给3 3次机会次机会int a,b;int error = 0;int score = 0; srand(time(NULL);for (int i=0; i10; i+) a = rand()%10 + 1;b = rand()%10 + 1;answer = AddTest(a, b);Print(answer);if (answer = 1)score = score + 10;elseerror+; 实验4:小学生加法考试题 随机出题随机出题连续做连续做1010道题道题统计分数统计分数通用小学生算术软件碰运气游戏-掷双骰子l游戏规则l 掷两个骰子,点数相加。第一次时如果和 为7或11则玩家赢

      《[2017年整理]函数—模块化程序设计》由会员油条分享,可在线阅读,更多相关《[2017年整理]函数—模块化程序设计》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.