(共30张PPT)
2.1 算法的概念及描述
算法的概念
广义地讲,“算法”指的是解决问题或完成任务的一系列步骤。
在计算机科学领域内,“算法”指的是用计算机解决问题的步骤,是为了解决问题而需要让计算机有序执行的、无歧义的、有限步骤的集合。针对同一个问题,可能会有多种算法,每种算法的效率可能会有所差别。
换水问题
三个杯子,A杯装有“可乐” ,B杯是“雪碧”,C杯是空杯。如何把两个杯子中的饮料互换。
方法1:
A杯可乐倒入C杯中;
B杯雪碧倒入A杯中;
C杯可乐倒入B杯中。
方法2:
B杯雪碧倒入C杯中;
A杯可乐倒入B杯中;
C杯雪碧倒入A杯中。
这就是算法!
算法的特征
1、有穷性:算法必须保证它的执行步骤是有限的,即它是能终止的。
2、确定性:算法中的每个步骤必须是明确的。
错误示范:输出:L/正整数
正确示范:输出:L/10
3、可行性:算法中的每一步操作都要是可实施的。
错误示范:计算y=x+1的所有整数解
正确示范:x=5,计算y=x+1的整数解
错误示范:当d<0时输出:
正确示范:当d>0时输出:
4、有0个或多个输入:算法在执行时需从外界获取可变的数据,如果问题求解时所有数据都是不变且已知的,可以不输入数据。
5、有一个或多个输出:算法的目的是求解问题,问题求解的结果应该以一定的方式输出。没有输出的算法没有意义。
算法的特征
正确示范1:输出:3+2*8
正确示范2:输入身高h、体重w,bmi=w/h2,输出bmi
错误示范:输入身高h、体重w,计算bmi
正确示范:输入身高h、体重w,计算bmi,输出bmi
思考
把大象放冰箱是不是算法?
不是算法,不满足算法的可行性。
算法的要素
1、数据
参与运算的初始数据、中间数据、结果数据。
2、运算
明确每一步的运算是什么、对哪些数据运算。
3、控制转移
根据数据或运算结果的特点进行不同的处理,需要控制转移执行不同的操作。
算法的要素案例
BMI(体重)指数:
(1)输入身高h、体重w
(2)计算BMI指数(BMI=w/h2)
(3)若BMI>=24,输出“超重”;否则,输出“正常”
数据
运算
控制转移
算法的描述方法
2、流程图
3、伪代码
1、自然语言
4、计算机程序设计语言
1.自然语言
例:停车场车位探测中的算法
(1)输入变量flag的值
(2)若flag的值为1,则设置指示灯为绿色,输出“空车位”;否则,设置指示灯为红色,输出“非空车位”
2、流程图的基本图形及其功能
程序框 名称 功能
开始/结束 算法的开始和结束
输入/输出 输入和输出信息
处理 计算与赋值
判断 条件判断
流程线 算法中的流向
2.流程图
3.伪代码
(1)条件判断语句
格式1:if 条件 then
(语句序列1)
else
(语句序列2)
格式2:if 条件 then
(语句序列1)
(2)循环语句
格式:while 条件
(循环体)
3.伪代码
flag 车位探测结果;
If flag=1 then
(指示灯绿色
输出“空车位”)
Else
(指示灯红色
输出“非空车位”)
4.计算机程序设计语言
flag=int(input(“输入车位状态值:”))
if flag==1:
print(“绿色”)
print(“空车位”)
else:
print(“红色”)
print(“非空车位”)
四种描述方法对比
自然语言 流程图 伪代码 计算机语言
优点 通俗易懂 结构清晰、寓意明确 直观简洁、写法灵活 能让计算机理解并执行
缺点 容易产生歧义 情况复杂时,过多的流程线影响算法的理解 错误不易排查,计算机无法理解并执行 有一定程序设计语言基础的人才能看懂
2.2 算法的控制结构
一、顺序结构
开始
结束
输入身高、体重
计算BMI=体重/身高2
输出BMI
计算体重指数BMI?
按照顺序从上往下依次执行,每条语句必须而且只能执行一次。
二、分支结构
判断你胖不胖?
开始
结束
输入身高、体重
计算BMI=体重/身高2
输出“哇,你有点胖了哟”
BMI>24
输出“羡慕,你一点也不胖”
Y
N
我又举个栗子
又称选择结构。执行过程根据条件判断选择不同分支执行:条件为真时执行处理Step1,否则执行处理Step2。选择模式对条件是否成立只判断1次。
三、循环结构
循环结构是一种重复某一部分操作的结构。即在条件控制下,某些操作步骤需要重复执行(循环),在不满足重复处理条件时,循环结束。
我要判断100个人胖不胖该怎么办?
我还举个栗子
开始
结束
输入身高、体重
计算BMI=体重/身高2
输出“哇,你有点胖了哟”
BMI>24
输出“羡慕,你一点也不胖”
Y
N
N
n=0
Y
n=n+1
n<100
三种基本结构流程图
A
B
条件?
A
B
否
是
A
条件?
是
否
3.循环结构
2.分支结构
1.顺序结构
2.3 用算法解决问题的过程
1、抽象与建模
问题: 设计一算法,求和:1+2+3+…+10
算法:
第一步:从1开始将自然数1、2、 3、…、10逐个相加;
第二步:输出累加结果。
思考:1、上边的式子有怎样的规律呢?
S=0
S=S+ 1
S=S + 2
S=S + 3
…
S=S + 10
2、怎么用流程图表示呢?
i = i + 1
S=S + i
4、如何使程序结束?
3、i有什么作用 S呢?
S=S + i
流程图如图
开始
i=1
s=0
i=i+1
s=s+1
i≤10
输出s
结束
否
是
课堂总结
算法的概念
算法的特征:有穷性、可行性、确定性、0个或多个输入、1个或多个输入
算法的要素:数据、运算、控制转移
算法的描述:自然语言、流程图、伪代码、计算机程序语言
1.在求一元二次方程实数根的算法中,当方程不存在实数根时,也要求输出“方程无实数根”。这一要求主要体现了算法特征中的
A.有穷性 B.确定性
C.有1个或多个输出 D.有0个或多个输入
2.不能用算法解决“输出所有偶数”的问题,因为不符合算法特征中的
A.有穷性 B.有输出 C.确定性 D.唯一性
练一练
C
A
3.下列问题不能用算法描述的是
A.已知a、b、c的值,求一元二次方程ax2+bx+c=0(a≠0)的实数解
B.计算某个班级英语成绩的平均分
C.列出方程y=2x+1的所有实数解
D.根据矩形的长和宽求面积
C
练一练
练一练
4.关于算法,下列叙述正确的是
A.一种算法只能用一种程序语言来实现
B.流程图是算法的一种表示形式
C.解决任何一个具体问题只有一种算法
D.算法是解题方法的精确描述,它可以有无限个步骤
B
5.已知圆柱体底面圆半径r和高h,求圆柱体体积V的算法如下:
①V=πr2h ②输入底面圆半径r ③输出体积V ④输入圆柱体高h
计算圆柱体体积V,正确的次序是
A.①②④③ B.③②④① C.④②③① D.②④①③
D
练一练
6.用伪代码描述算法:
①输入a、b的值;
②c←a;
③a←b;
④b←c;
⑤输出a、b的值;
当输入a的值为3,b的值为5时,输出结果中a和b的值分别为( )
A.3 5 B.3 3 C.5 5 D.5 3
D