您好,感谢您一直对少儿编程、对“与非学堂”的关注。为了更好地为大家服务,诚邀您填写一份《关于少儿编程教与学的课件资源素材需求调查》,https://www.wjx.cn/jq/82398684.aspx。
问卷二维码
本篇内容在与非学堂公众号2020年9月1日首发。
全世界的少儿编程老师,Unite!
ʕ•̫͡•ʔ❤ʕ•̫͡•ʔ可暂停倒计时ʕ•̫͡•ʔ❤ʕ•̫͡•ʔ
课件属性分析(每项数值最高都为10):
-
难易度-4(适用于掌握循环、条件、简单变量等概念基础的孩子)
-
趣味性-4(不是特别有趣,中偏下)
-
讲授性-7(需要老师比较多的讲解,学生听讲理解、接受)
-
启发性-6(使用了5次关键的选择题,3次关键的问答题)
故事背景:
小熊的编程水平提高了不少,他想要在之前做的简单倒计时的基础上,增加一个功能:倒计时进行过程中,可以按下空格键让计时暂停,再次按下空格键计时又可继续,在时间到之前,可以重复暂停和继续这一操作。
作品效果要求:
设计一个倒计时,可以从9开始倒计时,数字每秒减小1,显示0时,播放铃声,并且在倒计时过程中,按下空格键时,如果正在进行,则计时暂停,如果按下时已经暂停了,则计时继续。
课堂教学流程:
找回我们之前已经完成的简单倒计时:【超详细Scratch教学课件分享】简单倒计时
大家跟着曹老师已经做好数字角色的造型和代码了,是这样的:
现在我们要完成:在倒计时过程中,按下空格键时,如果正在进行,则计时暂停,如果已经暂停,则计时继续。
要完成这个功能,该从哪里入手呢?
很多同学想,这简单啊!直接拖动代码块:来一个“当按下空格键”吧!
可是,有了这个代码块,它的下面要拼接什么代码呢?
怎么才能做到,按一下暂停,再按一下继续,继续时按一下又会暂停,再按一下又继续……
(请同学们先回答这个问题后继续后面的内容)
空格键这一个按键,对应了几个功能?
A. 1个
B. 2个
C. 3个
D. 无数个
从功能上来讲,一个空格键对应了2个功能:即暂停计时和继续计时,无论重复多少次,功能还是一样的。
那么问题又来了,(请同学们直接回答)这两个功能我们应该使用一个“当按下空格键”呢?还是应该使用两个,每一个功能分别写在一个下面啊?
回答“两个”的同学,可能对咱们程序中,两个相同的“当……”代码块有什么误解。如果有两个相同的事件代码块,程序运行时,它不是任选其中之一执行的,而是都要同时执行的,所以我们把这种用法叫做“并行”,意思是说在需要让一个角色一边做一件事情,一边做另一件事情时,可以这样做。
而我们这里,不是要让计时一边要暂停,一边又要继续啊!我们是要让它在进行时能暂停,在暂停时才能继续。
所以应该选择在一个“当按下空格键”下面编写代码。
问题是,怎么编写,才能保证在计时进行时,让它暂停,暂停时又能让它继续呢?
(请同学们先回答这个问题后继续后面的内容)
我们之前学的什么编程概念,可以让程序在不同情况下进行不同的操作啊?
A. 循环
B. 条件
C. 变量
D. 顺序
对了,条件可以做到。不过条件代码块一般要在“如果”后面放一个“六边形”的代码块,表示“判断的标准”。那我们这时应该把这个条件判断的标准设置为什么呢?
让我们仔细分析刚才的任务:在计时进行时,让它暂停,暂停时又能让它继续。看到了吧,这里已经明确告诉我们条件判断的标准了,就是按下空格时,如果计时正在进行,这时可以暂停;而如果计时已经暂停,那么这时可以继续。
可是正当我们满心欢喜,以为可以试着在“如果”后面填上“计时正在进行”这样的判断标准时,却发现Scratch中根本没有这样的“六边形”代码块:“侦测”代码组里没有,其他代码组里,也没找到。
拿什么来表示这种“计时正在进行”或“计时已经暂停”的状态呢?
可能有的同学对“状态”这个词难以理解。其实状态就是一个东西的呈现出来的样子。比如说一辆车,正在飞驰,那我们可以说它的状态是“运动的”。再比如说一件衣服,弄脏了,那我们也可以说它的状态是“脏的”。
那这里我们计时正在进行或暂停,也可以说计时在“进行的状态”或“暂停的状态”。
问题是怎么在程序中表示这种状态呢?计算机里知道计时是什么状态,它也跟人差不多,是需要记的。
(请同学们先回答这个问题后继续后面的内容)
用哪个编程概念,可以让计算机记住计时的状态呢?
A. 循环
B. 条件
C. 变量
大家这里知道了,我们用Scratch编程时,凡是计算机要记住的,都应该给它创建“变量”才能记住。变量里存放的是一条一条可能发生变化的信息。
现在,我们可以动手操作了。
先给程序创建一个变量,叫什么呢?因为我们是要存计时到底是“进行中”还是“已暂停”的,所以就叫“计时状态”吧!
(练习时间)
那有了这个“计时状态”变量怎么用呢?
别着急,一步一步来。我们在小绿旗一单击时,需要让计时开始,所以要把这个状态改为“进行”。
现在到了最关键的时刻:怎么表示按下空格时,计时暂停,再次按下,计时继续?
其实有了“计时状态”这个变量,一切都好说了。因为我们可以对“计时状态”进行操作了。
我们在这个“当按下空格键”代码块下面,就可以这样了:
在如果后面,对“计时状态”是否等于“进行”进行判断,如果是的话,就把“计时状态”设为“暂停”,反之则把“计时状态”设为“进行”就可以了。判断变量和某一个值是否相等,需要用到“运算”代码组中的“A=B”,完成后如下:
(练习时间)
编写好了这个代码,我们就可以试试效果了!
可以看到,在运行起来后,按下空格,可以让变量“计时状态”的值,在“进行”和“暂停”之间切换了。
事情到这里,才刚进行到一半呢!
因为我们的目标是让倒计时真正暂停和继续啊,而不是在这里看到这个变量的值在“进行”和“暂停”之间切换。
但是,既然已经有了这个变量,说明我们离最终目标也不远了!
怎么把这个变量用起来,是个好问题!下面这个分析值得大家当成一个套路,记住!
因为很多同学会想到,实现今天课程的效果,肯定要用到变量,但是怎么用,是个大问题!
其实大家要回到咱们一开始实现倒计时的方式,是怎么做的?用的“重复执行9次”,对不对?9次结束就开始播放声音了。
为什么可以用“重复执行9次”?因为简单的倒计时,就是从9倒数到0,重复换9次造型,就完事儿了。
而可以用空格键控制的倒计时呢?
大家想一想,暂停时,程序本身的时间应该继续吧?应该。程序的时间在小绿旗开始后,就会一直顺向计时了,它跟咱们编程要完成的倒计时9、8、7……0,是不同的。注意区分。
而程序本身的时间在流淌时,我们随时又可能会按下空格键,恢复计时功能,对不对?就是说咱们计时的代码,要不要执行,是有条件的,需要根据刚才我们设置的“计时状态”这一变量来判断。
(请同学们先回答这个问题后继续后面的内容)
要让计时换造型的代码,根据“计时状态”这一变量取不同值时,作相应的改变,应该用什么编程的概念?
A. 循环
B. 变量
C. 条件
因一个东西的不同,另一个东西也不同,这是典型的按条件执行。所以我们使用“条件”来编程。
而刚才还有一个词“随时”。这个又该怎么办呢?
(请同学们先回答这个问题后继续后面的内容)
要实现计时状态“随时”改变,都能做出相应的改变,需要使用另一个什么编程概念?
A. 循环
B. 条件
C. 顺序
D. 变量
只有把“条件”判断放到“循环”里,才能保证“随时”都能判断“计时状态”的值。并且这种“随时”还不知道是几秒以后,还是几天以后的意思。(请同学们直接回答)这样的话,我们如果使用固定次数的循环,行吗?
不能使用固定次数的循环,而应该选用:无限循环。因此现在我们把代码块这样写好:
(练习时间)
这个重复执行一会儿是要放到刚才“当小绿旗单击”的最后面的。
大家看,现在还没有填满啊,如果里面要写什么?
计时状态=进行,当然就要继续执行之前正常的倒计时了。
大家说,“否则”里面要做什么?(请同学们直接回答)
“否则”里面什么都不需要做。因此,我们可以把“否则”这一分支去掉。
(练习时间)
这下我们可以运行起来看效果了!暂停继续功能正常了。
BUT……大家发现什么问题了吗?
我们的程序,因为使用了一个“重复执行”,导致到了数字0的时候,停不下来了,又会回到9开始重复计时。这是因为Scratch的“下一个造型”代码块,如果已经到最后一个了,会直接让换回第一个。
有什么方法能让程序在造型换到数字0的时候,就马上停止,不再重复了呢?
有方法。循环除了固定次数的循环、无限次数的循环外,还有一种,叫做带条件的循环。
带条件的循环,会重复做一个事情,直到条件满足时停止,然后程序会继续它下面拼接的代码块。
于是我们需要为循环找好一个停止的条件。那就是造型是最后一个,数字0的时候。
在“外观”代码组里,找到“造型编号”(倒数第三个),用“A=B”比较运算:
设置好这个条件之后,我们把之前“播放声音……”的代码块,放到“重复执行直到……”的下面就可以了。现在完整的代码块是这样的:
点击运行,一切OK!
(练习时间)
到这里我们这个“具有暂停继续功能的倒计时”程序,就圆满完工了!
知识技巧总结:
-
对事件、并行的复习与再理解
-
对条件的深入理解
-
掌握使用变量表示程序状态的用法
-
对循环的深入理解,掌握“固定次数的循环”“无限次数的循环”和“带条件的循环”的区别和联系
课后作业:
请同学们完成让一个小球角色(直径50像素左右,y为0)在舞台上x为-200到200的范围来回慢慢移动。
与非学堂(codingclassonline)
一个专注青少年信息技术教育,探讨少儿编程的教与学,交流技巧、分享资源的公众号。
--------------------------------------
【课件分享】
【超详细Scratch教学课件分享】简单倒计时
【往期每日一题】
-
蓝桥杯青少组选拔赛STEMA考试样题及解析(科技素养及逻辑思维)
-
【Scratch竞赛每日一题】五彩三角形
-
【Scratch竞赛每日一题】旋转问题
-
【Scratch竞赛每日一题】雷电猴与宝箱
-
【Scratch竞赛每日一题】海狸的语言
-
【Scratch竞赛每日一题】加减大师
-
【Scratch竞赛每日一题】限时猜数字
-
【Scratch竞赛每日一题】蹦床游戏
-
【Scratch竞赛每日一题】来回蹓跶的小猫
-
【Scratch竞赛每日一题】小猫回城堡
-
【Scratch竞赛每日一题】薛定谔的猫累了
-
【Scratch竞赛每日一题】小猫狐狸赛跑
-
【Scratch竞赛每日一题】循环变大小
-
【Scratch竞赛每日一题】循环画画
-
【Scratch竞赛每日一题】坐标和反弹
-
【Scratch竞赛每日一题】北极熊快长大
-
【Scratch竞赛每日一题】移动与反弹
-
【Scratch竞赛每日一题】巧用图章
-
【Scratch竞赛每日一题】画线判断
-
【Scratch竞赛每日一题】循环变量
-
【Scratch竞赛每日一题】小猫克隆
-
【Scratch竞赛每日一题】小法师的穿墙术
-
【Scratch竞赛每日一题】随机数
-
【Scratch竞赛每日一题】小猫拿苹果
【近期考竞通知】
-
蓝桥杯青少组选拔赛 报名开始
-
8月编程竞赛汇总,Python、Scratch都有
-
2020年第二场NCT全国青少年编程能力等级测试即将启动
-
青少年编程能力等级测评(CPA)2020年第二季开始报名
【高赞原创集锦】
-
半部论语治天下,一段Scratch懂论语
-
好书推荐:《CODE》
-
编程却被我妈一直说成玩游戏,我该咋办?
-
【免费快领】Scratch编程秘籍PDF
-
就《从计算机世界出发窥探中西文明的差异》的补充
-
为什么精心制作的少儿编程课程观看的人不多?
-
零基础孩子的第一节Scratch课,应该学什么?
-
Scratch晋级Python,一路要打通哪些关?
-
一名合格的程序员,如何让 林有有 = 没有
-
这些东西,比光让孩子学编程重要100倍
-
这位同学,Scratch代码里可不能填这么大的数字哦!
-
玩转Scratch,炮弹击中目标有多难?
-
【长文慎入】从计算机世界出发窥探中西文明的差异