基于脚本解构的Scratch教学
摘要:本文在计算参与理论的指导下,针对小学Scratch教学中的常见问题,立足整体,构建了基于脚本解构、建构的学习路径,努力提升学生的系统思维能力和创新水平。在此基础上,作者探讨了该路径在小学Scratch部分教学中的实践应用,并提出了教学注意点。
关键词:Scratch;解构;重构;逆向工程
中图分类号:G434? 文献标识码:B? 论文编号:1674-2117(2019)17-0030-04● 问题提出
Scratch是美国麻省理工学院开发的一套开源程序,与传统编程软件相比,它不需要用键盘逐行输入代码,而是拖拽已定义好的程序模块,像搭建房子一样实现程序的编写,让学生充分体验到创作的乐趣。采用Scratch开展程序设计教学有如下特点:
(1)界面直观,趣味性强。Scratch提供了类似视频编辑器的界面舞台,在上面可以任意添加、编辑和拖拽角色以及背景,加上丰富多彩的角色库以及背景库,哪怕只是最简单的选择和摆布,也可以设计出生动有趣的动画场景,能够一下子就抓住学生的注意力。
(2)入门简单,操作性强。Scratch采用了图形化编程,学生只需动动鼠标就可以进行编辑,控件的上下组合可以清晰地表现程序的流程。Scratch的修改也很简单,无论是舞台上的角色,还是脚本区内的脚本,都可以轻松地增减和调整。
(3)功能强大,创造力强。Scratch不仅可以控制舞台上的演员的活动,还可以建立复杂多媒体作品,包含图像、声音、动画、视频等。Scratch可以对多种事件进行响应,对颜色、视频以及多种外设进行侦测,此外还可应用于机器人控制、物联网设计等。
正因为Scratch有如此多的优点,所以它现在已较为广泛地應用于小学编程学习。例如,在江苏省中小学教学研究室编著的《小学信息技术》2018版教材中,Scratch已完全替代了Logo语言,成为“算法与程序设计”模块最重要的教学工具。然而在教学实践中笔者也发现,利用Scratch开展程序设计教学,易进入如下误区:
(1)重舞台规划,轻脚本选择。学生易关注绚丽的画面和环境创设,将较多的时间用于背景的设计和角色的选择,对动画背后的脚本设计却失去了应用的兴趣。
(2)重控件应用,轻程序分析。学生易满足于采用简单的控件(如循环控制、随机侦测等)实现舞台上角色的频繁动作和跑位,对背后渗透的算法关注不够。
(3)重片段编写,轻系统设计。学生易满足于动画设计的达成,教学环节设计过于简单,未进行系统分析,缺少必要的桥梁和支架。
为解决以上问题,笔者尝试改变通常“部分—整体”式教学方法,让学生不再只是单纯绘制角色、编写脚本,而是让“设计功能完整的应用程序”成为他们学习Scratch的重要任务。[1]在实践中,适时采用基于脚本“解构—建构”的方法开展Scratch教学(以下简称解构式教学),取得了较为理想的效果。● 模式分析
解构,类似于软件的逆向工程,其根本目的和方法即是“程序理解”。在解构式教学中,学生对整体的把握、对部分的理解都不是被告知的结果,而是学生自己探究或探索所获,凸显了学生作为主要的行为主体的现实存在。[2]在实践中,笔者探索出基于脚本解构的学习路径——整体感知—程序分解—脚本阅读—功能增改—学习创作,让学生在实践创作中学习Scratch。该学习路径具有以下特点。
1.有利于提高学生的学习兴趣
在Scratch的入门环节,一般都是初步了解Scratch的主要界面和功能,编写基础的脚本。在这一阶段,由于内容新颖、难度较小,所以学生的学习兴趣较为深厚。但是随着学习的深入,任务难度不断加深,学生逐渐有了畏难和厌倦情绪。此时,适时引入一个成功的Scratch作品,让学生的学习目标更明确,学习过程更生动、直观,可以提高学生的学习兴趣。
2.有利于学生对程序的整体把握
Scratch脚本设置并不难,难的是对动画(或脚本)进行整体设计。在解构式教学中,学生学习活动的起点是整体,终点也是整体,避免了学习任务的分割化或碎片化,让学生对程序的整体架构了然于胸。
3.有助于利用学生的已有经验
在Scratch的教学中,学生并非一定是零起点,之前他们对Scratch的基础控件、基本流程都有了一定的了解。通过脚本解构,让学生又回到了熟悉的基础知识和基本技能的应用和操作之中,并让学生懂得了如何用和何时用,提升了学习效率。
4.有助于聚焦中心学习内容
Scratch的解构式教学,其核心在于脚本的阅读和修改,而该部分的内容是针对本课的教学重点和难点进行设计的,有利于学生抓住重点内容进行实践,提高了学习效率。
5.可灵活调整学习的难易度
在解构式教学中,可根据学生的能力、兴趣等进行针对性的调整,设计不同的学习方案和创作要求,必要时还可以提供支架,让所有的学生都能获得整体感知,完成必要的学习任务。● 实践范例
《吃豆子游戏》(执教:建湖县第二实验小学教师商艳)是苏教版小学信息技术五年级第8课,属于模块2“算法与程序设计”的内容。本课的重难点是运用按键控制结合侦测与随机函数控件创作游戏。教材将教学内容分为三部分:第一部分是理解“面向……方向”控件含义,会判断角色朝向与角度的关系,学会使用方向键控制角色;第二部分是运用侦测控件完成吃豆人脚本设计;第三部分是用随机函数让豆子出现在舞台上的任意位置。在教学中还可以适当安排创新环节,让学生根据自己的思考,继续对程序进行开发。
1.整体感知
与传统教学模式不同,解构式教学法立足于整体,关注学生是否能够把握整个作品的意义,理解作品“为何而做”,从而渗透“自顶而下,逐步求精”的程序设计思想。
教学片段:
师:老师给同学们带来一款游戏叫“吃豆子”,请同学们带着问题玩一玩。边玩边思考:如何控制吃豆人移动?豆子出现的位置有什么规律?(用左移键控制吃豆人向左移动,用右移键控制吃豆人向右移动。豆子从舞台上方随机位置出现,直线下落,碰到吃豆人后消失)
设计意图:通过初步体验游戏,让学生感受按钮响应这种交互方式,了解角色的动作与游戏内容,为深入研究建立基础,便于学生对脚本、控件进行形象化的解读。
2.程序分解
程序分解就是将完整的脚本进行拆解,目的是理解部分,降低学习的难度。程序分解可从三个方面入手:一是按程序功能,将结构化程序按功能分成若干个小程序模块,阅读每个小模块相对独立的功能;二是按循环体,将循环结构解构为循环变量、终止条件和循环体几个部分分别理解;三是按分支,先理解双分支,再理解多分支,最后阅读嵌套的分支,必要时画出流程图,便于学生理解。
教学片段:
活动1:研读范例程序,认识实现角色指定运动方向的关键控件。
活动2:拆分舞台上方任意位置落豆子的动画,从局部优化游戏。
设计意图:这两个部分的教学活动,分别让学生聚集于用方向键控制角色的运动以及角色的运动与响应。活动的分解,降低了学习的难度,使学习活动更具有针对性。
3.脚本阅读
脚本阅读,其目的是训练学生读懂程序,了解控件的功能和参数设置,掌握程序的设计思想、方法和技巧,为下一步应用阶段的设计提供过渡桥梁和台阶。在阅读中,要让学生掌握每一个控件的执行过程,正确掌握变量的变化。学生还可通过参数的多次尝试修改强化对关键控件的理解。
教学片段:
活动1:
(1)打开桌面上的“game.sb2”文件,自读脚本,找出“吃豆人左右移动”对应的脚本模块。游戏中还常用什么键控制左右移动呢?尝试修改脚本看能否实现功能。
(2)在刚才的脚本中,“当按下……键”有什么作用?尝试修改为其他方向。
活动2:
(1)找出三种动画效果分别对应的脚本(出现、下落、消失)。
(2)控件“將y坐标增加-2”的作用是什么?
设计意图:让学生在删除、修改控件的过程中,实现不同的动画效果,从而深入了解控件使用方法。
4.功能增改
通过研讨脚本,然后模仿修改或编写脚本,可以让学生了解Scratch的基本控制结构以及不同角色间信息传递的规律,更为深刻地理解程序各部分的功能和实现,为以后的熟练运用和创作提升打下基础。
教学片段:
活动1:
模仿左右移动模块脚本,实现吃豆人上下移动(如表1)。
过渡:我们已经掌握了这两种控件的使用方法。怎样修改这两个控件的参数,才能实现吃豆人上下移动呢?
请学生演示为“吃豆人”添加上下移动脚本,展示后,师生交流:
(1)你模仿了哪些脚本模块实现吃豆人上下移动的呢?
(2)“当按下……键”与“面向……方向”控件之间有什么关系?
活动2:
修改豆子下落模块控件中的参数(如表2),改变游戏的难易程度。
小结:当遇到复杂脚本时,我们可以将脚本拆分。通过分析、修改局部脚本中的关键控件,实现局部动画,进而组合出整体动画。调整随机函数的参数范围,也使得游戏变得更有趣。
设计意图:本环节将组合模块拆分,引导学生尝试反复修改,实现不同的动画效果,从而深入了解控件使用方法。
5.学习创作
解构式教学起于整体,又终于整体,目的是在学生深刻理解各功能模块的基础上进行重构和创新,从而对所学习的内容有更为深刻的认识。该环节应鼓励学生大胆想象,创作出更加精美的作品,让学生在实践中获取灵感,体验成功,获得创新的乐趣。
教学片段:
师:同学们,我们已经了解了“吃豆子”游戏是如何设计的。结合今天所学控件,你还有哪些好主意让游戏变得更有趣?请跟同组成员边讨论边完成导学单。
活动1:利用所学,合理创编。
(1)打开桌面的“素材包”,结合“吃豆子”游戏合理想象。运用所学控件,通过改变角色造型、动画效果、舞台背景、交互响应方式,在本课剩余的时间内,创造一个自己的“吃豆子”游戏(如上页图)。
(2)自由创作。
(3)同桌互玩。
设计意图:学生通过创造性的想象,创作个性化作品,既体现团队合作的意识,又充分地调动了每个学生的学习积极性,让不同水平的学生都能在游戏创作中体验快乐,获得成功,实现最大价值的发展。● 注意问题
解构式教学在Scratch部分的教学并不是一种万能教学模式,在教学选择上应注意如下几点:
(1)解构的目的是理解和创新,不能为解构而解构。解构式教学强调在拆解剖析之后进行重构,重构不等于或不限于简单的原貌呈现,应是在借鉴参考基础上的创新。[3]
(2)用于学习并解构的程序应具有一定的典型性,其一定是与本课教学目标和教学重难点紧密契合的,应该是能够直接训练学生学习程序设计能力的典型脚本,应该包含一定的设计思想、方法和技巧。
(3)解构式教学应与Scratch学习内容相吻合,应建立在学生已经初步掌握Scratch的基本操作和常用控件,有设计和编写完整应用程序的需求的基础之上。该教学方法也不可滥用,尤其是单元学习的最后阶段,以免限制学生的创新思维,应鼓励学生采用不同的设计方法和算法来实现需要完成的作品。
参考文献:
[1]王旭卿.从计算思维到计算参与:美国中小学程序设计教学的社会化转向与启示[J].中国电化教育,2014(03):97-100.
[2]朱彩兰.基于解构的教学设计[J].中国信息技术教育,2018(20):24-26.
[3]周旺纯.字字皆文章——浅谈小学信息技术《输入文字》部分的有效教学[J].中小学电教,2013(09):39-41.
作者简介:周旺纯(1972.11—),高级教师,工学学士学位,主要研究方向为信息技术教育、教育信息化。
基金项目:江苏省教育科学“十三五”规划2016年度课题“小学信息技术学科学生计算思维培养的实践研究”(2016-GH01010-00119)。