数学程序设计基础ch算法PPT课件

上传人:英*** 文档编号:101093753 上传时间:2022-06-04 格式:PPTX 页数:64 大小:504.46KB
收藏 版权申诉 举报 下载
数学程序设计基础ch算法PPT课件_第1页
第1页 / 共64页
数学程序设计基础ch算法PPT课件_第2页
第2页 / 共64页
数学程序设计基础ch算法PPT课件_第3页
第3页 / 共64页
资源描述:

《数学程序设计基础ch算法PPT课件》由会员分享,可在线阅读,更多相关《数学程序设计基础ch算法PPT课件(64页珍藏版)》请在装配图网上搜索。

1、第二章 主要内容: 算法的概念和简单算法举例(1学时) 算法的表示(1.5学时) 传统流程图、N-S结构化流程图、伪代码 结构化程序设计方法(0.5学时) 第1页/共64页 2.1 算法的概念n广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。n对同一个问题,可有不同的解题方法和步骤。n 例如:从西安到北京,有多种前往的路线和策略(算法)第2页/共64页举例 问题1:求1+2+3+100 分析(多种算法):1)采用常规的逐项相加;2)采用交换率和结合率,简化运算3)采用循环相加方法算法1自然语言描述:步骤1:1+2=3步骤2:3+3=6步骤3:6+4=10:步骤99:4950+100

2、=5050算法2描述:100+(1+99)+(2+98)+.+(49+51)+50=100+49*100+50=5050算法3描述:步骤1:k=1, s=0步骤2:如果k100,则算法结束,s即为求得的和;否则转向步骤3步骤3:s=s+k, k=k+1步骤4:转向步骤2第3页/共64页 2.1 算法的概念 为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。希望方法简单,运算步骤少。计算机算法可分为两大类别: 数值运算算法:求数值解,例如求方程的根、求函数的定积分等。 非数值运算:包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、人事管理、行车调度管理等。第

3、4页/共64页 2.2 简单算法举例例2.1: 求12345 步骤1:先求12,得到结果2步骤2:将步骤1得到的乘积2再乘以3,得到结果6步骤3:将6再乘以4,得24步骤4:将24再乘以5,得120如果要求如果要求1 12 210001000,则要写,则要写999999个步骤个步骤第5页/共64页 S1:使p=1。 S2:使i=2。 S3:使p*i,乘积仍放在变量p中,可表示为:p*i p S4:使i的值加1,即i+1 i。 S5:如果i不大于5,返回重新执行步骤S3,以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。可以设两个变量:可以设两个变量:一个变量代表被乘数,一个

4、变量代表乘数。 不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。设p为被乘数,i为乘数。用循环算法来求结果, 算法可改写: 第6页/共64页S1:1pS2:3 iS3:p*i pS4:i+2 iS5:若i11,返回S3。否则,结束。 如果题目改为:求1357911算法只需作很少的改动:S3到S5组成一个循环第7页/共64页 用这种方法表示的算法具有通用性、灵活性。S3到S5组成一个循环在实现算法时要反复多次执行S3,S4,S5等步骤直到某一时刻,执行S5步骤时经过判断,乘数i已超过规定的数值而不返回S3步骤为止。此时算法结束,变量p的值就是所求结果。第8页/共64页例2.2 有

5、50个学生,要求将他们之中成绩在80分以上者打印出来。设n表示学号, n1代表第一个学生学号,ni代表第i个学生学号。用G代表学生成绩 ,gi代表第i个学生成绩,算法表示如下: S1 S1:1 1 i i S2 S2:如果:如果g gi i8080,则打印,则打印n ni i和和g gi i,否则不打印。,否则不打印。 S3S3:i+1 i+1 i i S4 S4:如果:如果i50i50,返回,返回S2S2,继续执行。否则算法结束,继续执行。否则算法结束 变量i作为下标,用来控制序号(第几个学生,第几个成绩)。当i超过50时,表示已对50个学生的成绩处理完毕,算法结束。第9页/共64页例2.3

6、 判定20002500年中的每一年是否闰年,将结果输出。 分析:分析:闰年的条件是:(1)能被4整除,但不能被100整除的年份都是闰年,如1996,2004年是闰年;(2)能被100整除,又能被400整除的年份是闰年。如1600,2000年是闰年。不符合这两个条件的年份不是闰年。 第10页/共64页设y为被检测的年份,算法可表示如下 :S1:2000 yS2:若y不能被4整除,则输出y “不是闰年”。然后转到S6。S3:若y能被4整除,不能被100整除,则输出y “是闰年”。然后转到S6。S4:若y能被100整除,又能被400整除,输出y“是闰年”,否则输出“不是闰年”。 然后转到S6。S5:

7、 输出y “不是闰年”。S6:y+1 yS7:当y2500时,转S2继续执行,如y2500,算法停止。第11页/共64页 以上算法中每做一步都分别分离出一些范围(巳能判定为闰年或非闰年),逐步缩小范围,直至执行S5时,只可能是非闰年。“其它” 包括能被4整除,又能被100整除,而不能被400整除的那些年份(如1990) 是非闰年。第12页/共64页例2.4 求算法如下 : S1S1:sign=1sign=1 S2 S2:sum=1sum=1 S3 S3:deno=2deno=2 S4 S4:sign=(-1)sign=(-1)signsign S5S5:term=signterm=sign(1

8、/deno)(1/deno) S6 S6:sum=sum+termsum=sum+term S7 S7:deno=deno+1deno=deno+1 S8 S8:若:若deno100deno100返回返回S4S4,否则算法结束。,否则算法结束。单词作变量名,以使算法更易于理解:sum表示累加和,deno是英文分母(denominator)缩写,sign代表数值的符号,term代表某一项。 反复执行S4到S8步骤,直到分母大于100为止。一共执行了99次循环,向sum累加入了99个分数。sum最后的值就是多项式的值。 1001991.4131211第13页/共64页 例2.5 对一个大于或等于3

9、的正整数,判断它是不是一个素数。 概念:概念:所谓素数,是指除了1和该数本身之外,不能被其它任何整数整除的数。例如,13是素数。因为它不能被2,3,4,12整除。分析:分析:判断一个数n(n3)是否素数的方法: 将n作为被除数,将2到(n-1)各个整数轮流作为除数,如果都不能被整除,则n为素数。 第14页/共64页算法如下 :S1:输入n的值S2:i=2 (i作为除数)S3:n被i除,得余数rS4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束。否则执行S5S5:i+1iS6:如果in-1,返回S3。否则打印 n “是素数”。然后结束。 实际上,n不必被2到(n-1)的整数除,只

10、需被2到n/2间整数除,甚至只需被2到 之间的整数除即可。n第15页/共64页复杂算法拓展经典复杂问题 地图四色问题:任何一张地图只要用四种颜色进行填涂,就可以保证相邻省份不同色 八皇后问题:在国际象棋8X8的棋盘里摆放8个皇后,使每个皇后都能生存而不互相冲突,即同一行、同一列同对角线(包括主对角线和辅对角线)都只能有一个皇后 迷宫问题、路径选择问题、排序问题、背包问题经典算法 动态规划法 贪心法 回溯法算法导论算法导论 (美)Thomas H.Cormen, Charles E.Leiserson等著,潘金贵、顾铁龙、李成法和叶懋等译,算法导论(Introduction to Algorit

11、hms),机械工业出版社。(本书的原版由MIT Press出版发行,目前最新版本为第三版。)第16页/共64页 2.3 算法的特性 有穷性:包含有限的操作步骤。 确定性:算法中的每一个步骤都应当是确定的。 有零个或多个输入:输入是指在执行算法时需要从外界取得必要的信息。 有一个或多个输出:算法的目的是为了求解,“解” 就是输出。 有效性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果 。一个算法应该具有以下特点:一个算法应该具有以下特点:第17页/共64页 2.4 算法的表示可以用不同的方法描述算法,常用的有:自然语言传统流程图结构化流程图伪代码PAD图第18页/共64页 2.4.1

12、用自然语言表示算法 自然语言就是人们日常使用的语言,可以是汉语或英语或其它语言。 用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”自然语言表示的含义往往不大严格,要根据上下文才能判断其正确含义描述包含分支和循环的算法时也不很方便。因此,除了那些很简单的问题外,一般不用自然语言描述算法。 第19页/共64页 2.4.2 用流程图表示算法美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:起止框起止框判断框判断框处理框处理框输入输入/输出框输出框注释框注释框流向线流向线连接点连接点第20页/共64页例2.6 将求5

13、!的算法用流程图表示如果需要将最后结果打印出来,可在菱形框的下面加一个输出框。 S1:使t=1。 S2:使i=2。 S3:使t*i,乘积仍放在变量t中,可表示为:t*i-t S4:使i的值加1,即i+1-i。 S5:如果i不大于5,返回重新执行步骤S3,以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。第21页/共64页 例2.7 将例2.2的算法用流程图表示。打印50名 学生中成绩在80分以上者的学号和成绩。第22页/共64页如果包括输入数据的部分,流程图为第23页/共64页 例2.8 将例2.3判定闰年的算法用流程图表示 用流程图表示算法要比用文字描述算法逻辑清晰、易于

14、理解。 第24页/共64页 例2.9 将例2.4的算法用流程图表示 1001991.4131211第25页/共64页 例2.10 将例2.5判断素数的算法用流程图表示 第26页/共64页流程图是表示算法的较好的工具。一个流程图包括以下几部分 :(1)表示相应操作的框;(2)带箭头的流程线;(3)框内外必要的文字说明。 小结第27页/共64页 2.4.3 三种基本结构和改进的流程图1.传统流程图的弊端 传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以毫不受限制地使流程随意地转向,使流程图变得毫无规律,阅读者要花很大精力去追踪流程,使人难以理解算法的逻辑。如下图:

15、第28页/共64页传统流程图的流程可以是: 这种如同乱麻一样的算法称为BS型算法,意为一碗面条(A Bowl of Spaghetti),乱无头绪。缺点:难以阅读、修改,使算法的可靠性和可维护性难以保证。解决办法:必须限制箭头的滥用,即不允许无规律地使流程随意转向,只能顺序地进行下去。 第29页/共64页2.三种基本结构 Bohra和Jacopini提出了以下三种基本结构: 顺序结构、选择结构、循环结构 用这三种基本结构作为表示一个良好算法的基本单元。第30页/共64页三种基本结构的图示: 顺序结构选择结构第31页/共64页循环结构的图示: 当型(While型)循环结构 直到型(Until型)

16、循环 第32页/共64页三种基本结构的共同特点:(1)只有一个入口。 (2)只有一个出口。(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)(3)结构内的每一部分都有机会被执行到。(4)结构内不存在“死循环”(无终止的循环)。 第33页/共64页 图中没有一条从入口到出口的路径通过A框不正确的流程表示:流程内的死循环第34页/共64页小结:由三种基本结构顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。第35页/共64页扩展: 只要

17、具有上述四个特点的都可以作为基本结构。可以自己定义基本结构,并由这些基本结构组成结构化程序。此图符合基本结构的特点第36页/共64页 这是一个多分支选择结构,根据表达式的值决定执行路线。虚线框内的结构是一个入口一个出口,并且有上述全部的四个特点。由此构成的算法结构也是结构化的算法。可以认为这是由三种基本结构所派生出来的。第37页/共64页 2.4.4 用N-S流程图表示算法 1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。 在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其它的、从属于它的框,或者说,由一些基本的框组成

18、一个大的框这种流程图又称N-S结构化流程图。第38页/共64页 N-S流程图用以下的流程图符号: (1)顺序结构(2)选择结构(3)循环结构第39页/共64页 用三种N-S流程图中的基本框,可以组成复杂的N-S流程图。图中的A框或B框,可以是一个简单的操作,也可以是三个基本结构之一。 A框可以是一个选择结构 B框可以是一个循环结构 第40页/共64页例2.11 将例2.1的求5!算法用N-S图表示第41页/共64页例2.12 将例2.2的算法用N-S图表示。(打印50名学生中成绩高于80分的学号和成绩)没有输入数据第42页/共64页例2.12 将例2.2的算法用N-S图表示。(打印50名学生中

19、成绩高于80分的学号和成绩)有输入数据第43页/共64页例2.13 将例2.3判定闰年的算法用N-S图表示第44页/共64页例2.14 将例2.4的算法用N-S图表示1001991.4131211第45页/共64页例2.15 将例2.5判别素数的算法用N-S流程图表示。传统流程图分析:出口1出口2此图不符合基本结构特点!由于不能分解为三种基本结构,就无法直接用N-S流程图的三种基本结构的符号来表示。因此,应当先作必要的变换。第46页/共64页例2.15 将例2.5判别素数的算法用N-S流程图表示。传统流程图变换为:一个出口第47页/共64页用N-S流程图表示:第48页/共64页N-SN-S图表

20、示算法的优点图表示算法的优点 比文字描述直观、形象、 易于理解; 比传统流程图紧凑易画。 尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,N-S流程图中的上下顺序就是执行时的顺序。 用N-S图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自上而下地顺序执行。第49页/共64页小结: 一个结构化的算法是由一些基本结构顺序组成的。 在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构范围之内(如循环中流程的跳转); 一 个非结构化的算法可以用一个等价的结构化算法代替,其功能不变 。 如果一个算法不能分解为若干个基本结构,则它必然不是一个结构化的

21、算法。第50页/共64页 2.4.5 用伪代码表示算法 概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。 特点:它如同一篇文章一样 ,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便 、格式紧凑,也比较好懂,也便于向计算机语言算法(即程序)过渡。 用处:适用于设计过程中需要反复修改时的流程描述。第51页/共64页 IF x is positive THEN print x ELSE print -x也可以用汉字伪代码表示: 若 x为正 打印 x 否则 打印 -x也可以中英文混用,如: IF x 为正 print x ELSE print -x

22、例: “打印x的绝对值”的算法可以用伪代码表示为:第52页/共64页开始 置t的初值为1 置i的初值为2 当i=5,执行下面操作: 使t=ti 使i=i+1 循环体到此结束 输出t的值 结束也可以写成以下形式: BEGIN算法开始 1t 2 i while i5 ti t i+1 i print t END算法结束例2.16 求5!。用伪代码表示算法:第53页/共64页例2.17 输出50个学生中成绩高于80分者的学号和成绩。用伪代码表示算法:BEGIN算法开始 1 i while i50 input ni and gi i+1 i 1 i while i50 if gi80 print ni

23、 and gi i+1 i END算法结束第54页/共64页 2.4.6 用计算机语言表示算法 概念:用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程序才能被计算机执行。因此在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。 特点:用计算机语言表示算法必须严格遵循所用的语言的语法规则,这是和伪代码不同的。 用处:要完成一件工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。第55页/共64页#include void main( ) int i,t; t=1; i=2; while(i=5) t=t*i; i=i+1; printf(

24、%dn,t); 例 2.20 将例2.16表示的算法(求5!)用C语言表示。第56页/共64页 应当强调说明:写出了C程序,仍然只是描述了算法,并未实现算法。只有运行程序才是实现算法。应该说,用计算机语言表示的算法是计算机能够执行的算法。第57页/共64页 2.5 结构化程序设计方法 一个结构化程序 就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、便于阅读、便于修改和维护。 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和

25、处理的范围内。 第58页/共64页采取以下方法来保证得到结构化的程序: 自顶向下; 逐步细化; 模块化设计; 结构化编码。两种不同的方法: 自顶向下,逐步细化; 自下而上,逐步积累。第59页/共64页 用这种方法逐步分解,直到作者认为可以直接将各小段表达为文字语句为止。这种方法就叫 做“自顶向下,逐步细化”。 第60页/共64页自顶向下,逐步细化方法的优点: 考虑周全,结构清晰,层次分明,作者容易写,读者容易看。 如果发现某一部分中有一段内容不妥,需要修改,只需找出该部分修改有关段落即可,与其它部分无关。 我们提倡用这种方法设计程序。这就是用工程的方法设计程序。第61页/共64页模块设计的方法:模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务,每一个子任务就相对简单了。在拿到一个程序模块以后,根据程序模块的功能将它划分为若干个子模块,如果这些子模块的规模还嫌大,还再可以划分为更小的模块。这个过程采用自顶向下方法来实现。子模块一般不超过50行。划分子模块时应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好。 第62页/共64页第二章 总结 主要内容: 算法的概念和简单算法举例 算法的表示 传统流程图 N-S结构化流程图 伪代码 结构化程序设计方法第63页/共64页感谢您的观看。第64页/共64页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!