ImageVerifierCode 换一换
格式:PPT , 页数:36 ,大小:637.50KB ,
资源ID:2648507      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2648507.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第2章算法--C语言程序设计(谭浩强第三版).ppt)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第2章算法--C语言程序设计(谭浩强第三版).ppt

1、1第二章 算法算法的概念 算法的特性算法的表示方法结构化程序设计方法 2引言:引言:一、一个程序应包括两个方面的内容一、一个程序应包括两个方面的内容:对数据的对数据的描述:数据结构描述:数据结构(data structure)(data structure)对操作的描述:算法对操作的描述:算法(algorithm)(algorithm)著名计算机科学家沃思提出一个公式著名计算机科学家沃思提出一个公式:数据结构数据结构+算法算法=程序程序 数据结构算法程序设计方法语言工具数据结构算法程序设计方法语言工具完整的程序设计应该是完整的程序设计应该是:描述描述数据的数据的类型、类型、数据的组织形式数据的

2、组织形式描述对数据的描述对数据的操作步骤操作步骤程序设计方法:结构化程序设计方法程序设计方法:结构化程序设计方法语言工具:语言工具:c语言语言3二、简单的程序设计一般包括:二、简单的程序设计一般包括:1、确定数据结构、确定数据结构2、确定算法、确定算法3、编码、编码4、调试程序、调试程序5、整理并写出文档资料、整理并写出文档资料4 2.1 算法的概念例如:描述太极拳动作的图解,就是太极拳的算法。一首歌曲的乐谱,也可以称为该歌曲的算法。1、算法定义:广义地说,为解决一个问题而采取的方法和步算法定义:广义地说,为解决一个问题而采取的方法和步 骤,就称为骤,就称为“算法算法”。2、对同一个问题,可以

3、有不同的解题方法和步骤。算法、对同一个问题,可以有不同的解题方法和步骤。算法决定决定 事情的成败、效率和代价的高低。事情的成败、效率和代价的高低。算法的时空效率算法的时空效率 选择既运算快、内存开销小的算法选择既运算快、内存开销小的算法3 3、计算机算法可分为两大类别:、计算机算法可分为两大类别:数值运算算法:求数值解,例如求方程的根非数值运算算法:包括的面十分广泛,如图书检索、人事管理、行车调度管理等。高斯算法高斯算法52.2 算法的特性(1)有穷性有穷性。一个算法应包含有限的操作步骤,不能是无限的。一个算法应包含有限的操作步骤,不能是无限的。(2)确定性确定性。算法中的每一个步骤都应当是确

4、定的,而不应当是。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。对于相同输入必须得到相同结果。含糊的、模棱两可的。对于相同输入必须得到相同结果。(3)有零个或多个输入有零个或多个输入。所谓输入是指在执行算法时需要从外界。所谓输入是指在执行算法时需要从外界取得必要的信息。取得必要的信息。(4)有一个或多个输出有一个或多个输出。算法的目的是为了求解,。算法的目的是为了求解,“解解”就是输就是输出。出。(5)有效性有效性。算法中的每一个步骤都应当能有效地执行,并得到。算法中的每一个步骤都应当能有效地执行,并得到确定的结果。确定的结果。62.3 算法的表示为了表示一个算法,可以用不同

5、的方法。归纳为两大类为了表示一个算法,可以用不同的方法。归纳为两大类:(1)文字)文字 (2)图形(符号)图形(符号)常用的方法有:常用的方法有:自然语言自然语言传统流程图传统流程图N-S流程图流程图 伪代码伪代码PAD图等。图等。7 2.3.1 用带序号的自然语言直接表示算法用带序号的自然语言直接表示算法(例例2.1-例例2.5)自然语言就是人们日常使用的语言,可以是汉语或英语自然语言就是人们日常使用的语言,可以是汉语或英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现出现“歧义性歧义性”。8例例2.1求求12345算法1:步骤1

6、:先求12,得到结果2。步骤2:将步骤1得到的乘积2再乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。如果要求121000,则要写999个步骤算法2:上述算法太繁琐,我们找一种通用的表示方法。s1:设变量p,代表被乘数,p=1;s2:设变量i,代表乘数,i=2;s3:使pi,乘积仍放在被乘数变量p中,可表示为:p i p;s4:使i的值加1,即i+1 i;s5:如果i不大于5,返回重新执行步骤s3以及其后的s4、s5;否则,算法结束。最后得到的p就是5!的值。9求求 13579 11上述算法稍作改动:s1:1 p;s2:3 i;s3:p i p;s4:i+2

7、 is5:若i11,返回s3;否则,结束。用这种方法表示的算法具有通用性、灵活性。s3到s5 组成一个循环,在实现算法时,要反复多次执行s3、s4、s5等步骤,直到某一时刻,执行s5步骤时经过判断,乘数i已超过规定的数值而不返回s3步骤为止。此时,算法结束,变量P的值就是结果。计算机实现循环是轻而易举。所有高级语言中都有实现循环的语句。10例例2.2有有50个学生,要求将他们之中成绩在个学生,要求将他们之中成绩在80分以上的学号和分以上的学号和成绩输出成绩输出n ni i代表第代表第i i个学生学号。个学生学号。g gi i代表第代表第i i个学生成绩,算法如下:个学生成绩,算法如下:S S1

8、 1:1 1i iS S2 2:如果:如果g gi i 8080,则输出,则输出n ni i和和g gi i;否则不输出;否则不输出S S3 3:i i+1+1i iS S4 4:如果:如果i i 5050,返回,返回S S2 2,继续执行;否则,算法结束。,继续执行;否则,算法结束。本例中,变量本例中,变量i i作为下标,用它来控制序号(第几个学生,第作为下标,用它来控制序号(第几个学生,第几个成绩)。当几个成绩)。当 i i超过超过5050时,表示已对时,表示已对5050个学生的成绩处理完个学生的成绩处理完毕,算法结束。毕,算法结束。11例2.3判定2000-2500年中的每一年是否是闰年

9、闰年的条件是:(1)能被4整除,但不能被100整除的年份是闰年,如1996年、2004年;(2)能被400整除的年份是闰年,如1600年、2000年。设y为被检测的年份。可采用以下步骤:S1:2000yS2:若y不能被4整除,则输出“y不是闰年”。然后转到S6S3:若y能被4整除,不能被100整除,则输出“y是闰年”。然后转到S6S4:若y能被400整除,输出“y是闰年”,然后转到S6S5:输出“y不是闰年”S6:y+1yS7:当y2500时,转S2继续执行,否则算法停止。12例2.4求1-1/2+1/3-1/4+1/99-1/100算法如下:S1:sign=1;/作为加数符号S2:sum=1

10、;/sum作为累加变量S3:deno=2;/作为加数分母S4:sign=(-1)*signS5:term=sign*(1/deno)/term作为加数S6:sum=sum+termS7:deno=deno+1S8:若deno100返回S4;否则算法结束。13 2.3.2 用流程图表示算法用流程图表示算法 流程图:用一些约定的几何图形来描述算法。用某种图框表示 某种操作,用箭头表示算法流程。美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:起止框起止框判断框判断框处理框处理框输入输入/输出框输出框注释框注释框流向线流

11、向线连接点连接点14例例2.6将例将例2.1求求5!的算法用流程图表示的算法用流程图表示用图框来表示各种算法:灵用图框来表示各种算法:灵活、自由、直观、形象、直活、自由、直观、形象、直观,可表示任何算法。观,可表示任何算法。15 2.3.3 三种基本结构和改进的流程图三种基本结构和改进的流程图1.传统流程图的弊端 传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以毫不受限制地使流程随意地转向,使流程图变得毫无规律。如图:解决办法:必须限制箭头的滥用,即不允许无规律地使流程随意解决办法:必须限制箭头的滥用,即不允许无规律地使流程随意转向,只能顺序地进行下去,改进为

12、:只有三种基本结构的流程图转向,只能顺序地进行下去,改进为:只有三种基本结构的流程图 162.2.三种基本结构三种基本结构 19661966年,年,BohraBohra和和JacopiniJacopini提出了以下三种基本结构:提出了以下三种基本结构:顺序结构、顺序结构、选择结构、选择结构、循环结构循环结构 用这三种基本结构作为表示一个良好算法的基本单元。用这三种基本结构作为表示一个良好算法的基本单元。现在:任何复杂的算法都是由这三种基本结构按一定规现在:任何复杂的算法都是由这三种基本结构按一定规律组成。律组成。17三种基本结构的图示:三种基本结构的图示:顺序结构顺序结构18选择结构选择结构菱

13、形代表条件判断分段函数int max(int x,int y)if(xy)z=x;else z=y;19循环循环结构的图示:结构的图示:当型当型(While型型)循环结构循环结构 直到型直到型(Until型型)循环循环 20三种基本结构,有以下共同点:三种基本结构,有以下共同点:(1)(1)只有一个入口:不得从结构外随意转入结构中某点。只有一个入口:不得从结构外随意转入结构中某点。(2)(2)只有一个出口:不得从结构内某个位置随意转出(跳出)。只有一个出口:不得从结构内某个位置随意转出(跳出)。(请注意:一个菱形判断框有两个出口,而一个选择结构只有一(请注意:一个菱形判断框有两个出口,而一个选

14、择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)个出口。不要将菱形框的出口和选择结构的出口混淆。)(3)(3)结构中的每一部分都有机会被执行到。(没有结构中的每一部分都有机会被执行到。(没有“死语句死语句”)(4)(4)结构内不存在结构内不存在“死循环死循环”(无终止的循环)(无终止的循环)已经证明:由三种基本结构顺序组成的算法结构,可以解决任何已经证明:由三种基本结构顺序组成的算法结构,可以解决任何复杂问题。由基本结构组成的算法属于复杂问题。由基本结构组成的算法属于“结构化结构化”算法。算法。21扩展:扩展:只要具有上述四个特点只要具有上述四个特点的都可以作为基本结构。的都可以

15、作为基本结构。可以自己定义基本结构,可以自己定义基本结构,并由这些基本结构组成并由这些基本结构组成结构化程序结构化程序。22例例2.6 将求将求5!的算法用流程图表示的算法用流程图表示如果需要将最后结果打印出来,可在菱形框的下面加一个输出框。23 2.3.4 用N-S流程图表示算法 19731973年美国学者年美国学者I.NassiI.Nassi和和B.ShneidermanB.Shneiderman提出了一种提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包流程线。全部算法写在一个矩

16、形框内,在该框内还可以包含其它的从属于它的框,或者说,由一些基本的框组成一含其它的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图又称个大的框。这种流程图又称N-SN-S结构化流程图。结构化流程图。24(1)顺序结构:顺序结构:A和和B两个框组成一个顺序结构。两个框组成一个顺序结构。(2)选择结构:当条件选择结构:当条件p成立时执行操作成立时执行操作A,条件,条件p不成立则不成立则执行操作执行操作B。25(3)循环结构:循环结构:当型循环结构下,图符表示先判断后执行,当条件p成立时反复执行操作A,直到条件p不成立为止。直到型循环结构下,图符表示先执行后判断,当条件p不成立时反复执行A操作,直到p条件成立为止。26 用三种用三种N-SN-S流程图中的基本框,可以组成复杂的流程图中的基本框,可以组成复杂的N-SN-S流程图。流程图。图中的图中的A A框或框或B B框,可以是一个简单的操作,也可以是三个基本框,可以是一个简单的操作,也可以是三个基本结构之一。结构之一。A框可以是一个选择结构 B框可以是一个循环结构 27例例2.11 2.11 求求5!5!算法用算法用N-SN-S

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1