基于计算思维培养的Scratch教学论文

时间:2021-08-31

  以“想象、创作、分享”为主题的Scratch,趣味性、易学性、实践性、创新性都适合中小学生,特别是作为简单易学的编程工具,用拖动指令块代替敲代码,学生可以避开程序设计语言语法的学习和调试,集中精力对问题进行求解,这为学生计算机思维的培养提供了便利条件。笔者以《大鱼吃小鱼》一课为例,就如何培养学生的计算思维同大家一起探讨。学生此前已经学会了Scratch中常见的指令块,本节课是Scratch的综合应用课。课程任务是:在10秒钟内记录大鱼吃掉小鱼的总条数。

  ● 利用面向对象的方法抽象出问题求解的模型

  计算思维作为一种思维过程,很难用知识描述的方式显性呈现出来。其中方法是计算思维的重要内容。计算思维的方法可分为数学方法和工程方法,其中数学方法涉及抽象、递归、证明、形式化表达等,工程方法包括系统方法、分治法、面向过程和面向对象方法等。教师通过这两类方法的传授,把有关计算思维的相关思维特征和方法分解到每一个具体的教学内容之中。

  “大鱼吃小鱼”游戏实现起来比较复杂,因为它不是一个结构化很强的问题,没有明确要求先做什么再做什么,前后逻辑性不是很严密,小鱼在游,大鱼也在游,时间还在走,当小鱼碰到大鱼,要被吃掉,其他小鱼依然不受影响,继续游,时间继续走。程序中出现了几个并行的流程时,如何进行任务统筹呢?如何贴近实际进行程序的优化提高效益呢?利用求解的顺序步骤很难解决问题,这需要从另外一个思路思考问题求解的方法——面向对象的方法。把问题抽象出“对象+触发事件”模型,分析游戏中涉及哪些对象,这些对象的初始状态是什么,哪些对象是静态的,哪些对象是动态的,动态对象的激发事件是什么,调试运行后,是否达到最初的预期,没有达到如何优化。学生从具体的事例中抽象出计算机能够解决的模型,从而达到解决问题的目的。

  教学片段1:

  师:游戏中有哪些对象?

  生:一条大鱼,许多条小鱼,背景,被吃小鱼计数器、计时器。

  师:它们初始状态是什么?

  生:计数器初始化为零,计时器初始化为零。舞台背景选择与“海底世界”类似的画面;大鱼初始位置为随机(如图1);小鱼初始状态为游动(如图2)。

  师:分析完后,有哪些对象处于初始状态?并思考将要发生哪些事件?

  生:事件1,当键盘上的方向键被按下的时候,大鱼的游动会发生变化;事件2,当大鱼碰到小鱼的时候,小鱼被吃掉,被吃小鱼计数器自增1;事件3,如果计时达到10秒,游戏结束,并显示被吃小鱼的条数。

  在Scratch教学中,如果教师不把分析的过程、思考的过程及优化的过程呈现出来,那么学生也仅仅获得知识,因缺乏必要的思维训练,他们也无法获得举一反三、触类旁通的能力以及普适的技能。让学生从本质上和全局上来建立对问题的解决思路,便于学生进入到类似问题的求解中。

  ● 利用约简、仿真等方法抽象出事件的处理过程

  计算思维的本质是抽象和符号化,在Scratch数字作品创作过程中,无论是动画故事的编制还是游戏的开发,都需要把具体的问题抽象成符号或对象,并使用指令块把相应的问题“计算”出来。Jeannette M.Wing教授认为这种能将一个问题清晰、抽象地描述出来,并将问题的解决方案表示为一个信息处理流程的思维过程就是计算思维的训练过程。计算思维是通过约简、嵌入、转化和仿真等方法,把一个看似困难的问题重新阐释成一个人们知道怎样解决的问题。计算机模拟大鱼吃小鱼这一现实问题,怎样让学生经历一个通过约简、嵌入、转化、仿真等方式进行化难为简的过程,体会计算思维的本质——抽象和自动化,是计算思维培养的突出表现。

  教学片段2:

  师:大鱼(碰到键盘上的方向键)触发什么事件?

  学生操作如图3所示。

  师:如何模拟大鱼吃掉小鱼的情境。现实中看到的场景是大鱼张开嘴巴,小鱼消失……

  生:可以使用“碰到”大鱼的时候,小鱼“隐藏”的方式,模拟小鱼被吃掉的场景(如图4)。

  师:很好,同学们已经学会使用“仿真”方式来解决问题。其实计算机仿真是一种很好的思路。例如,实体机器人因为成本高,难以普及,所以市场上出现了仿真机器人,也能让初学者体验到机器人的搭建和传感器应用等功能。当时间达到规定时间10秒时,游戏结束。

  学生执行如图5所示操作。

  在教师的引导下,学生对实现大鱼游动的程序进行了简化,抽象出通过按键控制大鱼横纵坐标值的变化,大鱼吃小鱼的场景,仿真为小鱼碰到大鱼时则消失,并抽象为Scratch功能块——隐藏,计数变量自增1。学生在触发事件的.处理过程中,不断使用简化、仿真等计算思维的方法把现实问题转化成Scratch的功能块,从而达到利用计算机解决问题的目的。

  ● 利用纠错优化调试程序

  计算思维是通过冗余、赌错、纠错的方式,在最坏的情况下进行预防、保护和恢复的一种思维。当学生在Scratch中编写脚本进行程序设计时,纠错优化是始终伴随其中的。当学生运行程序发现与预期的情况不同时,纠错的行为就开始了,他们会去寻找到底哪里出现了问题,纠错就是通过测试和调试去实现,而纠错同样是计算思维的重要概念之一。

  教学片段3:

  师:在调试中,发现小鱼游动的画面非常机械,如何改进?

  生:在小鱼游动的程序中,添加 可以使小鱼游动的画面更加自如。

  师:当小鱼隐藏后,游戏重新开始时,原先被吃掉的小鱼不再出现,那么如何修改?

  生:在小鱼初始化程序块中添加。

  师:上述实现的是一条小鱼,实际情况中,应该有好多小鱼,那么如何修改?

  生:其他小鱼与第一条小鱼的不同点是外观不同(大小、形状、颜色),相同点是功能相同(来回游动,碰到大鱼消失)。

  师:外观不同,可以通过选择图库中不同的角色,也可以复制原角色,利用Scratch自带的图片编辑工具填充不同的颜色区域。功能相同意味着脚本相同,可复制获得,利用代码复制可以简化编程工作。调试运行后,发现复制脚本能让许多小鱼具有相同的位置和状态。这么多小鱼不可能从同一点出发,不符合实际情况。利用随机数字模块可以解决小鱼起点出现在相同位置的问题。