黄丽娟
摘 要:培育学生的计算思维,需要不断向理论求索、向实践深潜、向课堂扎根。在新课标指引之下,要致力于把程序结果的教学转变为程序过程的教学,以过程的夯实带动结果的评估应用。苏科版小学信息技术五年级Scratch模块《克隆飞机大战》一课,立足问题界定、抽象建模、调试完善三大环节,以问题解决为载体,带领学生在提高解决问题能力的同时,培育计算思维。
关键词:小学信息科技;计算思维;Scratch;《克隆飞机大战》
计算思维作为信息科技课程核心素养之一,是指“个体运用计算机科学领域的思想方法,在問题解决过程中涉及的抽象、分解、建模、算法设计等思维活动”[1]。培育学生的计算思维,需要不断向理论求索、向实践深潜、向课堂扎根。笔者认为,在新课标指引下,要致力于把程序结果的教学转变为程序过程的教学,以过程的夯实带动结果的评估应用,培育学生的计算思维。在编程教学中,教师可以立足问题界定、抽象建模、调试完善三大环节,以问题解决为载体,带领学生在提高解决问题能力的同时,培育计算思维。本文以苏科版小学信息技术五年级Scratch模块《克隆飞机大战》一课为例,来具体说明。
一、问题界定:用自然语言描述真实情境下的项目需求
《义务教育信息科技课程标准(2022年版)》倡导真实性学习,以真实问题或项目驱动,引导学生经历思维过程,建构知识,提升问题解决能力。[2]一个好的项目问题,往往源于对现实情境中项目需求的深入挖掘。因此,在确立问题时需要交代清楚需设计什么样的问题,根植于这样的情境土壤,再明确项目的具体需求。
(一)融通生活,创设真实情境
一般来说,教材情境是教学内容的重要依托。一方面,我们可以基于教材,深入理解教材的“本意”和“原汁原味”,用教材教;另一方面,我们还可以融通生活,创设真实情境,使教学内容更具真实感、意义感。
《克隆飞机大战》一课,教材中的情境是下落的飞机与火炮之间的大战(见图1),情境设置比较简单。在实际授课时,教师以新冠肺炎疫情为切入点,将教材上的飞机角色替换成驾驶飞机的病毒,将火炮角色替换成疫苗,从原来的“飞机火炮大战”变为“疫苗病毒大战”。教师出示图2,激趣设疑:“新冠肺炎疫情停课期间,杨同学创新开发了这款抗疫小游戏,你们想不想用Scratch软件把它制作出来呢?”
通过真实情境的创设,展示疫苗与病毒之间的顽强斗争,表达“抗疫有我,众志成城”的坚决,赋予课题以现实意义。
(二)逐级分解,描述项目需求
在提出问题情境之后,教师带领学生将其逐层分解为一个个小问题,直至分解到最小的问题单元。学生采用自然语言或流程图的方式描述需求,再依据解题逻辑,自下而上逐层递归来解决问题。
本课中,教师带领学生从“疫苗病毒大战”的问题情境出发,按照角色分解任务和需求。学生用自然语言分别描述出各角色的行为状态、角色与角色之间的互动关系等,得到下页表1。
学生用自然语言描述的过程,也是思维逐步清晰的过程,为接下来程序语言的转化打好了基础。
二、抽象建模:用程序语言建构问题解决中的算法过程
Scratch教学中的抽象是引导学生将真实复杂问题与场景抽象、简化,提取出相应的角色与舞台,并进行归纳、整理,分析它们各自的表现行为,用自然语言进行描述。这在上述环节中其实已有提及。接下来,就要通过控件转化,将学生的自然语言描述变为程序语言——这就是建模。抽象建模思想是计算思维的重要本质内涵。
(一)理解“控件”,奠定抽象之基
要让程序教学成为“有米之炊”的活动,则必须要以适当的知识积累为基础,这样学生才有进一步探究的依据和资源。“控件”作为一项知识,是程序脚本组成的最小单位,是学生解决问题、发展计算思维的基础材料,类似于写作中的字和词。
其实,不仅仅局限于本课,在Scratch教学初期,我们都采用“读一读”“译一译”“归归类”“搭一搭”等活动,让学生熟悉10个模块中的具体控件,并形成整体的初步印象,使之成为学生日后进行抽象建模随时调用的材料。当这些零碎的材料通过有机组合,嵌入有意义的情境中,用来解决实际问题时,它的价值就实现了。
(二)转化语言,明晰提取之源
抽象和建模是程序设计的核心步骤,关键在于将问题分解时的自然语言描述转化为程序语言。实际教学过程中,巧妙运用“关键词—关键控件”的方法,找到自然语言中的“关键词”,随后调用先前积累的“控件库”,提取相应的“关键控件”,从而获取搭建程序的基础材料。
本课中,学生找到了“很多个病毒”“碰到地面”“消失”“变成炸毁造型”等关键词,通过与“控件库”的链接,提取“克隆”“当克隆体启动时”“碰到边缘”“删除本克隆体”“切换到造型”等关键控件,完成了从自然语言到程序语言的转化。当然,能否顺利提取“关键控件”,还取决于学生对控件的熟悉程度以及与自然语言的勾连程度。
(三)搭建脚本,串联建模之线
教学至此,由自然语言转化后的“关键控件”,依然是零散的、孤立的,是各个互为意义的控件的简单堆叠。因此,需要有一根明确的主线,串联起这些“关键控件”,使之能结构化地指向问题解决,赋予其整体性和意义性。
一段完善的程序需要“关键控件”与“辅助控件”的组合。“关键控件”由前期自然语言转化而来,“辅助控件”则由后期调试得来,是对前期自然语言不完善之处的补充、修正与完善。本课中,图3中的“等待”“重复执行”等控件就起到“辅助控件”的作用。让学生参与到程序设计的建构中去,掌握单个控件与整体程序脚本之间的普遍联系,可以有效促进学生计算思维的发展。
三、调试完善:用“三化”策略迭代提升算法解决的实现效率
具备计算思维的学生,能尝试模拟、仿真、验证解决问题的过程,反思、优化解决问题的方案。[3]因此,一段程序初步编写完成之后,还需要回溯,再调试、再加工、再打磨与再优化,是从“细化”到“简化”“优化”,最后到“模块化”的逐阶递进,不断地追求程序设计的最优化和程序运行的轻量化。在此过程中,循序渐进地培育学生的计算思维。
(一)内容细化,环环相扣
内容细化既着眼于脚本搭建的细微之处,同时又观照前后整体,包括每个角色之间的运行方式、相互关联等,更强调系统思维。以本课中的“病毒”角色为例,不仅要考虑其“克隆”后“克隆体”往下落的过程,还需要考虑其初始化时的位置,不能出现在“边缘”等角色自身的细节性问题,碰到“疫苗”角色后要切换“炸毁”造型并消失的角色间关联性问题。整个过程环环相扣,哪怕最微小的差错也不能被忽略,因为最微小的差错也有可能出现结果的“谬以千里”。
(二)结构简化,清晰精练
结构简化主要是针对程序流程上烦琐、冗长、臃肿的问题而提出的。例如,在对“很多个病毒从空中往下掉”这段自然语言进行程序语言转换时,大多数学生借助原有经验,很容易想到用“复制”来解决,这是一种方法。但这种方法就意味着,有多少个病毒掉下,就要复制多少个病毒角色,且后续如果脚本需要微调,这些复制品也一并都要修改,这无形中增加了大量重复操作的时间。而利用“克隆”控件对程序进行简化,就巧妙地避开了这些问题。
(三)控件优化,轻量适切
控件优化更倾向于追求控件运用的适切性。尤其是在两类具有相似作用的控件使用上,要依据程序轻量化、适切性等原则,进行合理选用。例如,“隐藏”与“删除本克隆体”控件的选用,本课中,学生知道了用“隐藏”控件雖然能让飞机消失,但它一直还在程序后台运行着,占用着电脑的内存,当飞机越来越多的时候,很可能出现卡顿的现象;而“删除本克隆体”就能让程序实现轻量化。控件优化依赖于迁移,而迁移的实现有赖于迁移源和迁移目标所共同具备的因素,而思维,恰恰“是一种自觉地理解共同因素的过程”。学生在迁移、辨析等活动中实现了思维的活化与深化,有效发展了计算思维。
参考文献:
[1][2][3] 中华人民共和国教育部.义务教育信息科技课程标准(2022年版)[S].北京:北京师范大学出版社,2022:5,3,5.