已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
知识改变命运 学习成就未来,2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法,第2章 程序的灵魂算法,本章大纲,程序的灵魂算法(1学时) 教学内容: 算法的概念 算法的特性; 算法的常用表示方法:流程图 基本要求: 理解算法的概念及特性; 了解怎样设计算法; 掌握算法的表示方法; 熟悉结构化程序设计方法。 重点:算法的常用表示方法 难点:算法的常用表示方法,2.1 算法的概念,广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。,算法成熟,已汇编成册,种类繁多,要求各异,难规范化,非数值运算算法,数值运算算法,2.2 简单算法举例,步骤1: 先求12,得到结果2。 步骤2: 将步骤1得到的乘积2再乘以3,得到结果6。 步骤3: 将6再乘以4,得24。 步骤4: 将24再乘以5,得120。,如果想求121000, 难道要写999个步骤吗?,例2.1 求12345。,理解,设两个变量,一个变量p代表被乘数,一个变量i代表乘数,乘积放在被乘数变量p中。将算法改写如下: 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!的值。,循环算法解决 这类问题最拿手了!,如果求1357911 怎么办呢?自己想想啦!,2.3 算法的特性,1.有穷性,1.包含有限的操作步骤 2.指“在合理的范围之内” 3. “合理限度” ,由人们的常识和需要而定,算法中的每一个步骤都应当是确定的,2.确定性,理解,3.有零个或多个输入,所谓输入是指在执行算法时需要从外界取得必要的信息。,每个步骤都应当能有效地执行,并得到确定的结果。,4. 有一个或多个输出,5. 有效性,没有输出的算法是没有意义的。,图2.2,3个输入,1个输出,算法,求3个数中的最大的数,a,b,c,3个数中的最大的数,补充内容:算法的评价,1.时间复杂度,2.空间复杂度,度量算法执行的时间长短,度量算法所需存储空间的大小,了解,2.4 怎样表示一个算法,自然语言 传统流程图 结构化流程图 N-S流程图 伪代码 PAD图 计算机语言,2.4.1 用自然语言表示算法,通俗易懂,1.文字冗长,尤其是描述分支和循环的算法,不方便 2.容易出现“歧义性”。,张先生对李先生说他的孩子考上了大学。,到底谁考上了?,张先生的孩子考上了?,李先生的孩子考上了?,了解,2.4.2 用流程图表示算法,用一些图框表示各种操作,直观形象,易于理解。规定了一些常用的流程图符号(见图2.3)。,起止框,输入/输出框,判断框,掌握,图 2.3,处理框,流程线,连接点,注释框,例2.6 将例2.1求5!的算法用流程图表示。,2.4.3 三种基本结构和改进的流程图,1. 传统流程图的弊端,1.对流程线的使用没有严格限制 2.使流程图变得毫无规律。 3.算法难以阅读,也难以修改 4.算法的可靠性和可维护性难以保证,(1) 顺序结构,如图2.14所示,虚线框内是一个顺序结构。,2. 三种基本结构,1966年,Bohra和Jacopini提出的,图2.14,(2) 选择结构(选取结构,分支结构)如图2.15所示。,无论 p 条件是否成立,只能执行A框或B框之一,在执行完A或B之后,都经过b点,然后脱离本选择结构,A或B两个框中可以有一个是空的,图2.15,图2.16,(3) 循环结构:,我也叫重复结构,1.是当给定的条件p1成立时,执行A框操作 2.执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框 3.如此反复执行A框,直到某一次p1条件不成立为止,此时不执行A框, 4.从b点脱离循环结构, 当型(While型)循环结构,对应while语句,1.它的功能是先执行A框,然后判断给定的p2条件是否成立2.如果p2条件不成立,则再执行A,然后再对p2条件作判断,如果p2条件仍然不成立,又执行A 3.如此反复执行A,直到给定的p2条件成立为止,此时不再执行A 4.从b点脱离本循环结构。,直到型(Until型)循环,C语言中没有until语句,图2.18当型循环,风把门吹开了。,门被风吹开了。,图2.19直到型循环,意思相同,可以互相转换,(1) 只有一个入口。 (2) 只有一个出口。 (3) 结构内的每一部分都有机会被执行到。 (4) 结构内不存在“死循环”,菱形判断框有两个出口。不要混淆哦!,看清楚哦,是有机会,不是一定!,三种基本结构的特点:,图2.20 没有通路,图2.21 死循环,2.4.4 用N-S流程图表示算法,1.1973年美国学者I.Nassi和B.Shneiderman提出 2.去掉了带箭头的流程线 3.全部算法写在一个矩形框内 4.自上而下执行 5.适于结构化程序设计 6.尤其适合表达复杂的循环结构,(2) 选择结构,(1) 顺序结构,图2.24,图2.25,N-S流程图用以下的流程图符号:,像不像一个 方方正正的盒子? 所以也叫盒图!,图2.26当型循环,(3) 循环结构,图2.27直到型循环,图2.28,(3) 示例:,2.4.5 用伪代码表示算法,1.直观易懂 2.画起来比较费事 3.流程图适宜表示一 个算法,1.伪代码 (pseudo code)是用介于自然语言和计算机语言之间的文字和符号来描述算法。 2.不用图形符号,书写方便 、格式紧凑 3.适于设计算法 4.比较好懂,便于向计算机语言算法(即程序)过渡,IF x is positive THEN print x ELSE print x,伪意思是假的,不真实的,如:伪军,伪君子,伪代码不能运行,IF x 为正 print x ELSE print x,例如, “打印x的绝对值”的算法可以用伪代码表示如下:,若 x为正 打印 x否则 打印 x,IF x is positive THEN print x ELSE print x,2.4.6 用计算机语言表示算法,不再是表示算法,而是用计算机语言来实现算法,计算机是无法识别流程图和伪代码的。,例2.20 将例2.16表示的算法(求5!)用C语言表示。,main( ) int i,t; t=1; i=2; while(i=5) t=t*i; i=i+1; printf(“%d“,t); ,补充内容:PAD图,1.PAD (Problem Analysis Diagram)即问题分析图 2.1973年由日本日立公司发明,得到一定程度的推广 3.它用二维数形结构的图表示程序的控制流,将这种图转换为程序代码比较容易。,优点 : 1.程序结构十分清晰 2.易读、易懂、易记。程序自上而下,从左到右顺序执行 3.很容易将PAD图转换成高级程序语言源程序,由软件工具自动完成提高可靠性和生产率。 4.既可用于表示程序逻辑,也可用于描述数据结构,了解,PAD图的基本符号,2.5 结构化程序设计方法,自顶向下; 逐步细化; 模块化设计; 结构化编码,1.模块化思想:“分而治之” 2.模块划分的原则:聚合度高,耦合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 集团有限公司校园招聘考前自测高频考点模拟试题参考答案详解
- 食源性疾病培训总结
- 高危孕产妇管理试题及答案选择题
- 评价培训课件
- 消防自救逃生培训课件
- 设计综合素质培训
- 女儿高三成人礼一封书信
- 危机公关信息发布流程
- 2025-2030葡萄牙旅游业市场消费趋势与品牌竞争力研究
- 2025-2030药用饲料出口市场准入壁垒与国际化布局战略研究报告
- 消防工程施工资料管理与规范
- 《2025年CSCO非小细胞癌诊疗指南》解读
- 在线网课学习课堂《人工智能(北理 )》单元测试考核答案
- 摩托车新车寄售协议书范文范本
- DL∕T 1724-2017 电能质量评估技术导则 电压波动和闪变
- 民警职级晋升工作总结范文三篇
- 银龄计划教师总结
- (高清版)DZT 0351-2020 野外地质工作后勤保障要求
- 港珠澳大桥工程管理创新与实践
- 化妆培训行业分析
- 孩子如何正确与师长相处与沟通
评论
0/150
提交评论