基于模块化程序设计思想的Scratch教学实践
黄雨蓓
在信息时代,计算思维正成为和读、写、算一样的基本素养,程序设计是计算思维形成的基础。在中小学一线教学中,程序设计模块的教学主要存在两个问题——程序设计语言烦琐和教学模式单调,这影响着学生的学习动机,继而对认知效能产生负面作用。借助于基于“创作、分享”设计理念的Scratch教学,让学生在玩中学,提升其学习技能,培养其算法思维、设计思维及创造性思维等,可以有效解决上述两个问题。
苏科版小学信息技术(五年级)教材中采用了Scratch 2.0版本,它将枯燥乏味的程序指令转换成十种不同颜色的积木,包括动作、事件、外观、控制、声音、侦测、画笔、运算符、数据、更多模块等,学生只需通过鼠标拖拽,将对应的指令模块移至脚本区,便可在轻松的环境中实现掌握程序设计的思维和方法,并能利用它表达自己的思想和感情。下面,笔者以小学信息技术五年级Scratch模块中的《花朵缤纷》一课为例,谈一谈如何在小学阶段的Scratch学习中渗透模块化程序设计思想。
问题分析,任务分解
分析问题就是分析用户需要完成的任务是什么,用户用它可以实现哪些功能,完成哪些操作,解决“做什么”的问题。在了解了程序设计的目的后,对想要实现的效果进行自顶向下的分析,将问题划分为几个部分,各个部分再进行细化,直到将它分解为可以通过具体的模块来实现。像这样以功能块为单位进行设计的过程,实现其求解算法的方法就称为模块化。在分析过程中,教师需要引导学生探究如何分析问题、分解问题、分类项目,由大化小,由繁至简,再分别进行分析和研究,并梳理出各模块之间的逻辑关系。然后,再进行子任务分析,从点到面,逐步解决。在整体规划的基础上,教师需要引导学生对每一个子任务进行分析,弄清楚每个子任务的性质、对象之间的相互关系,对子任务中每个对象的造型、脚本、状态逐个分析,再到对每句指令、参数、先后执行顺序进行分析与搭建。
本节课的导入环节,教师先创设情境,播放色彩缤纷的花朵在舞台绽放的动画效果,给学生带来美的感受,使学生带着舒畅愉悦的心情进入学习状态。接着,教师引导学生在欣赏动画效果的同时思考如何实现五彩缤纷、花开满园,对动画实现过程进行分解。学生明确了任务,思考并讨论,将整个动画效果分解为五颜六色、花开满园、花瓣生花、绘制花瓣。
案例呈现:
师:春天草木萌动,百草新生,草绿如茵,繁花似锦,请看动画(播放五颜六色花开满园的场景动画)。看了这样的场景,你们的心情有什么变化?
学生从中感受到场景的美,心情舒畅且愉悦。
师:同学们想不想在Scratch舞台上实现这样的场景呢?你们觉得在Scratch舞台上实现五颜六色花开满园的场景,需要哪些构成元素?
螺旋上升,认知分层
分解问题是将问题分解为若干相对简单、清晰的小问题,使得任务更为明确具体。自顶向下,逐步求精,则是由问题到解答、由总体到局部、由一般到具体,逐步精化、具体化,补足细节,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。
学生通过问题分析后,对需要用到的控件有了初步的设想,然而控件之间的逻辑关系还需要进一步整理。通常我们采用流程图的形式,为学生逐步从自然语言向抽象的程序设计语言过渡提供帮助,让学生厘清搭建脚本时各个控件之间的关系,逐步形成整体图示的概念。
在本节课中,五颜六色花开满园的场景这个过程相对比较复杂,可以将动画效果进行分解,逐步分解成四个部分(如下图)。“五颜六色花开满园”環节采用“将颜色特效增加”控件,解决了“花开满园”环节的花朵颜色单一的问题;“花开满园”环节采用了“随机函数”(Scratch“运算”模块中的“在-240到240间随机选一个数”)解决了花朵只能在舞台固定位置开放的问题;“一朵花开”环节采用“图章”“右转?度”“重复执行?次”“清空”四个控件解决了角色的复制、旋转以及程序执行方式的变化。
个性策略,求解多途
在教学中,教师应尽量先让学生厘清思路,知道整个问题被分成几个程序模块,怎样实现每个模块的功能,明白每个模块之间的触发关系,学生具备了模块化程序设计思想,自己的学习才能更加合理高效。另外,在教学中教师可以引导学生将模块化的小任务以及模块之间的触发条件转化为流程图,并可以让他们尝试完善或绘制流程图,以此来进一步明晰思维。
然后,学生根据分解的模块以及模块之间的触发条件,在Scratch中找到相对应的控件,再根据流程图的逻辑结构,依托控件进行组合完成脚本的搭建。学生搭建脚本时才是学生真正动手操作编写程序的阶段,这也是学生将自己的思维进行不断验证的过程。在这一过程中如果遇到困难,可以参照分解出来的模块以及模块之间的触发条件来搭建脚本,使得搭建脚本的过程更高效,问题得以解决。
在“一朵花”的功能模块学习中,教师引导学生说出整个模块脚本的实现是按照所需要的“图章”“右转?度”控件,并且根据执行的逻辑顺序完成这个功能模块脚本的搭建。在之后的“花开满园”“五颜六色花开满园”模块中,根据不同的场景要求,在原本的功能模块基础上增加触发条件,并进行逻辑顺序的调整,从而让脚本丰满起来,完成一个个功能模块脚本的搭建,实现预期设想的动画场景。
案例呈现:
师:“五颜六色花开满园”场景是在“花开满园”功能模块的基础上增加了“将颜色特效增加”功能来实现的;而“花开满园”场景又是在“一朵花开”功能模块增加了随机函数“在-240到240之间随机选一个数”来实现的;最后怎样实现“一朵花开”呢?这又离不开基本图形“一片花瓣”,在“一片花瓣”的基础上增加“旋转”和“图章”功能就可以构成一朵花。
学生根据分解出来的这些功能模块以及模块之间的触发关系找到相应的控件并搭建成完整的脚本。
调试完善,迭代优化
对于程序设计来说,调试就是不断修复错误完善程序的过程,它也是个循环往复的过程:编写程序、测试、修复错误、再测试……直到程序正确运行。逻辑是程序的基础,逻辑走不通的程序很快就能够通过运行结果反馈出来。通过反复的练习和修正,可以不断提升学生的逻辑思维能力。学生在完成脚本运行程序的时候,常常会发生各种各样的问题。这时就需要回顾原本分解的功能模块和脚本,检测错误之处。
在“一片花瓣”怎么变成“一朵花”模块,学生通过思考讨论得出需要用到“右转?度”“图章”等控件,通过演示,学生发现只用一次“右转?度”和“图章”控件,花瓣只出现一片。这是程序中存在的不足,促使他们寻求新的解决方法并不断地调试。
案例呈现:
师:(单击小绿旗)花瓣向右旋转多少度?(72度)第二片花瓣出现了,我们还需要增加第三片花瓣,怎么办呢?
生:再单击小绿旗。
师:第四片、第五片如何增加呢?
生:再接着单击。
师:这个方法好吗?有没有更好的解决方法呢?
生:“重复?次”控件。
编程和下棋很类似,都是在既定规则下解决问题。规则并不复杂,却能变化无穷。学生在编写程序的时候,同样的程序效果经常可以通过不同的方法来实现,这时就需要分析并选择最优的方案来完善程序。
在“一片花瓣”变成“一朵花”环节,教师提出问题:“刚刚我们的脚本实现的是5片花瓣拼成一朵花,如果要实现8片花瓣拼成一朵花,应该怎么修改脚本呢?”
不管花瓣片数怎么变,若干片花瓣旋转一圈形成一朵花这个规律是不变的,因此“花瓣片数”与“旋转角度”的乘积始终是360度。也就是说,要想把花瓣片数改成8片,重复次数就为8,旋转角度即为360度/8=45度。修改数值后运行脚本并观察花朵形成的形态——花朵“形态美观”即可。
在“花开满园”环节,在测试时发现,多个花朵总是会在同一个位置开放,这时先要对该现象进行原因分析,再思考解决方法。
案例呈现:
师:为什么多个花朵会在舞台的同一位置开放呢?请同学们自学教材,并讨论解决问题的方法。
生:(自学教材并讨论)因为我们没有给花朵在舞台上设置移动的脚本。
师:应该使用哪一个对应的脚本呢?
生:隨机函数“在①到⑩间随机选一个数”,将其中的数值修改为舞台的坐标,并拖动到“移到x:0 y:0”控件的两个数值框中,即“移动x:在-240到240间随机选一个数 y:在-180到180间随机选一个数”。
在“五颜六色花开满园”环节,花朵大小都是一样的。
案例呈现:
师:五颜六色花开满园,舞台上开放的花朵大小一致,为了达到更逼真的效果,怎么实现花朵大小不一呢?
生:(思考并讨论)控件“将角色大小增加”可以实现花朵大小不一。
学生运行脚本发现问题:花朵一直在变大。
师:怎么解决?
生:找到控件“将角色大小设定为固定值”,将其放在“重复执行”之外,当脚本停止运行后,将角色大小设定为固定值。
生:还可以用“随机函数”来解决。
小结与回顾
在Scratch模块的学习中,以模块化的程序设计思想引领,自顶向下分解任务,分而治之解决问题,调试、优化脚本的程序设计流程,很好地锻炼了学生的思维。在整个学习过程中,基础知识的学习和基本能力的提高,与分析、思考、实践整合在一起。通过这种积木式的脚本编写与有效的信息表达和数字化创作,既培养了学生的算法思维,也进一步提高了学生的自我表达能力。通过对本案例的分析,可以明确如何在儿童编程软件中进行模块化设计的思想实践,通过多种分层剖析,帮助学生形成有效的知识链接,最终提高计算思维能力。