少儿趣味编程Scratch算法挑战《解密汉诺塔》(教学案+源文件)共2课时

资源下载
  1. 二一教育资源

少儿趣味编程Scratch算法挑战《解密汉诺塔》(教学案+源文件)共2课时

资源简介

汉诺塔(二)
(
跟我来挑战
Follow me:
)
第一步:启动 scratch 软件;
第二步:点击上方的“文件” → “保存” →保存到桌面,文件名:汉诺塔 → 点击“保存”;
(第二步很很很重要,我希望所有的学生都能养成及时保存作品的好习惯!)
第三步: 确定背景
第四步:确定角色(全部手绘完成,ABC 柱等大小,1-yellow 柱最大,5-red 最 小 )
第五步: 脚本讲解
=
2,3,4,5号盘子的脚本请同学自己尝试编写完毕吧!
(
程序运行结果:
)
我输入了4,继续
(
课后思考:
)
(1) 将2,3,4,5,号盘子的脚本编写完整并能成功运行!
(2) 想 一 想,6,7,8,9甚至更多盘子的时候,程序是否需要改变 有过需要改变你知道如 果改变么
代码
背最
4,声音
造型
route66
route66
80x3刃
填充
复制
粘贴
删除
2
you win
8知x3知
T
ROUTE
U S
66
一代码
。背最
,声音
造里
you win
route66
80x3可
填充
复制
粘贴
删除
2
n
you win
8知x3知
T
7
You win!
名字
舞台
角色
显示
0
大小
方向
背系
2
A柱
B柱
C柱
1-yellowu p.…
2-purple p.…
3-blue plate
4green pl...
5-red plate
当被点击
换成
route66
背景
删除
A柱ist
的第
all

删除
日柱ist
的第
all

删除
C柱ist
的第
all


柱子上已有盘子个数
设为
0

盘子移动次数·
设为
0
重执行直到
回答
将三个表上次执行程序球.用主场景×
询问
请输入盘子个数〔35
并等待
更执行
回答

盘子移动次数清季

柱子上已有盘子个数
增勘加
回答必须介于35,我].×

4柱ist
的第
last
项前插入
柱子上已有盘子个数
如果
回答
3
那么
广描
显示4号盘子·
如果
回答
▲所有圆盘是以12,3…×主上就会有
广
显示号盘子
核心算法
回答
a
开始只显示3个國盘〔1×
换成
you win!
背景汉诺塔(一)
(
今日任务:
)
今天, 我们将以小时候大家都玩儿过的汉诺塔游戏作为原型, 用 scratch 编程实现它, 汉诺塔游戏的规则是这样的:
在 A 柱上有 N 个圆盘, 从下到上分别按由大到小排列,借助中间的 B 柱,将 A 柱上的 圆盘按照一开始的叠放顺序全部移动到 C 柱,移动过程中无论各圆盘位于哪根柱上,都必须 遵循上小下大的摆放规则。那么我们接下来分别看看有 1、2、3 个圆盘时的移动情形,看看 你能不能从中找到些规律出来!
只有一个圆盘时的情形:
A 柱 B 柱 C 柱
一步就可以移动过来:
A 柱
B 柱
C 柱
只有二个圆盘时的情形:
A 柱
B 柱
C 柱
第一步:
A 柱
B 柱
C 柱
第二步:
A 柱
B 柱
C 柱
第三步:
A 柱 B 柱 C 柱
只有三个圆盘时的情形:
A 柱
B 柱
C 柱
第一步:
A 柱
B 柱
C 柱
第二步:
A 柱
B 柱
C 柱
第三步:
A 柱
B 柱
C 柱
第四步:
A 柱
B 柱
C 柱
第五步:
A 柱
B 柱
C 柱
第六步:
A 柱
B 柱
C 柱
第六步:
A 柱
B 柱
C 柱
我们似乎可以从这样儿的移动中找到某些规律
移动时,盘子其实都遵循着这样儿的规律:
无论是移动多少个圆盘,都可以看做是现将 A 柱上除最大的圆盘以外的所有圆盘移到 B 柱,然后, 移动 A 柱上最大的圆盘到 C 柱, 最后再将 B 柱上的所有圆盘移动到 C 柱上,结 束。
比如三个圆盘时:
(
B

) (
C

)A 柱
(
B

) (
C

)A 柱
(
B

) (
C

)A 柱
(
B

) (
C

)A 柱
核心算法简述:
Step1:如果盘子数=1,那么直接执行第 2 步,否则执行第 3 步
Step2:盘子从 A 柱直接移动到 C 柱,执行第 6 步
Step3:核心算法(可传递参数)
执行: A 柱是起点柱, B 柱作为终点柱,C 柱作为中转柱 ①
Step4:执行:将盘子从起点柱移动到终点柱 ②
Step5:核心算法(可传递参数)
执行: B 柱作为起点柱, C 柱作为终点柱, A 柱作为中转柱 ③
(
A
柱变起点柱,
B
柱变终点柱,
C

变中转柱
) (
B
柱变起点柱,
C
柱变终点柱,
A

变中转柱
) (
N
) (
结束
)
(
本课重难点:
)
(1)通过汉诺塔的操作演示可以理解推导出的递归算法即本程序的核心算法。
(2)能够正确理解本程序的编写思路, 今后遇到同样的问题可以按照本程序所发现的规律 去解决问题。
(
任务解读(
Flowchart
):
)
开始
输入盘子个数(3~5)
(
盘子个数
=1

)
Y
盘子从 A 柱(起点柱)直接 移动到 C 柱(终点柱)

展开更多......

收起↑

资源列表