第14课 算法的验证 课件
|
15页
|
179人阅读
|
11人下载
普通
内容正文:
小朋友们吃饭,每人一只饭碗,2人一只菜碗,3人一只汤碗,一共用了11个碗,算一算,一共有几人吃饭?
请你算一算,一共有多少个小朋友人吃饭。
怎样判断答案是正确的?
6人
验算
6个人,
每人一只饭碗,那么有6个饭碗,
2人一只菜碗,那么有3个菜碗,
3人一只汤碗,那么有2个汤碗
6+3+2=11
数学里,经常会通过验算来验证计算结果是否正确,那我们设计的算法如何来验证呢?
执教者:
2023浙江教育出版社版 ∙ 小学信息科技
算法的有效性,可以根据算法特征来验证流程图描述的算法是否正确,也可以用具体数据来验证算法的输出结果是够正确,还可以编写程序在计算机上验证算法。
1
根据算法特征验证
2
用数据验证算法
1
用计算机程序验证
根据算法特征验证
一
有穷性
确定性
有输出
必须有确定的输出
每一步必须确定
且能有效执行
算法执行过程必须
步骤有限,时间有限
开始
输入L1 L2 L3 L4
S2=L2+L4
S1=L1+L3
Smin=S1
S2<Smin?
Smin=S2
结束
否
是
根据算法的特征,观察流程图中算法描述的步骤是否有限?
根据算法的特征,观察流程图中算法描述的每一步是否确定可执行?
根据算法的特征,观察流程图中算法描述中输出是否符合要求?
根据算法特征验证
一
开始
输入L1 L2 L3 L4
S2=L2+L4
S1=L1+L3
Smin=S1
S2<Smin?
Smin=S2
结束
否
是
输出Smin
开始
输入L1 L2 L3 L4 L5 L6 L7
S4=L6+L7
S3=L5
Smin2=S3
S4<Smin2?
Smin2=S4
S2=L2+L4
S1=L1+L3
Smin1=S1
S2<Smin1?
Smin1=S2
Smin=Smin1+Smin2
输出Smin
结束
否
否
是
是
根据算法的特征,观察流程图中算法描述的步骤是否有限?
根据算法的特征,观察流程图中算法描述的每一步是否确定可执行?
根据算法的特征,观察流程图中算法描述中输出是否符合要求?
根据算法特征验证
一
用数据验证算法
二
使用不同的测试数据来测试算法,并记录算法的输出结果,是检查算法有效性的一种常用方法。
170
230
100
150
50
30
40
开始
输入L1 L2 L3 L4 L5 L6 L7
S4=L6+L7
S3=L5
Smin2=S3
S4<Smin2?
Smin2=S4
S2=L2+L4
S1=L1+L3
Smin1=S1
S2<Smin1?
Smin1=S2
Smin=Smin1+Smin2
输出Smin
结束
否
否
是
是
L1=170,L2=230,L3=100,L4=150
L5=50,L6=30,L7=40
S1=170+100=270
S2=230+150=380
Smin1=270
380<270,不成立
所以Smin1=270
S3=50
S4=30+40=70
Smin2=50
70<50,不成立
所以Smin2=50
Smin=270+50=320
输出320
170
230
100
150
50
30
40
开始
输入L1 L2 L3 L4 L5 L6 L7
S4=L6+L7
S3=L5
Smin2=S3
S4<Smin2?
Smin2=S4
S2=L2+L4
S1=L1+L3
Smin1=S1
S2<Smin1?
Smin1=S2
Smin=Smin1+Smin2
输出Smin
结束
否
否
是
是
L1=,L2=,L3=,L4=
L5=,L6=,L7=
S1=
S2=
Smin1=
所以Smin1=
S3=
S4=
Smin2=
所以Smin2=
Smin=
输出
任务一:用数据验证“最短距离”算法
选择表格中任一组的七小段路线的距离值,验证能否得到最短距离的输出结果。
在左边的框中逐步标注测试算法的过程。
L1 L2 L3 L4 L5 L6 L7 Smin
260 140 100 160 80 20 50
300 140 80 180 70 40 50
200 150 120 140 50 30 30
180 130 110 190 100 50 40
用计算机程序验证算法
三
算法可以先编写成计算机程序,再在计算机上进行验证。运行代码,输入数值,观察输出结果来验证算法。
Smin1=S1
if S2<Smin1:
Smin1=S2
input
L1= input (“请输入路线L1的长度:” )
输入
将输入的数据转换成整数类型
input() 返回的数据类型是字符串类型(str)
int ( )
提示语
用计算机程序验证算法
三
Smin2=S3
if S4<Smin2:
Smin2=S4
print ( “最短距离为:” , Smin )
输出
中间用“,”分隔
#第一组数据:260 140 100 160 80 20 50
#第二组数据:300 140 80 180 70 40 50
#第三组数据:200 150 120 140 50 30 30
#第四组数据:180 130 110 190 100 50 40
#输入每小段路线的距离
L1=int(input("请输入路线L1的长度:"))
L2=int(input("请输入路线L2的长度:"))
L3=int(input("请输入路线L3的长度:"))
L4=int(input("请输入路线L4的长度:"))
L5=int(input("请输入路线L5的长度:"))
L6=int(input("请输入路线L6的长度:"))
L7=int(input("请输入路线L7的长度:"))
#求解第一段路线的最短距离
#使用距离计算模型
S1=L1+L3 #计算第一条路线的距离S1
S2=L2+L4 #计算第二条路线的距离S2
Smin1=S1 #赋初值
if S2<Smin1:
Smin1=S2
#求解第二段路线最短距离
S3=L5
S4=L6+L7
Smin2=S3
if S4<Smin2:
Smin2=S4
Smin=Smin1+Smin2 #合并两段路线的最短距离
print("最短距离为:",Smin) #输出最短距离
复制左边的程序代码,打开Thonny,输入最上面几组数据,验证求最短距离的算法。
任务二:用计算机程序验证“最短距离”算法
根据画三角形的流程图验证算法
计算右转角度:a=360/n=120
开始
输入边数n=3,L=30
直行L
右转a
输出轨迹
结束
直行L
右转a
直行L
右转a
计算右转角度:a=360/n
开始
输入:边数n和边长L
直行L
右转a
输出轨迹
结束
重复
( n )次
1次
1次
1次
重
复
3
次
计算右转角度:a=360/n
开始
输入:边数n和边长L
直行L
右转a
输出轨迹
结束
重复
( n )次
import turtle
L=int(input("请输入要画的多边形边长:"))
n=
a=
for i in range(1, n+1):
turtle.forward(L) #直行L步
turtle.right(a) #右转a度
turtle.done() #输出轨迹
任务三:用计算机程序验证“画正多边形”的算法
复制下方的程序代码,打开Thonny,将程序补充完整,并输入边长和边数的值,验证“画正多边形”算法的正确性。
重复n次
算法的验证
根据算法特征验证
用数据验证
用计算机程序验证
有穷性
确定性
有输出
使用不同数据进行测试
$$