模块化程序设计 (2).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《解析C程序设计》第5章 模块化程序设计 模块化程序设计 本章内容 怎样解决一个复杂的问题 模块化程序设计思想 函数的嵌套调用 Hanoi(汉诺)塔问题 函数的递归调用 5.1 怎样解决一个复杂的问题 怎样来分析和完成“高校信息管理系统”呢? 一个大系统(或子系统)不可能用一个主函数来完成,必须将大问题分解成小问题,再由若干人、若干函数(模块)来完成。 高校信息管理系统功能分解 模块化程序设计思想 为了完成上述大型系统的开发,我们将软件开发看成是一项工程来做,其过程大致分为:系统定义、需求分析、系统设计、编写程序、系统测试、系统维护等阶段。 软件工程的思想:将一个大的系统采取“分而治之”方法解决。 模块化程序设计思想 开发一个软件系统时,最好的办法是从编写主程序开始,在主程序中,将问题作为一个整体考虑,然后找出完成整个任务的主要步骤,再沿着这条主线将整个问题继续分解为独立的模块。 这种“自顶向下、逐步细化”的思想就是模块化程序设计的主要思想。 为什么需要模块化程序设计 模块化程序设计方法 功能分解 自顶向下、逐步求精的过程 模块分解的原则 保证模块的相对独立性 高聚合、低耦合 模块的实现细节对外不可见 外部:关心做什么 内部:关心怎么做 设计好模块接口 接口是指罗列出一个模块的所有的与外部打交道的变量等 定义好后不要轻易改动 在模块开头(文件的开头)进行函数声明 模块化程序设计方法的基本原则 模块化程序设计的优点 C程序结构 函数设计的原则 函数的功能要单一,不要设计多用途的函数 函数的规模要小,尽量控制在50行代码以内 1986年IBM在OS/360的研究结果:大多数有错误的函数都大于500行 1991年对148,000行代码的研究表明:小于143行的函数比更长的函数更容易维护 参数和返回值的规则 参数要书写完整,不要省略 对函数的入口参数进行有效性检查 没有参数和返回值时,用void填充 每个函数只有一个入口和一个出口,尽量不使用全局变量 尽量少用静态局部变量,以避免使函数具有“记忆”功能 C语言中的函数与模块 在C语言中,每个模块都是由函数完成的。 一个小模块就是一个函数。 在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。程序员要善于利用库函数,以减少重复编写程序段的工作量。 在编写某个函数时,遇到具有相对独立的功能的程序段,都应独立成另一个函数,而在一个函数中调用另一个函数;当某一个函数拥有较多的代码时(一般函数代码50行左右),也应将函数中相对独立的代码分成另一个函数。 C语言就是模块化程序设计语言。 模块和链接√ 将一个程序分解成若干个模块,分别放在几个源文件中,形成一个项目文件(.prj )(Project) 然后,对每一个源文件(.c)分别单独进行编译 再将它们的目标代码(.obj )连同标准函数库中的函数链接在一起,形成可执行文件(.exe)。 模块之间通过互相调用函数联系起来 头文件(.h)是联系的纽带 简化的模块化问题√ 例5-1:求三个数中最大数和最小数的差值。 【分析】 主函数可以调用其他函数,反之,不然。 自定义函数之间能否调用呢?能。 函数不能嵌套定义,但是函数能嵌套调用,即函数调用函数,前者称为调用函数,后者称为被调函数。 这里可以定义3个函数:最大值、最小值、最大值与最小值的差,第三个函数将调用前两个函数。 函数的嵌套调用 例5-1问题的实现 举一反三 弦截法N-S图及程序 弦截法求根程序 函数调用关系 例5-3 例5-3程序 例5-3函数调用关系 思考题 5.2 Hanoi(汉诺)塔问题 问题的分析 Hanoi(汉诺)塔问题是一个古典的数学问题,任何一个人都不可能使用传统的方法直接写出移动盘子的每一个具体步骤,僧侣们也无法解决这个问题。 解决Hanoi(汉诺)塔问题的方法可以表述如下: ⑴老和尚移动64个盘子的步骤 第1步,请第2个和尚将前63个盘子从A柱子移到B柱子; 第2步,自己将最下面的第64个盘子从A柱子移到C柱子; 第3步,再请第2个和尚将63个盘子从B柱子移到C柱子。 ⑵第2个和尚移动63个盘子的步骤 第1步,请第3个和尚将前62个盘子从A柱子移到C柱子; 第2步,自己将最下面的第63个盘子从A柱子移到B柱子; 第3步,再请第3个和尚将62个盘子从C柱子移到B柱子。 依此类推,直到第63个和尚完成了2个盘子的移动,最后由第64个和尚完成1个盘子的移动。这个过程称之为“回推”过程。 问题的分析 当第64个和尚完成1个盘子的移动后,第63个和尚就可以完成2个盘子的移动,……,最后第1个和尚完成64个盘子的移动。这个过程称之为“递推”过程。 “回推”和“递推”两个过程构成了“递归”问题的两个阶段。如果要求递归过程在有限步骤内,就必

文档评论(0)

allap + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档