小学高年级课后服务 scratch3.0编程课件 二阶课程 项目6经典扫雷游戏 第3节 递归调用课件(共47张PPT +教案)

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

小学高年级课后服务 scratch3.0编程课件 二阶课程 项目6经典扫雷游戏 第3节 递归调用课件(共47张PPT +教案)

资源简介

经典扫雷游戏项目第三讲: 递归调用
一、 课程目标
1、掌握递归算法,了解递归的思想,能够分析包含递归的程序的执行过程;
2、熟练使用自制积木,能够使用递归算法进行自制积木的调用;
3、完成扫雷中检测周围雷的数量,以及标记方块的功能。
二、 课堂组织形式
1、开放式问题讨论
2、引导式思维发散
3、问答式课堂互动
4、针对问题探究实践
5、学生动手制作项目
6、课堂内容梳理巩固
三、课堂准备
编号 名称 内容 来源 备注
【 1】 PPT 课件 课堂全流程演示文稿 火星科学盒官网
【2】 课程资料 PPT 课件、讲义、视频 火星科学盒官网
【 3】 教师参考程序 项目完整程序 网盘链接下载
【4】 学生上课使用资料 笔记本电脑或者台式电脑 老师自备 电脑系统需求: win 10+,或 macOS 10.13+
编程所需素材 网盘链接下载
课堂报告 网盘链接下载
【 5】 编程软件下载 scratch3.0 scratch 官网 课前下载安装
四、主要脚本程序
编号 详细内容 功能描述
【 1】 “(列表)的第() 项” 使用列表的项目编号,获取列表中指定的某一 项
【2】 “将(列表)的第( )项替换为 ()” 将列表的指定项替换为指定内容
【 3】 “()不成立” 当填入的内容为真时,整个条件的值为假;当 填入的内容为假时,整个条件值为真
五、上课流程
本节课包括 5 步具体流程:
(1)第 1 步为知识讲解。老师带领学生学习递归算法, 掌握递归的思想, 能够梳理包含递归的程序的执行过程。时长控制在 10 分 钟内。
(2)第 2~3 步为作品编程。当被点击的方块处没有雷,且周围也没有雷时,需要编写程序,完成这个方块周围其他方块的检测。
另外需要编程实现按下空格键时,使用小红旗标记方块或取消方块标记的功能。时长控制在 55 分钟内
(3)第 4 步为拓展思考。 进一步学习递归思想,完成程序的梳理。时长控制在 15 分钟内。
(4)第 5 步为课堂总结, 知识图谱的形式总结课程内容,巩固重点知识点 。时长控制在 5 分钟内。
上课步骤 主要内容 备注
【第 1 步】 知识讲解 【对应 PPT】“什么是递 归” 【时长】 10min 【讲解】 1. 使用“从前有座山”的故事来讲解什么是递归的思想; 2. 通过一组简单的程序讲解什么是递归算法; 3. 讲解递归必须有明确的终止条件的特点; 4. 总结什么是递归以及递归的特点; 5. 使用具体例子展示递归算法在scratch 中的应用, 带领学生分析程序的执行过程,得 出最后结果
【第 2 步】 作品编程 【对应 PPT】“检测周围 方块” 【时长】 30min 【衔接】 上节课完成了检测被点击方块的状态, 并显示对应造型的功能。在被点击的方块处没有 雷, 并且周围雷的个数为 0 时, 应该继续检测周围的方块, 让周围方块都显示出来。接 下来就完成这个任务。 【讲解】 1. 带领学生分析,当空白方块被点击时,应该产生的效果是什么; 2. 讲解当空白方块被点击时,检测周围方块的过程; 3. 讲解检测被点击方块上方的方块时, 需要判断的条件, 以及满足条件时执行的结果; 【制作】
学生编写程序, 实现当被点击方块处没有雷, 且周围也没有雷时, 检测它上方方块的功 能,之后运行程序观察效果(程序样例见“第六部分 - 程序 1-1”) 【讲解】 1. 老师带领学生分析程序的执行过程,进一步学习递归算法; 2. 带领学生分析检测当前方块周围的方块时,需要满足的条件是什么; 【制作】 学生编写程序,实现对周围方块的检测(程序样例见“第六部分 - 程序 1-2”) 【总结】 以提问的形式带领学生总结实现任务四的编程思路
【第 3 步】 作品编程 【对应 PPT】“标记小红 旗” 【时长】 25min 【衔接】 鼠标点击方块后, 方块可能出现的效果已经全部完成了。除此之外, 在扫雷游戏中, 鼠 标右键点击方块后,方块位置会显示小红旗,表示此处有雷。在 scratch 中无法判断是 否按下了鼠标右键,所以使用空格键来实现。 【讲解】 1. 老师带领学生分析实现标记方块的功能时, 进行标记的方法是什么, 以及进行标记 和取消标记时,方块的造型变化; 2. 以提问的形式带领学生分析如何判断方块当前的造型, 以及如何实现方块造型的切
换; 3. 根据分析的思路完成程序编写, 之后思考程序运行时可能会出现的问题以及解决方 案; 4. 讲解如何使用变量记录没有被发现的雷的数目 【制作】 学生编写程序, 完成使用空格键标记方块或取消标记的功能(程序样例见“第六部分 - 程序 2-1”) 【总结】 以提问的形式带领学生总结完成任务五的编程思路
【第 4 步】 拓展思考 【对应 PPT】“思考与拓 展” 【时长】 15min 【讲解】 带领学生巩固递归在 scratch 编程中的应用,学生分析自制积木的调用过程, 完成题目。 此部分为课堂挑 战,根据课堂实 际情况完成
【第 5 步】知识巩固 【对应 PPT】“总结与巩 固” 【时长】 5min 老师根据ppt 中的知识图谱回顾本节课的主要内容,带领学生完成知识总结
六、主要程序说明
任务四: 被点击方块及周围方块没有雷, 继续检测周围方块
程序样例编号 程序样例与说明 对应的角色
1-1 【方块】
【程序 1-1 描述】 方块被点击后,如果方块处没有雷,就计算这 个方块周围的雷的个数,如果周围雷的个数为 0,就判断它是否 不在第一行,再判断它上方的方块是否被检测过。之后检测它上 方的方块。
1-2 【方块】
(
【程序
1-2
描述】
被检测方块上方的方块检测完成后,
检测下方的
方块,
首先判断是否不在最后一行,
之后判断是否被检测过,
没有
被检测过,则进行检测。
【程序
1-2
描述】
判断当前方块是否不在第一列,如果不在第一
列,则判断左侧方块是否被检测过,如果没有检测过,检测当前
)
(
方块左侧的方块;之后检测当前方块右侧的方块
【程序
1-2
描述】
当前方块不在第一行和第一列时,如果左上方
方块没有被检测过,就检测左上方方块;
当前方块不在第一行和
最后一列时,如果右上方方块没有被检测过,就检测右上方方
块。
)
【程序 1-2 描述】 当前方块不在最后一行和第一列时,如果左下 方方块没有被检测过,就检测左下方方块; 当前方块不在最后一 行和最后一列时,如果右下方方块没有被检测过,就检测右下方 方块。
任务五: 按下空格键对方块进行标记,或取消已添加的标记
程序样例编号 程序样例与说明 对应的角色
2-1 【方块】
【程序 2-1 描述】 产生克隆体后, 将变量“未发现的雷数”的值设 为“雷的总数”。当在方块处按下一次空格键时, 切换方块的造型。 如果当前是造型 9, 那么切换成造型 10, 表示标记方块, 将变量的 值减 1。否则的话, 如果是造型 10, 就切换成造型 9, 表示取消标 记,将变量的值增加 1。(共47张PPT)
经典扫雷游戏
递归调用
什么是递归
思考与拓展
检测周围方块
小红旗标记
总结与巩国
什么是递归
1
从前有座山
从前有座出,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
从前有座山
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚讲故事
在故事中提到了同样的故事
在程序中调用了同样的程序
调用
调用自己
调用




100
98
97
99
.
.
.
递归
调用
递归
程序中的函数在执行时,直接或间接的调用自己的现象
调用
终止条件
从前有座出,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
从前有座山
山里有座庙
庙里有个老和尚
老和尚在给小和尚
讲故事
终止条件
终止条件
递归
递归必须有明确的终
止条件
没有终止条件时永远执行
满足终止条件时停止执行
递归总结
递归:
程序中的函数在执行时,直接或间接的调用自己的现象
必须为递归指定明确的终止条件
函数A
函数A
函数A
函数A
调用
调用
调用
递归应用
运行程序后,变量“数字结果”的值是多少?
①计算10:“数字结果”增加9→19
②计算9:“数字结果”增加8→27
③计算8:“数字结果”增加7→34
④计算7:“数字结果”增加6→40
⑤计算6:“数字结果”增加5→45
⑥计算5:“数字结果”增加4→49
⑦计算4:“数字结果”增加3→52
⑧计算3:“数字结果”增加2→54
⑨计算2:“数字结果”增加1→55
⑩计算1:“数字结果”增加0→55
检测周围方块
2
任务四
任务四:被点击方块及周围方块没有雷,继续检测周围方块
空白方块被点击
被点击的方块及周围没有雷
继续检则局围的8个方块
继续检测周围是“造型9“的方块
一直到外侧都是周围有雷的方块
一直到外侧都是周围有雷的方块
检测方块
方块被点击
是否有雷?
周围是否有雷?
检测周围方块
检测被点击方块
检测周围的方块


检测周围方块
检测周围的方块
⑤ ① ⑥
③ ④
⑦ ② ⑧
检测①②③④⑤⑥⑦⑧这8个位置的方块
填入待检测的方块的编号
检测是否有雷
检测被点击方块的上方方块:
需要满足的条件:
被点击的方块上方有方块:
不在第一行
上方的方块没有被检测过:
上方方块显示示“造型9”“
执行的操作:
检测被点击方块上方的方块:
上方方块的编号
检测上方方块
Step1:检测被点击方块上方的方块
检测上方方块
运行测试,观察出现的效果
检测上方方块
被点击的方块:86

周围没有雷

检测上方方块
被点击的方块:86


38
54
70
周围没有雷
周围没有雷
周围没有雷
周围没有雷


递归的使用
使用了递归的算法!
终止条件:被检测的方块周围有雷!
检测周围方块
检测周围的方块:
需判断的条件:
这个位置是否有方块
这个方块是否被检测过
试一试:编写程序,当被检测的方块及它周围方块没有雷时,继续检测周围的方块
可以复制“计算雷的数目”脚本,修改参数完成
检测周围方块
Step2:检测被点击方块下方的方块
判断是否不在最后一行
判断是否被检测过
检测当前方块下方的方块
检测周围方块
Step2:检测左侧、右侧的方块
判断是否不在最后一列
判断是否被检测过
检测当前方块右侧的方块
判断是否不在第一列
判断是否被检测过
检测当前方块左侧的方块
检测周围方块
Step2:检测左上、右上的方块
判断是否既不在第一行也不在最后一列
判断是否被检测过
检测当前方块右上方的方块
判断是否既不在第一行也不在第一列
判断是否被检测过
检测当前方块左上方的方块
检测周围方块
Step2:检测左下、右下的方块
是否既不在最后一行也不在第一列
判断是否被检测过
检测当前方块左下方的方块
是否既不在最后一行也不在最后一列
判断是否被检测过
检测当前方块右下方的方块
任务总结
1.需要满足哪些条件,才能检测当前方块右上方的方块?
2.编程实现检测当前方块周围的方块时,使用的算法是:
①当前方块处没有雷,且周围也没有雷
②当前方块的右上方有方块:既不在第一行也不在最后一列
③当前方块右上方的方块没有被检测过
递归
小红旗标记
3
任务五
任务五:按下空格键,使用小红旗标记有雷的位置
标记小红旗
使用小红旗标记有雷的位置:
进行标记的方法:
进行标记的结果:
①添加标记:从“造型9”切换成“造型10”
②取消标记:从“造型10”切换成“造型9”
进行标记
②如何切换方块的造型?
①如何判断方块当前的造型是什么?
②如何切换方块的造型?
是造型9?
切换成造型10
是造型10?
切换成造型9



进行标记
运行时会出现什么问题
标记小红旗
按下一次空格时,造型不止切换一次
等待空格键抬起
未发现的雷数
①方格被标记,数字减1
②取消方格标记,数字增加1
未被标记的雷的个数
未发现的雷数
②如何切换方块的造型?
新建变量存储未被发现的雷的个数
变量初始值:雷的总数
方块被标记时:变量的值减1
取消方块标记时:变量的值加1
编程任务
·试一试:编写程序,实现按下空格键时对方块进行标记和取消标记的功能
标记方块
Step1:按下空格键标记方块
变量初始值等于雷的总数
在方块处按下空格键时
等待空格键抬起
如果显示“造型9”
切换到“造型10"
变量减1
如果显示“造型10°
切换到“造型9%
变量加1
任务总结
简述实现按下空格键对方块进行标记或取消标记的过程:
①标记(取消标记)方块的操作:
②通过列表项内容判断当前的造型
③黄换列表项内容使方块切换成对应造型
④改变变量“未发现的雷数”的值
思考与拓展
4
递归的应用
运行程序后,角色“说”的内容是什么?
递归的应用
②如何切换方块的造型?
结果的初始值:5
①计算5→结果=5×5=25;计算4
②计算4→结果=25×4=100;计算3
③计算3→结果=100×3=300;计算2
④计算2→结果=300×2=600;计算1
⑤计算1→说“结果”:600
总结与巩固
5

展开更多......

收起↑

资源列表