版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 程序灵魂算法,2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 算法的表示 2.5 结构化程序设计方法,程序:是计算机执行的一组有限操作序列的集合(描述) 。一个程序应包括两个方面的内容: 对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm) 著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序 完整的程序设计应该是: 数据结构算法程序设计方法语言工具,2.1 算法的概念,从事各种工作和活动,都必须事先想好进行的步骤,然后按部就班地进行,才能避免产生错乱。 不要认为只有“计算”的问题才有算法。广义地说,为解决一
2、个问题而采取的方法和步骤,就称为“算法”。 对同一个问题,可以有不同的解题方法和步骤。方法有优劣之分。有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用简单的和运算步骤少的方法。因此 ,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。,例1: 求12345。 最原始的方法是: 步骤1: 先求12,得到结果2。 步骤2: 将步骤1得到的结果乘以3,得到结果6。 步骤3: 将6乘以4,得24。 步骤4: 将24乘以5,得120。这就是最后的结果。 这样的算法虽然是正确的,但太繁琐。如果要求121000,则要写999个步骤,显然是不可取的。而且每次
3、都直接使用上一步骤的数值结果,也不方便。应当找到一种通用的表示方法。,2.2 简单算法举例,可以设两个变量,一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而直接将每一步骤的乘积放在被乘数变量中。今设p为被乘数,i为乘数。用循环算法来求结果。可以将算法改写如下: S1: 使p=1 S2: 使i=2 S3: 使pi,乘积仍放在变量p中,可表示为pi=p S4: 使i的值加1,即i+1 = i S5: 如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则,算法结束。最后得到p的值就是5!的值。,上面的S1,S2代表步骤1,步骤2S是step(步)的缩写。这是写算法的习惯
4、用法。 仔细分析这个算法,能得到预期的结果。显然这个算法比前面列出的算法简练。 如果题目改为求1357911。 算法只需作很少的改动即可: S1: 1=p S2: 3=i S3: pi=p S4: i+2=i S5: 若i11,返回S3; 否则,结束。,例2:有50个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1代表第一个学生学号,ni代表第i个学生学号。用g代表学生成绩,gi代表第i个学生成绩,算法可表示如下。 S1:1=I S2:如果gi80,则打印ni和gi,否则不打印 S3:i+1=I S4:如果i50,转S2,继续执行;否则,算法结束。 本例中,变量i作为下标
5、,用它来控制序号(第几个学生,第几个成绩)。当i超过50时,表示已对50个学生的成绩处理完毕,算法结束。,例3:求1-1/2+1/3-1/4+1/99-1/100。 算法可以表示如下: S1:1=sign S2:1=sum S3:2=deno S4:(-1)sign=sign S5:sign(1/deno)=term S6:sum+term=sum S7:deno+1=deno S8:若deno100返回S4;否则算法结束。,算法(Algorithm):是对特定问题求解方法(步骤)的一种描述。一个算法应该具有以下特点: 1 有穷性 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完
6、成。 事实上,“有穷性”往往指“在合理的范围之内”。 2 确定性 算法中的每一个步骤都应当是确定的(有确切的含义),而不应当是含糊的、模棱两可的(没有二义性)。,2.3 算法的特性,3 可行性 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。 4 输入 所谓输入是指在执行算法时需要从外界取得必要的信息。一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。一个算法也可以没有输入。 5 输出 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。算法的目的是为了求解,“解” 就是输出。没有输出的算法是没有意义的。,算法和程序是两个不同的概念。一个计
7、算机程序是对一个算法使用某种程序设计语言的具体实现。算法必须可终止意味着不是所有的计算机程序都是算法。,可以用不同的方法表示一个算法。常用的有自然语言、传统流程图、结构化流程图、伪代码、PAD图等。 2.4.1 用自然语言表示算法 在2.2节中介绍的算法是用自然语言表示的。自然语言表示算法的特点: 用自然语言表示通俗易懂; 文字冗长, 容易出现“歧义性”; 描述包含分支和循环的算法,不很方便。 除很简单的问题外,一般不用自然语言描述算法。,2.4 算法的表示,1 基本流程图符号 流程图是用一些图框表示各种操作。用图形表示算法,直观形象,易于理解。美国国家标准化协会ANSI(American N
8、ational Standard Institute)规定了一些常用的流程图符号,如图2.1所示。,2.4.2 用流程图表示算法,在开始或结束框中分别写上开始(start)或结束(end),表明程序由此开始或结束; 在输入或输出框中写上要输入或输出的内容; 处理框中给出处理的内容; 棱形框用于对一个给定的条件进行判断,根据条件是否成立来决定如何执行以后的操作,通常是一个入口两个出口。 用流程图表示的程序结构如图2.2所示。 2 程序基本结构的流程图 顺序结构:如图2.2(a)所示。 选择结构或称分支结构:如图2.2(b)、(c)所示。, 循环结构。有两类循环结构: 当型(while型)循环结构
9、 如图2.2(d)。执行过程:当给定的条件p成立时,执行A框操作,执行完A后再判断条件p是否成立,如果仍然成立,再执行A框,如此反复,直到某一次p条件不成立为止,此时不执行A框,循环结束。 直到型(Until型)循环 如图2.2(e)。执行过程:先执行A框操作,然后判断给定的条件p是否成立?如果条件p不成立,则再执行A,然后再对条件p作判断,如果p条件仍然不成立,又执行A如此反复执行A,直到给定的条件p成立为止,此时不再执行A,循环结束。,例4:求1-1/2+1/3-1/4+1/99-1/100的程序框图如右图2.3所示。 三种基本结构的共同特点是: 只有一个入口。 只有一个出口。注意,菱形判
10、断框有两个出口,而选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。, 结构内的每一部分都有机会被执行。对每一个框来说,都应有一条从入口到出口的路径通过它。 结构内不存在“死循环”(无终止的循环)。 已经证明,由以上三种基本结构顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法,它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。 实际上,基本结构不一定只限于上面三种,只要具有上述4个特点的都可以作为基本结构,P26的图2-22和图2-23可以看成是由三种基本结构派生的。人们可以自己定义基本结构,并由这些基本结构组成结构化程序
11、。,1973年,I.Nassi和B.Shneiderman提出了一种新的流程图形式。这种流程图中完全去掉了传统流程图中的箭头,全部算法写在一个矩形框中,该框中还可以包含有其它的从属框。用N-S图表示的程序结构如图2.4所示。,2.4.3 用N-S图表示算法,例5:求1-1/2+1/3-1/4+1/99-1/100的N-S图如下图2.5所示。 例6:判断一个正整数是否是素数的N-S图如右图2.6所示。,用传统的流程图和N-S图表示算法,直观易懂,但画起来比较费事。因此,流程图适宜表示一 个算法,但在设计算法过程中使用不是很理想。为了设计算法时方便,常用一种称为伪代码(pseudo code)的工
12、具。 伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。 它如同一篇文章,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便 、格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。,2.4.4 用伪代码表示算法,例如, “打印x的绝对值”的算法用伪代码表示如下: IF x is positive THEN print x ELSE print x 也可以用汉字伪代码,如: 若 x为正 打印 x 否则 打印 x 也可以中英文混用,如: IF x 为正 print x ELSE print x,即计算机语言中具有的语句关键字用英文表示,其他的可用汉字
13、表示。总之,以便于书写和阅读为原则。 用伪代码写算法并无固定的、严格的语法规则,只要把意思表达清楚,并且书写的格式要写成清晰易读的形式。,一个结构化程序:用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序。 这种程序便于编写、便于阅读、便于修改和维护。 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。 用这种方法逐步分解,直到作者认为可以直接将各小段表达为文字语句为止。这种方法就叫 做“自顶向下,逐步细化”。,2.5 结构化程序设计方法,自顶向下,逐步细化方法的优点: 考虑周全,结构清晰,层次分明。作者容易写,读者容易看。 易于修改。如果发现某一部分中有一段内容不妥,需要修改,只需找出该部分修改有关段落即可,与其它部分无关。 我们提倡用这种方法设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/TMAC 171-2025通用视觉检测设备技术要求与试验方法
- T/CES 108-2022气体绝缘金属封闭开关设备用双断口隔离开关
- T/CAQI 452-2025芯片封装质量等级评估
- T/CAAPA 0003-2020大型游乐设施售后服务评价指标体系
- T/BAX 0006.5-2025视频图像感知智能应用适配技术要求 第5部分:算法算力服务管理平台
- DB32/T 4716-2024小麦病虫害防治药剂有效性评价技术规范
- T/CACE 023-2025废弃电器电子产品制冷剂分类、回收与再生技术规范
- 供应商年度评估流程SOP-含评估表和评级标准
- 《城市标志》教学设计-2026-2027学年鲁教版(五四学制)(新教材)初中美术七年级上册
- T/CAEE 10-2022家电产品全生命周期追溯体系设计指南
- 2026年科研诚信建设培训课件(精讲版)
- 中国人寿保险集团笔试题目
- 2026年浙江省宁波慈溪观海卫镇人民政府招聘编外13人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年秋新教材教科版五年级科学上册教学计划及进度表
- (2026年秋)外研社版六年级英语上册单词默写表(汉译英)
- 北理 光电成像原理与技术4-辐射源与典型景物辐射教学课件
- IPC7711C7721C-2017(CN)电子组件的返工修改和维修(完整版)
- 人教版(2024)八年级上册数学全册教案
- 学堂在线 研究生学术与职业素养讲座 章节测试答案
- 航空活塞发动机构造第二章航空活塞发动机构造课件
- Nikon尼康D3100中文说明书
评论
0/150
提交评论