第2章-程序设计的灵魂-算法概要.ppt_第1页
第2章-程序设计的灵魂-算法概要.ppt_第2页
第2章-程序设计的灵魂-算法概要.ppt_第3页
第2章-程序设计的灵魂-算法概要.ppt_第4页
第2章-程序设计的灵魂-算法概要.ppt_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章程序的灵魂-算法,主要内容,算法的概念简单算法举例算法的特点算法的表示方法,程序设计包括两个方面内容:,1.对数据的描述(数据结构),数据的类型数据的组织形式,2.对操作的描述(算法),程序=算法+数据结构+程序设计方法+语言工具和环境在设计一个程序时,要综合运用这几方面的知识。算法是灵魂,数据结构是加工对象,语言是工具。,计算机科学家沃思(NikiklausWirth)公式:数据结构+算法=程序,做任何事情都用一定的步骤,例如炒菜有以下几个步骤:,2.1算法的概念,2.1算法的概念,为解决一个问题而采取的方法和步骤,就称为算法。,大学新生报到太极拳图解,计算机算法可分为:数值运算算法、非数值运算算法。,数值运算:求数值解;非数值运算:常用于事务管理领域,如图书检索、人事管理、行车调度管理等。,什么是程序设计?为计算机编写程序的过程。程序设计最主要的工作就是算法设计。什么是程序设计语言?在程序设计过程中,用于编写程序的语言。,问题定义,总体/详细设计,编程,运行,编写C语言程序的大体步骤:,2.1算法的概念,例:设计用算法实现S=1+2+3+100,算法1:开辟一存储单元S用S存放累加和1、将累加单元S清零2、把1加到S中3、把2加入到S中100、把100加到S中101、输出S中的结果,算法2:开辟一个累加单元S,再开辟一个记数单元i,S1:将累加单元S清零,S2:将记数单元i置一,S3:将i加到S中,S4:记数单元i的值增一,S5:如果i的值等于100则执行下一步,否则转到第S3,S6:输出S的值,2.2算法举例,2.3算法的特性一个算法应当具有五大特性:1、有穷性:算法包含的操作步骤有限2、确定性:算法每一步的操作步骤都是确定的,不能模棱两可3、有零个或多个输入:在执行算法时从外界取得必要的信息4、有一个或多个输出:即算法的求解5、有效性:算法中每一个步骤都应当能有效执行,1、自然语言描述法:,3、伪码方法:,2、图示法:,(2)算法结构图(N-S图),(1)算法流程图,2.4算法的表示方法,4、计算机语言,2.4算法的表示方法,1、自然语言描述法:自然语言就是人们日常使用的语言,可以是汉语或英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。,Q:将分别装有醋(A杯)和酱油(B杯)的两个杯子里面的内容交换。,分析:借用第三个杯子(空杯),(1)算法流程图,采用具有特定含义的图框和流线表示算法直观形象,易于理解,2、图示法:,2.4算法的表示方法,起止框:算法的开始和结束一般处理框:表示赋值、加减等操作判断框:根据给定的条件决定执行几条路径中的某一条路径输入输出框:表示输入输出操作流程线:表明程序流程的方向,结构化程序设计的三种基本结构:顺序、选择和循环,顺序结构,(1)算法流程图,Q:键盘输入两个数x1和x2,要求交换后实现输出。,开始,输入x1,x2,Temp=x1,x1=x2,x2=Temp,x1,x2,结束,选择结构,(1)算法流程图,Q:键盘输入任意数并输出其平方根。,开始,X1,X1=0,Y1=sqrt(x1),Y1,结束,N,Y,开始,x1,x1=0,Y1=sqrt(x1),Y1,结束,N,Y,当型(While型)循环结构,直到型(Until型)循环,(1)算法流程图,例1:将求5!的算法用流程图表示,算法:s1:使t=1s2:使i=2s3:使t*i,乘积仍放在变量t中。s4:使i的值加1s5:如果i不大于5,返回重新执行步骤3以及其后的步骤4和5,否则算法结束。最后得到的t值就是5!的值。,例2:对一个大于或等于3的正整数,判断它是否是一个素数。,分析:判断一个数n(n3)是否素数的方法:将n作为被除数,将2到(n-1)各个整数轮流作为除数,如果都不能被整除,则n为素数。,概念:所谓素数,是指除了1和该数本身之外,不能被其它任何整数整除的数。例如,13是素数。因为它不能被2,3,4,12整除。,算法描述:S1:输入n的值S2:i=2(i作为除数)S3:n被i除,得余数rS4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束。否则执行S5S5:i+1iS6:如果in-1,返回S3。否则打印n“是素数”。然后结束。,流程图小结,流程图是表示算法的较好的工具。一个流程图包括以下几部分:(1)表示相应操作的框;(2)带箭头的流程线;(3)框内外必要的文字说明。缺点:占用篇幅较多,尤其是算法比较复杂时,画流程图既费时又不方便,(2)算法结构图(N-S图),1)顺序结构框图,一系列顺序执行的操作,2)选择结构框图,若条件成立,则执行操作;否则执行操作。,条件,成立,操作,不成立,操作,2、图示法:,)循环结构框图,直到型循环:先做后判,循环体,直到条件成立,重复执行操作,直到条件成立则退出本循环,执行下一操作。,当型循环:先判后做,循环体,当条件成立,当条件成立,则重复执行操作,直到条件不成立为止。,2、图示法:,(2)算法结构图(N-S图),例3:设计用N-S图实现S=1+2+3+100的算法,算法描述:开辟一个累加单元S,再开辟一个记数单元i。,s1、将累加单元S清零,s2、将记数单元i置一,s3、将i加到S中,s4、记数单元i的值增1,s5、如果i的值小于或等于100执行第3,4步,否则执行下一步。,s6、输出S的值,算法结构图:,S=0,I=0,S=I+S,I=I+1,直到I100,输出结果S,循环体,例4:某班学生30人,将成绩大于80分者打印其学号和成绩,算法描述:,i=1,i=i+1,直到i30,用Ni表示第i个学生的学号;用Gi表示第i个学生的成绩,是,打印Ni,Gi,否,算法结构图:,s1.将i置一,s2.输入Ni,Gi,s7.i的值增一,s8.如果i31返回第6步;否则算法结束,Gi80,s6.如果Gi80则打印Ni,Gi否则不打印,s4.如果i30,s3.i的值增一,例5:已知N=50,计算,算法结构图1:,算法结构图2:,S=0,S=0,N=0,N=0,N=N+1,N=N+1,直到N=50,当N50,S=S+S1,S=S+S1,输出结果S,输出结果S,直到型,当型,N-S图表示算法的优点,比文字描述直观、形象、易于理解;比传统流程图紧凑易画。尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,N-S流程图中的上下顺序就是执行时的顺序。用N-S图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自上而下地顺序执行。,例:判定20002500年中的每一年是否闰年,将结果输出。将该算法分别用自然语言,流程图和N-S图分别进行描述。,分析:闰年的条件(1)能被4整除,但不能被100整除的年份都是闰年,如1996,2004年是闰年;(2)能被100整除,又能被400整除的年份是闰年。如1600,2000年是闰年。不符合这两个条件的年份不是闰年。,设y为被检测的年份,算法可表示如下:S1:2000yS2:若y不能被4整除,则输出y“不是闰年”。然后转到S6。S3:若y能被4整除,不能被100整除,则输出y“是闰年”。然后转到S6。S4:若y能被100整除,又能被400整除,输出y“是闰年”,否则输出“不是闰年”。然后转到S6。S5:输出y“不是闰年”。S6:y+1yS7:当y2500时,转S2继续执行,如y2500,算法停止。,判定闰年的算法用流程图表示:,用流程图表示算法要比用文字描述算法逻辑清晰、易于理解。,判定闰年的算法用N-S图表示,3、伪代码,概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。特点:它如同一篇文章一样,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便、格式紧凑,也比较好懂,也便于向计算机语言算法(即程序)过渡。用处:适用于设计过程中需要反复修改时的流程描述。,开始置t的初值为1置i的初值为2当i=5,执行下面操作:使t=ti使i=i+1循环体到此结束输出t的值结束,也可以写成以下形式:BEGIN算法开始1t2iwhilei5titi+1iprinttEND算法结束,例:求5!用伪代码表示算法,4、计算机语言表示,#includevoidmain()inta;printf(inputanumber:”);sca

温馨提示

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

评论

0/150

提交评论