新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法

上传人:w****i 文档编号:92539810 上传时间:2019-07-11 格式:PPS 页数:61 大小:1.31MB
返回 下载 相关 举报
新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法_第1页
第1页 / 共61页
新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法_第2页
第2页 / 共61页
新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法_第3页
第3页 / 共61页
新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法_第4页
第4页 / 共61页
新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法》由会员分享,可在线阅读,更多相关《新编C语言程序设计教程 教学课件 ppt 作者 钱雪忠★★★《新编C语言程序设计教程》课件第2章 结构化程序设计与算法(61页珍藏版)》请在金锄头文库上搜索。

1、现在人们公认的具有“良好风格”的程序设计方法之一是所谓的“结构化程序设计方法”。其核心是规定了算法的三种基本结构:顺序结构、选择结构和循环结构。按照结构化程序设计的观点,任何算法功能都可以通过三种基本程序结构: 顺序结构、选择结构和循环结构的组合来实现。在本章,主要介绍算法、结构化程序设计及其三种基本结构、结构化程序设计方法等。,第2章 结构化程序设计与算法,学习重点和难点: 程序设计的基本概念 算法的概念和算法的表示 结构化程序设计方法 学习本章后将对结构化程序设计方法有认识,并能用某种方式来表示算法。,第2章 结构化程序设计与算法,2.1 初识算法 2.2 结构化程序设计 2.3 表示算法

2、的多种方法 2.4 结构化程序设计应用举例 2.5 本章小结 2.6 习题 实验2 熟悉VC+ 6.0环境及算法,第2章 结构化程序设计与算法,2.1 初识算法,有了方便人们编写程序的计算机语言,就可以开始构思来进行程序设计。 所谓程序设计就是使用某种计算机语言,按照某种算法,编写程序的活动。,如何进行程序设计呢?一般说来,包括以下步骤: 问题定义; 算法设计; 算法表示(如流程图设计); 程序编制与调试; 程序测试、运行与分析及文档编制。,2.1 初识算法,2.1 初识算法,2.1.1 算法的概念 2.1.2 算法举例 2.1.3 算法的特征,这里,重点就其中的算法和程序设计方法等作简单介绍

3、。,2.1.1 算法的概念,一个程序应包括: 1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 2)对操作的描述。即操作步骤,也就是算法(algorithm)。 著名的计算机科学家Nikiklaus Wirth提出一个公式:程序=数据结构+算法,2.1.1 算法的概念,实际上,随着程序设计技术的不断发展,可以重新定义这个公式: 程序=算法+数据结构+程序设计方法+语言工具和环境 这4个方面是一个程序设计人员所应具备的知识。这里主要介绍算法的初步知识。 做任何事情都有一定的步骤,而算法就是解决某个问题或处理某件事的方法和步骤,在这里所讲的算

4、法是专指用计算机解决某一问题的方法和步骤。不管你所采用的编程语言如何变化,算法是其核心内容,有了解决问题的算法,就不愁编不出能解决问题的语言程序。,2.1.1 算法的概念,计算机算法一般分为两大类:一类是数值计算算法,主要用于解决难以处理或运算量大的一些数学问题,如求解超越方程的根、求解微分方程等;另一类是非数值计算算法,如对非数值信息的排序、检索等,适用于事务管理领域。对于同一个问题,往往有不同的几种解题方法和步骤,即几种算法,为了有效地进行解题,不仅需要保证算法的正确性,还要考虑算法的质量(时间与空间的效率),选择合适并较优的算法。,2.1.2 算法举例,2.1.2 算法举例,2.1.2

5、算法举例,2.1.2 算法举例,1,3,1X3,5,2.1.2 算法举例,1X3X5,7,2.1.2 算法举例,1X3X5X7,9,2.1.2 算法举例,1X3X5X7X9,11,2.1.2 算法举例,1X3X5X7X9X11,13,5次循环后t的值就是所求的结果。,2.1.2 算法举例,2.1.3 算法的特征,1、有穷性 人们编制算法的目的就是要解决问题,若该算法无法在一个有限合理的时间内完成问题的求解,那么算法也就失去了其原有的目的,人们就会摒弃它。而且人们研究算法,其目的还在于它的高效率,即解决同一个问题的两个算法,人们往往选择其中那个运行效率高的。 2、确定性 所谓算法的确定性是指算法

6、的每一个步骤都应该确切无误,没有歧义性。,2.1.3 算法的特征,3、有零个或多个输入 执行算法时,有时需要外界提供某些数据,帮助算法的执行。一个算法可以没有输入,也可以有多个输入。例如,求解N!,该算法就需要输入一个数据N;而求解两数之和,该算法就需要输入两个数据 4、有一个或多个输出 算法的目的是求解,解就是结果,就是输出,否则就毫无意义。,2.1.3 算法的特征,5、有效性 算法中的每一步都应该能有效地执行、可以实现,执行算法最后应该能得到确定的结果。 对于程序设计人员,必须会设计算法,并根据算法写出程序。,2.2 结构化程序设计,以下从结构化程序设计的方法介绍、方法原则及三种基本结构来

7、说明。,2.2 结构化程序设计,2.2.1 结构化程序设计方法简介 2.2.2 结构化程序设计方法的原则 2.2.3 结构化程序设计的三种基本结构,2.2.1 结构化程序设计方法简介,结构化程序设计是由迪克斯特拉(E.W.dijkstra)在1969年提出的,结构化程序设计是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变单纯而明确,这样能为设计一些较大的软件打下良好的基础。,2.2.1 结构化程序设计方法简介,结构化程序设计的基本要点有: 1、采用自顶向下,逐步细化的程序设计方法在需求分析、概要设计中,都采用了自顶向下,逐层细化的方法。,2.2.

8、1 结构化程序设计方法简介,结构化程序设计的基本要点有: 2、使用三种基本控制结构构造程序 任何程序都可由顺序、选择、循环三种基本控制结构构造(见2.2.3节图2.2)。具体: (1)用顺序方式对过程分解,确定各部分的执行顺序; (2)用选择方式对过程分解,确定某个部分的执行条件; (3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件; (4)对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。,2.2.2 结构化程序设计方法的原则,结构化程序设计方法的原则有: 1、自顶向下 程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过

9、多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 2、逐步求精(或逐步细化) 对复杂问题,应设计一些子目标作为过渡,需要时子目标还可以再设计为一些更小的小目标,这样逐步细化。,2.2.2 结构化程序设计方法的原则,3、模块化设计 一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,直到小目标能够程序化了。一般把每个能程序化的小目标称为一个模块。 由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的

10、方便,因为我们可以充分利用现有的模块作积木式的扩展。,2.2.2 结构化程序设计方法的原则,3、模块化设计,模块化设计:从问题分解到程序,问题,程序,4、结构化编码限制使用goto语句 结构化程序设计方法的起源来自对goto语句的认识和争论。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了:1)goto语句确实有害,应当尽量避免;2)完全避免使用goto语句也并非是个明智的方法,有些地方使用goto语句,会使程序流程更清楚、效率更高;3)争论的焦点不应该放在是否取消goto语句上,而应该放在用什么样的程序结构上。 其中最关键的是,应在以提高程序清晰性为目标的结构化程序设计方法

11、中限制使用goto语句。为此,结构化程序设计方法应只使用限制goto语句使用的顺序、选择、循环三种基本控制结构。,2.2.2 结构化程序设计方法的原则,2.2.3 结构化程序设计的三种基本结构,结构化程序设计方法使用的顺序、选择、循环三种基本控制结构(其流程图表示见图2.2),理论上已证明,无论多么复杂的问题,其算法都可表示为这三种基本结构的组合。依照结构化的算法编写的程序或程序单元(如函数或过程),其结构清晰、易于理解、易于验证其正确性,也易于查错和排错。具体介绍如下:,2.2.3 结构化程序设计的三种基本结构,图2.2 算法基本结构图,2.2.3 结构化程序设计的三种基本结构,3、循环结构

12、 循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行? 循环结构的基本形式有两种:当型循环和直到型循环。,2.2.3 结构化程序设计的三种基本结构,1)当型循环:表示先判断条件,当满足给定的条件时执行循环体,并且在循环体末端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。因为是“当条件满足时执行循环”,即先判断后执行,所以称为当型循环。 2)直到型循环:表示从结构入口处直接执行循环体,在循环体末端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到

13、达流程出口处,是先执行后判断。因为是“直到条件为真时为止”,所以称为直到型循环。,图2.2 算法基本结构图,2.2.3 结构化程序设计的三种基本结构,2.2.3 结构化程序设计的三种基本结构,2.2.3 结构化程序设计的三种基本结构,采取以下方法保证得到结构化的程序: (1) 自顶向下; (2) 逐步细化; (3) 模块化设计; (4) 结构化编码。,2.3 表示算法的多种方法,为了描述一个算法,可以采用许多不同的方法,常用的有:自然语言、流程图、N-S流程图、伪代码、计算机语言等。其中自然语言描述算法通俗易懂,但比较繁琐冗长,不直观,容易产生歧异;伪代码描述的算法相对于前者,比较紧凑;流程图

14、表示的算法,通过图形描述,逻辑清楚,形象直观,容易理解,所以得到广泛的应用。但总体上各有特色,读者可自我选择,下面来分别说明。,2.3 表示算法的多种方法,2.3.1 用自然语言表示算法 2.3.2 用流程图表示算法 2.3.3 用N-S流程图表示算法 2.3.4 用伪代码表示算法 2.3.5 用计算机语言表示算法,2.3.1 用自然语言表示算法,自然语言表示算法,一般用于比较简单的问题,复杂一些的问题一般不用自然语言来表示算法。自然语言表示算法的例子见“2.1.2 算法举例”。 对于不复杂的简单问题,算法也可以文字性总体分析与叙述。,2.3.2 用流程图表示算法,2.3.2 用流程图表示算法

15、,流程图是用一些图框来表示各种操作 用图形表示算法,直观形象,易于理解,起止框,输入输出框,处理框,判断框,流程线,连接点,注释框,x0,Y,N,一个入口,两个出口,一个出口,2.4.2用流程图表示算法,流程图是用一些图框来表示各种操作 用图形表示算法,直观形象,易于理解,起止框,输入输出框,处理框,判断框,流程线,连接点,注释框,位置不够,防止交叉,2.3.2 用流程图表示算法,2.3.2 用流程图表示算法,2.3.2 用流程图表示算法,2.3.2 用流程图表示算法,2.3.3 用N-S流程图表示算法,N-S图也被称为盒图或CHAPIN图,这种新型流程图是1973年美国学者I.Nassi和B

16、. Shneiderman共同提出的,为此称为N-S图。 传统流程图由一些特定意义的图形、流程线及简要的文字说明构成,它能清晰明确地表示程序的运行过程。在使用过程中,人们发现流程线不一定是必需的,为此,人们设计了一种新的流程图,它把整个程序算法写在一个大框图内,这个大框图由若干个小的基本框图构成,这种流程图简称N-S图。,2.3.3 用N-S流程图表示算法,2.3.3 用N-S流程图表示算法,2.3.4 用伪代码表示算法,伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法。伪代码表达算法不用图形符号,因此书写方便,格式紧凑,修改方便,容易看懂,也便于向计算机语言算法(即程序)过渡。下面举一个例子来说明。,2.3.4 用伪代码表示算法,2.3.5 用计算机语言表示算法,我们的任务是用计算机解题,就是用计算机实现算法。用计算机语言表示算法,算是一步到位了。计算机语言表示算法必

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号