王翠芝 刘君亮
爱玩是孩子的天性,儿童早期的学习是在玩中进行的,游戏对儿童有强大的魔力。既然学生对玩游戏那么痴迷,如果让学生成为游戏的设计者和创作者,情况会如何呢?华南师范大学附属小学的王继华老师在任教的五六年级的信息技术课程中进行了尝试,以一个个游戏的创作为主线开展儿童数字文化创作,在创作游戏的过程中掌握课堂内容,并且领会创作的思想,其中在五年级王老师利用美国麻省理工学院开发的Scratch儿童可视化编程软件来教学生学习基本的程序设计知识,学生的学习效果很好。笔者通过观察王老师的课堂,更加体会到王老师为创作而教的思想。下面以《猜数字》游戏创作为例来进行课堂评述,以期为读者提供参考案例。
王老师在五年级的信息技术课程序设计教学部分使用Scratch软件作为创作的工具平台,在教学实践过程中提出了“为创作而教”的教学模型,该模型包含“提出创作主题→范例研习→模仿设计→自由创作→分享交流”五个阶段,并且引导学生创作了很多的游戏作品。《猜数字》游戏是王老师为教授程序设计中的变量、条件判断及循环语句内容时而设计的小游戏,课堂上通过引导学生编写此游戏从而达到对知识内容的掌握,并且领会创作的思想。该主题的教学包含了“为创作而教”教学模型的五个阶段,本文只是对第一节课的评述,主要涉及前三个阶段。
● 第一阶段:提出创作主题
本节课的教学内容是程序设计的变量、条件判断和循环语句。由于没有相应的教材,而Scratch软件本身带有一些例子,王老师根据自带例子针对自己的教学内容重新进行了设计,把授课的内容融入到游戏的创作过程中,设计了新的游戏《猜数字》。课堂伊始王老师和学生进行互动,一起玩《猜数字》游戏,游戏界面如图1所示,学生的积极性很高。然后王老师询问学生想不想创作出这样的游戏呢?怎么样创作出比这个游戏更好玩的游戏呢?这时学生都很兴奋,想象并谈论着自己要创作的游戏。随后王老师提示学生先根据游戏的效果,对游戏中的角色进行抽象并设计实现的方法,为下面的范例研习做准备。
● 第二阶段:范例研习
范例研习是游戏创作中的重要环节。在范例研习的教学方法上,如果教师采用课堂示范然后学生进行模仿的方法,学生往往会抄写教师的语句或者很机械地模仿教师的程序,尽管能制作出教师示范的游戏,但是在自由创作阶段,就不知道如何下手,显然学生没有真正理解,学生也没能获得迁移的能力。王老师分析原因发现,学生常遇到学习困难的原因是对游戏的流程设计不够清晰。鉴于此,在课堂教学中王老师增加了流程图设计的环节,采用解释流程图为主范例制作为辅的范例研习方法,在提出创作主题之后先引导学生设计流程图,范例研习阶段注重分析范例的流程图,并引导学生对比自己的流程图,找到差异,逐渐掌握游戏创作的建模方法,为接下来的模仿设计以及自由创作奠定基础。下面以课堂实录的形式介绍王老师在范例研习阶段是如何引导学生进行流程图设计以及进行流程图的对比和解释的。
1.引导学生理解流程图的课堂实录片段
师:刚才我们一起玩了《猜数字》的游戏,谁能用语言描述一下这个游戏是如何设计的?或者说,如果是你要创作一个猜数字游戏,你会如何设计呢?
学生发表了自己的看法,用语言描述了如何进行设计。
师:我们一起来看一下该游戏的程序设计流程图,并思考我们与之的差距(如图2)。
评述:在提出创作主题以及观看游戏效果后,学生们思考着如何去实现这个游戏或者如何改进,这时老师提供让学生表达的机会,在学生表达之后,教师向学生展示了“猜数字”游戏的设计流程图,并引导学生思考老师画的流程图和自己心中所想的流程图的区别。这对于养成学生的思考的能力有重要的作用。
师:我们结合刚才看的游戏的过程来分析程序的流程图。点击绿旗,游戏开始,在说完一些话语之后游戏出现询问“请猜数字是多少”,在这之前是先设定好了一个随机数字,这个随机数字在1到100之间,这里随机数字的设定是通过变量来实现的,那么什么是变量呢?
生:能变的数。
师:回答得很好。变量里存放的数字从哪里来呢?
生:可以设定为一个数。
师:设定为一个数的话,那么一个游戏只能玩一次了,下一次就知道了答案,一猜就对了。所以需要再想办法,谁能说一下呢?
生:让电脑随便产生一个数。
师:很好,那么如何实现呢?我们可以给它一个范围,电脑会随机地选取一个数字,即产生一个随机数进行赋值。
评述:对比实际游戏来看程序流程图,在解释流程图的过程中提出本节要讲到的知识点变量,并用一步步询问的方式引导学生回忆之前所学的生成随机数。这样就结合实际提出讲授内容,让学生先有一个感性的认识,并思考如何用之前学过的知识进行实现。
师:大家可以看到,我输入一个数字,电脑根据这个数字与提前产生的数字之间的关系不断地给出“大了”、“小了”、“对了”这样的反馈,我们不停地输入、电脑不停地判断直到回答正确为止。对应到程序中,我们输入的数字相当于回答的那个数字,这时候继续判断所输入的是对的还是错的。如果输入的是对的,它说回答对了。如果没有对,这时候就又有了一个判断,判断是大于还是小于。判断结束后继续询问数字是多少。
评述:先有实际体验再来分析流程图,这个顺序能使学生更好地理解流程图,在实际游戏和流程图之间建立清晰的联系。
师:如果我们输入的数据不对,我们每次都要这样判断吗?有没有简便的方法?
生:循环判断。
师:对,这时候就需要一个重复执行,询问这个数字是多少,然后判断,直到我们输入对了为止。只要我们没有猜对这个数字,它会在里面不断地询问和判断。
评述:引导学生回忆和使用之前的知识,用之来解决面临的实际问题。
师:每输入一个数字都要继续判断,那么我们使用什么语句来进行条件判断呢?程序中提到进行大于、小于及等于的判断,这属于对程序的侦测,所以可以在侦测里面寻找,用里面的语句来实现侦测的功能。
评述:提到了将要讲到的“条件判断”的判断方法。
师:接下来是调试,看程序执行的是否正确。编辑菜单中找到单步执行,反复调试是很重要的。如果这个做好了,可以加上计时器功能(记录答对需用的时间)、计数功能(记录输入数字的次数),或者回答正确后出现一些小红花等以使游戏更加完美。
评述:最后提到程序的调试以及提出不同难度的问题。
2.在Scratch中进行演示的课堂实录片段
师:下面我们在Scratch中演示操作,操作时注意这些步骤是如何实现流程图中的功能的,重点是要达到对流程图的理解,而不是抄写这些语句,理解了流程图,功能是可以用多种语句来实现的。
学生停止抄写老师的语句,转而动脑思考这些语句和流程图的关系。
评述:提示学生理解流程图并根据流程图来编写程序,引导学生掌握正确的学习方法。
师:在程序演示中老师直接用小猫这个角色了。现在小猫要你猜数字。首先设定一个变量,我们进入变量模块中,这时候变量模块里是没有语句的,需要我们新建一个变量(如图3所示),变量的名字可以用中英文或数字即可,但是最好用有意义的英文,形成良好的编程习惯。新建一个变量时要注意后面有两个选项“只适用于这个角色”和“适用所有角色”,这个作品中只有一个角色,选择只适用于这个角色和适用所有角色都是可以的。如果是多个角色,需要选择只适用于这个角色。(学生点头表示理解)
这个变量是多少呢?如果是一个数值,那以后一直是这个数值,而显然我们呈现的数值每一次都是不同的,所以可以是任何数,随机产生一个数即可(如图4),数值范围是1~100。
评述:有了前期对流程图的分析,程序设计阶段提到的概念以及用法都能很好地理解。
师:给变量设定了一个随机数,接下来是询问数字是多少。我们来找一下询问在哪里。
生:侦测模块中的询问并等待。
评述:通过提问学生学过的内容使学生回忆。
师:询问之后是出现一个对话框,让我们输入,然后进行判断。询问会一直重复执行下去。这需要控制模块里的循环语句来实现,控制模块里有很多种类的重复执行语句。今天我们用的是“重复执行直到”这个循环语句,那么重复执行到什么时候呢?这时候就需要进行条件判断了,我们判断“谁等于谁”。当我们的回答等于变量的值时就表明对了,循环结束,并显示“对了”,这时候整个程序结束(如图5)。
如果不等于怎么办呢?我们知道要再进行判断,判断是大了还是小了,并且每一次输入后如果不等于都要进行大了还是小了的判断,这步可以仿照刚才的循环和条件判断来判定(如图5、图6),大家思考如何来进行呢?循环的方法很多,大家思考如何使用不同的循环来实现(如图7、图8)?最后进行调试,如何进行调试呢?
生:编辑菜单里的单步执行,点击运行,执行到的语句会一直闪动。
师:大家自己操作,根据理解的流程图来编写程序,有问题的请告诉老师。
评述:在范例研讨环节中,无论是流程图的设计还是游戏的创作演示,都注意引导学生对游戏创作的整体把握,同时把本次课的主要学习内容变量、循环、条件判断融入其中,让学生知其然并且知其所以然,并且探索多种实现方法,而不是模仿老师的程序设计语句,从而使学生达到能力上的提升。
● 第三阶段:模仿设计
在学习创作之初,模仿是很重要的一个学习技能。在这里王老师强调对流程图的模仿,根据刚才所解释的流程图来进行游戏的创作。这时候老师进行个别化辅导。在辅导过程中发现,学生遇到的大部分问题的原因是对流程的设计不够清晰。
下面是摘取的一部分问题。
Q1:运行程序,输入数字,但是无论输入哪个数字,结果都显示“对了”。
师:程序中语句太少,只实现了部分功能,对照流程图,没有实现对输入数字是大了还是小了的判断。
Q2:运行程序,输入数字,一直出现询问“是多少”。
师:当调试时出现问题时,我们用程序对照着流程图来进行分析。在对大了还是小了做判断的时候,循环里还用继续询问“是多少”吗?在循环直到回答数字等于所设定答案时,已经加入了询问数字是多少了。这里还需要吗?
生:不需要了。
有的学生很快就实现了猜数字的游戏,有的尝试用了几种实现方法,有的增加了计时和计数的功能。学生学习的积极性很高,掌握得也较好。
● 小结
王老师践行“为创作而教”的教学理念,把教学内容融入游戏创作的过程中,并最终达到能独立创作的程度,在这个过程中王老师有三个地方做得非常好。
1.为游戏和程序之间搭建一座桥梁——程序设计流程图的引入
王老师在授课过程中通过对流程图的使用,注意培养学生的设计能力和创作能力。范例研习阶段王老师并没有直接介绍这个游戏是如何做的,而是先让学生说出自己的设计构想,引发学生思考,接着引导学生理解该游戏的设计流程图,在解释流程图的过程中提出本节课要掌握的三个知识点。这就使得学生的参与度提高,不是被动地接受,而是先进行主动的建构并且不断地形成认知冲突,从而达到对知识更深刻的理解。王老师把游戏的角色要素抽象出来用流程图表述,这样学生进行理解的难度就降低了,同时也培养了学生在编程之前的建模能力和设计能力。
2.将授课内容融入游戏的创作过程中
在流程图的解释过程中,王老师首先引导学生思考什么是变量,如何进行设值,这对应Scratch中变量模块的新建变量以及通过生成随机数给变量赋值。然后继续引导学生如何进行大于、小于及等于的判断,这对应Scratch中数字和逻辑运算中的大于、小于及等于的逻辑运算符以及侦测中的条件判断。这样就把有难度的变量学习可视化,使学生较为容易地接受,并且这个学习发生在游戏创作的过程中,学生学习的积极性很高。
3.引导学生把握程序流程,促进能力的迁移
在模仿阶段,学生模仿流程图来进行创作,而不是照抄老师演示的程序设计语句,这一点有助于培养学生活学活用的意识和能力。在学生遇到问题时,老师不是直接告知其答案,而是引导学生对整体程序设计进行反思,从流程图对比上意识到问题所在并且寻找解决方法。这样使学生知其然并且知其所以然,有助于知识的迁移和应用。王老师利用游戏的强大“魔力”,引导学生从游戏的“消费者”走向“创作者”,在模拟创作的过程中,学生学到的不仅是程序设计的基本知识,还有更为可贵的设计和创作思想。让学生成为创作的主体,老师的作用不再是“禁止”学生玩游戏,而是“引导”在创作游戏的过程中进行学习,我们期望有更多更好的课堂实例。