内容正文:
第二章《算法与程序实现》
2.2算法的概念及描述
学习
目标
1
2
能够从生活实例出发,了解算法的概念及特征,理解算
法在解决问题过程中的作用。
能够根据问题选用恰当的描述方法和控制结构表示算法, 增强用算法解决问题的信息意识。
理解算法在解决问题过程中的作用。
3
用计算机解决问题的一般步骤为:
01
01
01
02
01
03
01
04
01
05
提出问题
分析问题
设计算法
编程调试
解决问题
我们在前面的学习当中,已经知道要用计算机解决问题,我们就要经过五个步骤,分别是提出问题、分析问题、设计算法、编程调试、解决问题,第一步提出问题已经有了,那么我们就从分析问题入手
程序设计语言经历了从机器语言、汇编语言到高级语言的发展历程:
体验探索:规划乘车路线
小明同学计划从A站出发去B站附近的图书馆学习。假设地铁各线路每两站间行车用时相等。请你帮他完成以下路线规划:
1、列举出由A站出发到达B站的所有换乘次数最少的乘车路线。
2、如果小明同学希望尽快到达B站,试为他推荐一条最佳乘车路线,并说明理由。
5
思考:
1. 列举出由A站出发到达B站的所有换乘次数最少的乘车路线。
2. 如果小明同学希望尽快到达B站,试为他推荐一条最佳乘车路线,并说明理由。
算法:
规划好的路线就是我们设计好的算法。解决同一个问题可以有不同的算法。
A-E-B或A-J-B或A-Q-B或A-P-B
最佳乘车路线,既需要考虑换乘次数,还需要考虑乘车时间,甚至有时还要根据需要考虑t1和t2的大小。这里最佳路线是A-J-B,该路线站点间乘车用时5t1,且只换乘一次,总用时5t1+t2.
算法的定义
“做菜的步骤”
“洗衣服的步骤”
从广义上讲,算法是为解决一类特定问题而采取的确定的、有限的步骤。
生活中的算法
算法的定义
计算机科学领域:
用计算机能理解的语言描述算法,并输入到计算机中,这个过程就是计算机程序设计。
思考
算法 = 程序?
程序=数据结构+算法
在计算机领域,算法作为一个精心设计的运算序列,描述了计算机如何将输入转换为输出的过程 。
有输入
有输出
0个或者多个输入
有1个或者多个输出;
算法
特征
有输入
有输出
有穷性
可行性
确定性
0个或者多个输入
有1个或者多个输出;
执行有限个步骤后终止;
每一步操作是可以执行的;
每个步骤具有确定含义。
算法
特征
描述算法就是将解决问题的步骤,用一种可理解的形式表示出来。
常用的描述算法方法
描述算法
常用方法
自然语言
伪代码
流程图
方法一:自然语言描述算法
小明在去往地铁站时,在路口遇到了一个红绿灯,小明发现该红绿灯上配有一个倒计时器,倒计时15秒后红灯变成了绿灯,如何将“倒计时15秒”的算法描述出来?
步骤1:将计数器t设为15;
步骤2:如果t大于或等1,执行步骤3,否则倒计时结束;
步骤3:输出t,并保持显示1s,然后清除显示;
步骤4:将t的值减1,跳转至步骤2
用自然语言描述算法是使用人们能读懂的语句对算法的步骤进行描述。
自然语言描述
易产生二义性
易于理解
优 点
不 足
流程图符号 名称 功能
开始/结束框 表示算法的开始或结束
输入/输出框 表示输入或输出数据
处理框
框中指出要处理的内容,此框有一个入口和一个出口
判断框
用于表示条件判断及产生分支的情况,判断框有四个顶点,通常上面的顶点来表示入口。
流程线
用于控制流程方向。
连接点 用于连接因页面写不下而断开的流程线
方法二:流程图描述算法
流程图是一种常用的表示算法的图形化工具。常用的符号的符号如下:
活动:
思考如何将“倒计时15s”的流程图绘制出来。
开始
t≥1
输出t
保持显示1秒
清除显示
结束
t =15
t t-1
True
False
步骤1:将计数器t设为15;
步骤2:如果t大于或等于1,执行步骤3,否则倒计时结束;
步骤3:输出t,并保持显示1s,然后清除显示;
步骤4:将t的值减1,跳转至步骤2
直观易读,问题解决的步骤清晰简洁,
转换为
优点
方法二:流程图描述算法
通过对“倒计时15s”流程图的分析,说明该流程是一种循环结构。算法有三种基本控制结构。
顺序结构
分支结构
循环结构
三种基本控制结构:
(2)选择结构(分支结构)
(3)循环结构
(1)顺序结构
每一个步骤按先后次序被执行,即执行处理A,然后执行处理B
根据条件的成立与否,选择执行不同的分支处理。当条件成立时(True),执行A;当条件不成立时( False),执行B。
当条件成立时,反复执行处理A, 一旦条件不成立就立即结束循环
三种基本控制结构
t<—15
while t≥1
output t
sleep 1s
clear
t<—t-1
end while
方法三:伪代码描述算法
活动:
思考如何将“倒计时15s”的算法用伪代码描述出来?
用伪代码描述算法就是采用一种类似于成语设计语言的代码来表示算法
需要一定的程序设计基础
回避程序设计语言严格的书写格式、无二义性、结构性强。
课堂小结
算法必须能在有限个步骤之后终止
算法的概念及描述
算法就是解决一个特征问题而采取的确定的,有限的步骤
算法概念
算法特征
算法描述方法
算法效率
对于同一个问题,不同算法解决问题的效率不同
自然语言
流程图
伪代码
采用一种类似程序设计语言的代码来描述算法
用图形表示算法的一种常用工具
用日常所用语言描述算法的步骤
一个算法通常有0个或多个输入
一个算法可以有一个或多个输出
算法中的每一步都是可以执行的
算法的每个步骤都具有确定的含义
有输入
有输出
有穷性
可行性
确定性
习题练习
1. 假设在“烧水泡茶”这一过程中要经历5道工序,分别用时是:①洗开水壶1 min;②烧开水10 min;③洗茶壶茶杯2 min;④取茶叶1 min;⑤泡茶1 min。若合理安排这5道工序执行的先后顺序,可以使“烧水泡茶”整个过程所用的总时间最短,则最短总用时为 。 [单选题]
A. 10 min
B. 11 min
C. 12 min
D. 15 min
C
2. 下列流程图符号中,表示判断的是 。[单选题]
A
B
C
D
B
习题练习
3. 下面算法的伪代码的功能是为输出1~10之间的奇数,则横线上应填写的内容是 。[单选题]
指令:i←1
while (i<10)
{
输出 (i)
___________
}
A. i←1 B. i←i+1
C. i→i+1 D. i←i+2
D
习题练习
4. 某算法的部分流程图如图所示,执行这部分流程后,“X ← X-2”被执行的次数为 。[单选题]
A. 0
B. 1
C. 2
D. 3
C
习题练习
欧几里得算法又名辗转相除法,其算法可用右图所示的流程图描述(“%”为取模运算符,可返回除法的余数)。
求任意两个正整数 m(m=24)与n(n=16)的最大公约数(辗转相除法)
原理:用较大数除以小数,再用出现的余数(第一余数)去除除数,再用出现余数(第二余数)去除第一余数,如此反复,直到余数为0,最后除数为要求最大公约数
巩固拓展:
$