- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章深入模块化设计与应用
C语言程序设计 第6章深入模块化设计与应用 * 知识点 算法的要素、基本性质、基本特征及基本质量要求 冒泡排序 选择排序 函数的嵌套调用 递归调用 指针作为函数参数 数组作为函数参数 指针函数与指向函数的指针 难点 递归调用 学生成绩管理综合用例 第6章 深入模块化设计与应用 当基本的语法知识学完之后,就要去研究如何更有效地组织语言设计与编写程序,更好的完成任务。 程序=数据结构+算法 引言 (1) 算法的概念 关于算法,通俗的讲,就是指解决问题的一种方法或一个过程。 算法是计算机学科中最具有方法论性质的核心概念,也被誉为计算机学科的灵魂。 算法对于我们来说并不陌生,从小学的四则运算就开始接触,“先括号内后括号外,先乘除后加减”就是四则运算的算法,以后学习的指数运算、矩阵运算和其他代数运算的运算规则都可以称为算法。 就计算机科学来说,算法就是计算机解决问题的过程。 6.1 算法 (2) 算法的要素 基本操作功能 包括前面讲解的算术运算、关系运算、逻辑运算、赋值运算、输入和输出等。 控制结构 算法的控制结构给出了算法的框架,决定了各操作的执行次序。包括顺序、选择和循环结构。需要注意的是,模块间的调用也是一种控制结构,特别地,模块自身的直接或间接调用,即递归结构,是一种功能很强的控制重复运算的结构。 数据结构 算法操作的对象是数据,数据间的逻辑关系、数据的存储方式及处理方式就是数据结构。前面学过的基本数据类型及数组都是算法操作的对象。 (3) 算法的基本性质 算法是把人类找到的求解问题的方法,经过抽象化、过程化、形式化后,用上述三要素表示出来。在算法的实现中要满足以下性质: 目的性 算法有明确的目的,能完成赋予它的功能。 分步性 由一系列计算机可执行的步骤完成其复杂的功能。 有序性 每个步骤都有一定的执行顺序。 有限性 算法是有限的指令序列,其所包含的步骤也是有限的。 操作性 有意义的算法总是对某些对象进行操作,使其改变状态,完成功能。 (4) 算法的基本性质 1)有穷性 一个算法在执行有限步骤后必须结束,即在算法设计当中必须要有对循环或递归的结束语句。合理地提出结束条件,以避免出现“死”循环状态。 2)确定性 对于每种情况下所应执行的操作,在算法中都有明确的规定。使算法的执行者或阅读者都能明确其含义及如何执行。 3)可行性 算法中描述的操作都可以通过已经实现的基本操作运算有限次完成。 4)可输入 输入作为算法加工对象的数据,通常体现为算法中的一组变量。算法可以有零个或多个输入。 5)可输出 输出是一组与输入有确定关系的量值,是算法进行信息加工后得到的结果。算法至少产生一个量作为输出。 (5) 算法设计的基本质量要求 算法设计的基本质量要求其实也就是程序设计的基本质量要求,它包括以下4个方面: 1)正确性 对于一切合法的输入数据都能得出满足要求的结果。要验证算法或程序的绝对正确,需要穷举所有的数据,但这通常是不可能做到的,所以按软件测试的要求,一般要选择具有代表性的数据。 2)健壮性 当输入数据非法时,算法能恰当地做出反映或进行处理,而不是产生莫名其妙的输出结果。这就是说需要在算法或程序设计时要考虑异常情况,处理时也尽量不是简单地中断算法的执行,而应返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。 3)可读性 算法主要是为了方便人的阅读与交流,其次才是计算机执行。因此其表达应易于理解。算法并不一定非得编出程序来,大家在前面学习的流程图也是一种非常好的算法表达方式,很多的逻辑错误在这一层上就能够被发现。另外,在程序中加注释也是很好的习惯。 4)高效率与低存储量的需求 效率通常指执行时间,一般不用绝对时间来衡量,而用语句执行频度、时间复杂度;存储量是指算法执行过程中所需的最大量存储空间。这两个方面通常是矛盾的。因此,我们的主要任务是找到它们之间的平衡点。接下来我们就用“兔子繁殖问题”来说明这一点,希望对大家理解这一点有所帮助。 例6-1 兔子繁殖问题(Fibonacci’s Rabbits)。 问题描述:一对兔子从出生后第三个月开始,每月生一对小兔子。小兔子到第三个月又开始生下一代小兔子。假若兔子只生不死,一月份抱来一对刚出生的小兔子,问一年中每个月各有多少只兔子。 (6) 引例 问题分析:采用递推方法来解决这个问题。设f(n)表示这一年中第n个月的兔子数量,则很容易得到下面的递推关系: 下面分析它的具体程序实现。 #include stdio.h #include stdlib.
您可能关注的文档
- 积分中值定理的中值渐近性的又一定理.pdf
- 科目四安全文明驾驶知识个人错题集(题库为2017模拟考试1103题).doc
- 积分第一中值定理中值点渐近性.pdf
- 移动变电站技术规范书KBSGZY-2-800.doc
- 移动adhoc网络和对等网络的比较.pdf
- 积分变换PPT第06章Fourier变换.pdf
- 移动计算环境中数据广播的启发式遗传调度算法.pdf
- 移动通信中回声消除算法的研究.pdf
- 科创第二届棠城杯杯策划书.docx
- 积分变换第二章课件1.ppt
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)