程序设计教学中“润透”理念的实施策略
许丁文
编程教学,能否讲透,决定着教学是否真实有效。因此,教师应放弃固有的知识储备,和学生在同一起跑线上循序渐进地透析编程项目的每一个环节,让师生思维同步,确保学生透彻明了。下面,笔者以App Inventor手机编程为例,关注学生思维,实施润透理念,简单分享在程序设计教学中如何让学生透彻明了。程序主要涉及变量、随机数、顺序结构、选择结构等知识点。为了讲透本项目,笔者设计了文字版和图片版两个认识维度。
● 猜拳游戏文字版
剪刀石头布猜拳游戏文字版,用到界面布局、标签、按钮三种类型的组件,用于显示机器手形、人手形、反馈结果、触发指令等功能。
1.师生体验
要让学生明白程序的功能,首先和学生一起体验分析程序的玩法,程序运行后如图1所示。
2.逻辑设计
思考一:当出剪刀按钮被点击时,界面上有几个地方发生了变化?学生很容易发现有3个变化(我→剪刀,机器→剪刀或石头或布,结果→平局或人类赢或机器赢)。
思考二:界面发生变化是在进行什么操作的情况下发生的?学生回答是人点击了出剪刀按钮,按钮触发了指令让机器去执行,使得三个位置内容发生变更。从而顺利得出,只要为出剪刀按钮添加指令即可。
思考三:添加怎样的指令呢?当出剪刀按钮并点击时,要实现我→剪刀的变化,需要修改我的什么属性?学生很容易找到正解的块语言指令。
思考四:机器标签显示的文本有几种情况?学生:三种。如何表示出三种?这里涉及大学里的数组,为了激发学生的求知欲,必须让学生清晰地剖析出数组里每个元素和编号的对应关系。第一环节,采用列表,让学生了解列表代码(如下页图2),列表输出效果如下页图3所示。第二环节,人出剪刀,机器出三个手形,不符合规范。提示通过列表中的索引值,输出三个手形中的一个,学生探究。第三环节,转发学生画面进行剖析,索引值为1时的代码如图4所示,运行结果如下页图5所示。索引值为2、3时类推。
思考五:索引值为1、2、3是定值,而机器出的手形是随机的,如何让索引值为1~3的随机数呢?提醒通过内置块数学中的随机数和变量来实现,学生探究,教师剖析讲解,变量声明定义,赋值,顺序执行。
思考六:软件如何判断人机对弈的胜负结果?学生很自然想到,如果索引值为1,机器出剪刀,人出剪刀,平局。如果索引值为2,机器出石头,人出剪刀,机器赢。如果索引值为3,机器出布,人出剪刀,人类赢。自然引出程序设计中的选择结构,通过内置块中的控制模块进行选择结构的设置,通过数学模块中的两个数值相等返回结果为真的表达式,测试出剪刀按钮代码(如下页图6)。运行结果无误后,出石头和出布直接复制代码,修改对应参数和值的匹配对应关系即可。
经过对六个大问题循序渐进的分析、思考、实践、探究,绝大多数学生都能轻松地完成项目实施,再利用学生互助,本节课变量、赋值、数组、索引值、数学逻辑运算、顺序结构、选择结构等重难点知识得到有效突破,教学目标达成率达到100%。
● 猜拳游戏图片版
剪刀石头布猜拳游戏图片版,用到界面布局、图像、标签、按钮四种类型的组件,用于显示机器手形图片、人手形图片、反馈结果、触发指令等功能。图片版是原有文字版的迭代版本,涉及变量、赋值、随机数、图像的表达,文本字符串的拼接运算,选择结构等。有了文字版的基础,学生研究图片版会相对简单,对此前文字版项目设计中相关知识的理解更加透彻。
1.师生体验
图片版程序功能和玩法比较简单,只是在文字版的基础上,将显示的文字变成图形,更加直观。程序运行后如下页图7所示。
2.逻辑设计
思考一:点击出剪刀按钮,如何让图像组件上显示剪刀手形呢?图像的哪个属性发生了变化,教师演示通过图像组件图片属性值的设置可以实现,图片可以本地上传,也可在上传的资源中进行选择。本例中,因为涉及后期的随机数和字符串拼接,所有图片采用相同的图片后缀。
思考二:逻辑设计时,通过代码块如何实现呢?学生因为没有基础,不知道图片代码的表达方式,教师可以直接演示通过文本字符串表达(如下页图8)。这里涉及图片后缀名,很重要的知识点,学生探究字符串拼接(如下页图9)。学生有前面随机数应用的基础,相当一部分会自主探究出如下页图10所示的表达。
思考三:如何判断人机博弈输赢呢?学生有文字版中选择结构的知识储备,只要能分析出通过Mickey手形编号进行逻辑运算返回符合条件的结果即可(如下页图11)。至此,逻辑设计代码基本完成。出石头和布对应的代码只需要复制并调整相应参数,做好相应手形编号的匹配,对应出正确的反馈结果。
剪刀石头布猜拳项目,看似一个非常简单的案例,要学生做出这样的作品不是什么难事,但学生要能透彻理解里面各种变量传值关系,后期还要能举一反三触类旁通就不那么容易了。在经过反复实践后,笔者选择了本课的课堂实施形式,同一主题设计文字版和图片版两个层次的项目訓练,学生两节课都学得非常充实愉悦,教学效果明显提高,达成率100%,为后期更多复杂项目案例的实施做了良好的铺垫。
笔者对App Inventor的教学实践,已持续了一年左右时间,解决了如平台账户管理、并发连接数、平台项目数限制等问题,但仍有许多困惑,最核心的要素在于如何讲透,如何规避学生的简单模仿,让学生学得入心入脑,为后期创造性思维提供强有力的支撑,让学习成为学生自己的事情,让学习真实地发生在学生身上。编程教学困扰着广大信息技术教育工作者,期待更多一线教师分享程序设计教学中的感悟和心得。