收藏 分享(赏)

C++程序设计课件第02章.ppt

上传人:gnk289057 文档编号:6573157 上传时间:2019-04-17 格式:PPT 页数:24 大小:335.50KB
下载 相关 举报
C++程序设计课件第02章.ppt_第1页
第1页 / 共24页
C++程序设计课件第02章.ppt_第2页
第2页 / 共24页
C++程序设计课件第02章.ppt_第3页
第3页 / 共24页
C++程序设计课件第02章.ppt_第4页
第4页 / 共24页
C++程序设计课件第02章.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、第2章 算法设计基础,2.1 算法的描述 2.2 结构化算法设计初步 2.3 算法的计算复杂性 2.4 常用算法设计策略,学习目的: 掌握算法的流程图和PAD图描述方式; 初步掌握结构化算法设计; 能够进行简单的算法复杂性分析; 初步了解分治与递归。,2.1 算法的描述,2.1.1 自然语言方式 2.1.2 伪代码方式 2.1.3 程序流程图方式 2.1.4 N/S盒图方式 2.1.5 PAD图方式,算法的描述方式很多,不同描述风格适用于不同场合,在面向对象技术出现之前,人们倾向于在算法的描述中对未来程序的层次结构进行一定程度的控制,而不仅仅是描述具体的数据处理过程。本节介绍算法的常见描述方法

2、。,2.1.1 自然语言方式,算法表示如下: S1:输入n的值 S2:2 i ( i 作为除数) S3: n 被 i 除,得余数 r S4: 如果 r 等于 0 , 表示 n 能 被 i 整除,则打印 n “不是素数”,算法结束;否则执行S5 S5:i+1 i S6: 如果 i n-1, 返回S3;否则,打印 n “是素数”,算法结束。,例1:对一个大于或等于3的正整数,判断它是不是一个素数,方法:将 n (其中n 3) 作为被除数, 将2 到(n-1) 各个整数轮流作为除数,如果都不能被整除,则n为素数。,2.1.2 伪代码方式,预先规定了描述规则和关键词,以接近某程序设计语言的风格描述算法

3、。同时具有易理解和趋于形式化的优点。,Begininput n2 iwhile(i n-1)n mod i rif(0=r)output n is not Prime; exit /退出循环i+1 iif(i=n)output n is Prime End,此地用到了循环结构,2.1.3 程序流程图方式,算法由若干张流程图描述,每张流程图由结点和有向边构成,该图描述了算法中所进行的操作以及这些操作执行的逻辑顺序。 流程图的常用结点及控制结构描述如下 :,2.1.3 程序流程图方式,此地都可采用平行四边形框,输入和输出时可采用该框,2.1.4改进的流程图-N/S流程图,略,2.1.5 PAD图(

4、Problem Analysis Diagram)方式,PAD图结点与控制结构描述,b 选择结构,d 循环结构,c 多选择结构,a 顺序结构,输入输出 重复 子算法 定义 选择 语句标号 处理,2.1.5 PAD图方式,2.2 结构化算法设计初步,2.2.1 算法描述 2.2.2 算法设计,将组成算法的多个操作按照不同的层次组织在一起,每一组代表一种复杂的相对独立的复合操作,各复合操作的内部亦可进行层次划分,从而形成整个算法的嵌套层次结构。 每一组操作具有惟一的入口和惟一的出口,即一端进一端出。这样的操作组置于其他操作中时,算法的执行顺序必定是从前一组操作的出口到本组操作的入口,经过本组内部的

5、运算,到达本组操作的惟一出口。 各组之间利用顺序、选择和循环等三种控制结构在不同组之间进行连接,从而形成更高层次的算法结构。,2.2.1 算法描述,1. 结构化算法的流程图,结点与控制结构,功能结点 判定结点(分支结点) 连接结点,顺序结构 分支结构 循环结构,2.2.1 算法描述,1. 结构化算法的流程图,. do if(c2)则 if(c4)则 blk3否则 blk4否则if(c3)则 blk1否则 blk2while(c1) blk5,2.2.1 算法描述,2. 结构化算法的PAD图,. do if(c2)则 if(c4)则 blk3否则 blk4否则if(c3)则 blk1否则 blk

6、2while(c1) blk5,2.2.2 算法设计,1. 主体结构设计,2.2.2 算法设计,算法的主体结构:算法开始标志块、初始化处理模块、问题处理核心模块、善后处理模块、算法结束标志块。,算法主体结构,2. 顺序结构设计,2.2.2 算法设计,例2.3 求底面半径为r,高度为h的圆柱体的侧面积和体积。算法输入: 圆柱的底面半径和高算法输出: 圆柱的侧面积与体积数据结构: r,Peri_bottom,S_bottom,S_side,V,h均为浮点数, 分别为底面半径、底面周长、底面面积,以及侧面面积, 圆柱体积和高。,2.2.2 算法设计,3. 选择结构设计-双分支结构,例2.4 求解一元

7、二次方程ax2+bx+c=0算法输入: 一元二次方程的系数a、b、c。算法输出: 一元二次方程的两个根。数据结构: 三个系数a,b,c为浮点数。方程的两个根X1和x2为浮点 数。q存储中间结果,为浮点数。,2.2.2 算法设计,3. 选择结构设计-双分支结构,例2.5 输入年份,判断该年是否为闰年。算法输入: 年份x算法输出: 年份x是否为闰年的提示信息数据结构: x为正整数,其值代表年份,2.2.2 算法设计,3. 选择结构设计-多分支结构,例2.6 设计一个根据输入的月份序号输出相应月份英文 名称的算法。算法输入: 月份序号Month算法输出: 与Month对应的英文月份名数据结构: Mo

8、nth为012的正整数,其值代表某一月份。“January” “December”为12个月份的英文名(常字符串)。,2.2.2 算法设计,3. 循环结构设计,例 2.7 求任意正整数的阶乘。算法输入: 正整数n算法输出: 正整数n的阶乘数据结构: n、k、p均为正整数,分别代表待求阶乘整数、已循 环次数和部分积。,例 将变量a, b的值互换,算法 1 使用临时变量temp=a; a=b; b=temp;,算法 2 不使用临时变量,a=a+b;b=a-b;a=a-b;,思考题,?,求任意正整数的累加和,即1+2+3+n算法输入: 正整数n算法输出: 1+2+3+n注意:如果用户输入的n不是正数

9、,则算法终止。分别画出 流程图 和 PAD图,思考题,?,一种以有限方式描述规模任意大问题的方法,递归技术,1st 集合A由含有同样多个字符a和b的所有字符串组成 2nd 空串属于集合A 3rd 若字符串S属于A,则字符串abS、aSb、Sab、baS、 bSa、Sba也属于A 除此之外没有其他的字符串属于A,且长度比S多2。,算法与程序设计中的递归是狭义的递归,指将问题按层次划分为多个层次的子问题,各子问题难度随层次降低,每一层次的问题都由低一层次的子问题组成,而且相应的各层次问题的解题算法相同。于是解决某一层次问题的算法将由调用相同算法解决子问题组成。,递归技术,n!=,例:求n的阶乘:n!,1 (n=1),n*(n-1)! (n1),在求解过程中不断调用相同的求解阶乘方法,直到转化为求为求得1的阶乘(已知),最后返回计算n的阶乘。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报