欢迎来到天天文库
浏览记录
ID:59421554
大小:704.00 KB
页数:32页
时间:2020-09-19
《C语言程序设计与应用 第6章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、知识点算法的要素、基本性质、基本特征及基本质量要求冒泡排序选择排序函数的嵌套调用递归调用指针作为函数参数数组作为函数参数指针函数与指向函数的指针难点递归调用学生成绩管理综合用例第6章深入模块化设计与应用当基本的语法知识学完之后,就要去研究如何更有效地组织语言设计与编写程序,更好的完成任务。程序=数据结构+算法引言(1)算法的概念关于算法,通俗的讲,就是指解决问题的一种方法或一个过程。算法是计算机学科中最具有方法论性质的核心概念,也被誉为计算机学科的灵魂。算法对于我们来说并不陌生,从小学的四则运算就开始接触,“先括号内后括号外,先乘除
2、后加减”就是四则运算的算法,以后学习的指数运算、矩阵运算和其他代数运算的运算规则都可以称为算法。就计算机科学来说,算法就是计算机解决问题的过程。6.1算法(2)算法的要素基本操作功能 包括前面讲解的算术运算、关系运算、逻辑运算、赋值运算、输入和输出等。控制结构 算法的控制结构给出了算法的框架,决定了各操作的执行次序。包括顺序、选择和循环结构。需要注意的是,模块间的调用也是一种控制结构,特别地,模块自身的直接或间接调用,即递归结构,是一种功能很强的控制重复运算的结构。数据结构 算法操作的对象是数据,数据间的逻辑关系、数据的存储方式及处
3、理方式就是数据结构。前面学过的基本数据类型及数组都是算法操作的对象。(3)算法的基本性质算法是把人类找到的求解问题的方法,经过抽象化、过程化、形式化后,用上述三要素表示出来。在算法的实现中要满足以下性质:目的性 算法有明确的目的,能完成赋予它的功能。分步性由一系列计算机可执行的步骤完成其复杂的功能。有序性每个步骤都有一定的执行顺序。有限性 算法是有限的指令序列,其所包含的步骤也是有限的。操作性 有意义的算法总是对某些对象进行操作,使其改变状态,完成功能。(4)算法的基本性质1)有穷性 一个算法在执行有限步骤后必须结束,即在算法设计当
4、中必须要有对循环或递归的结束语句。合理地提出结束条件,以避免出现“死”循环状态。2)确定性对于每种情况下所应执行的操作,在算法中都有明确的规定。使算法的执行者或阅读者都能明确其含义及如何执行。3)可行性算法中描述的操作都可以通过已经实现的基本操作运算有限次完成。4)可输入 输入作为算法加工对象的数据,通常体现为算法中的一组变量。算法可以有零个或多个输入。5)可输出 输出是一组与输入有确定关系的量值,是算法进行信息加工后得到的结果。算法至少产生一个量作为输出。(5)算法设计的基本质量要求算法设计的基本质量要求其实也就是程序设计的基本质
5、量要求,它包括以下4个方面:1)正确性 对于一切合法的输入数据都能得出满足要求的结果。要验证算法或程序的绝对正确,需要穷举所有的数据,但这通常是不可能做到的,所以按软件测试的要求,一般要选择具有代表性的数据。2)健壮性当输入数据非法时,算法能恰当地做出反映或进行处理,而不是产生莫名其妙的输出结果。这就是说需要在算法或程序设计时要考虑异常情况,处理时也尽量不是简单地中断算法的执行,而应返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。3)可读性算法主要是为了方便人的阅读与交流,其次才是计算机执行。因此其表达应易于理解。算
6、法并不一定非得编出程序来,大家在前面学习的流程图也是一种非常好的算法表达方式,很多的逻辑错误在这一层上就能够被发现。另外,在程序中加注释也是很好的习惯。4)高效率与低存储量的需求 效率通常指执行时间,一般不用绝对时间来衡量,而用语句执行频度、时间复杂度;存储量是指算法执行过程中所需的最大量存储空间。这两个方面通常是矛盾的。因此,我们的主要任务是找到它们之间的平衡点。接下来我们就用“兔子繁殖问题”来说明这一点,希望对大家理解这一点有所帮助。例6-1兔子繁殖问题(Fibonacci’sRabbits)。问题描述:一对兔子从出生后第三个月
7、开始,每月生一对小兔子。小兔子到第三个月又开始生下一代小兔子。假若兔子只生不死,一月份抱来一对刚出生的小兔子,问一年中每个月各有多少只兔子。(6)引例问题分析:采用递推方法来解决这个问题。设f(n)表示这一年中第n个月的兔子数量,则很容易得到下面的递推关系:下面分析它的具体程序实现。#include#includevoidmain(void){inti,a=1,b=1,c=0;printf("%5d%5d",a,b);/*输出1,2月份兔子的数量*/for(i=0;i<=9;i++){c=a+b
8、;/*计算当月兔子的数量*/printf("%5d",c);/*输出当月兔子的数量*/a=b;b=c;/*找到下月的前两月的兔子的数量*/}printf("");}程序清单6-1说明:a)需要循环10次b)需要3个“空间”:a,
此文档下载收益归作者所有