张超金:从娃娃抓起,小学生一定要开始学Scratch编程
编程教学中融入计算思维
——以“猴子接香蕉”为例
文 | 张超金
计算思维是指个体在运用计算机科学领域的思想方法形成问题解决方案的过程中产生的一系列思维活动,包括抽象、分解、算法、纠错和归纳五个核心要素。
计算思维已成为当前信息技术教育重点研究的热点问题,也是信息技术学科核心素养之一,它在促进人的全面发展方面具有不可替代的作用。信息技术课堂是计算思维培养的主要落脚点。
对信息技术教学而言,Scratch编程课程是训练学生思维能力的一个重要平台——将计算思维融入Scratch编程教学有助于改变学生的思维方式。
Scratch平台具有图形化、模块化、易操作等特点。教师应用该平台能有效激发学生的编程兴趣,有助于学生专注于设计和创造,促进学生计算思维的培养和能力的发展。
然而,笔者通过随堂听课、问卷等方式调查发现,目前的Scratch编程教学依然存在着“重技术,轻思维”以及教学策略运用不当等问题。如何在小学Scratch编程教学中有效融入计算思维?
笔者认为可采用抽象建模、分解问题、提炼算法、调试纠错、总结归纳五个教学步骤以及与之对应的教学策略。下面以“猴子接香蕉”为例,就相关问题展开探究思考。
一
Scratch编程教学的常规教学总体流程构建
建构主义学习理论认为,学习是引导学生从原有经验出发生长(建构)起新经验的行为过程。
基于该理论,笔者从计算思维的内涵出发,结合多次的教学实践反思,审视诊断,对小学Scratch编程的常规教学流程进行梳理(如图1)。
图1 小学 Scratch 编程的常规教学流程
二
在编程教学中融入计算思维的步骤及策略
笔者基于常规教学流程,就Scratch教学中有效融入计算思维的具体策略展开探讨。
(一)抽象建模,形成思维
抽象指的是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。通过抽象有利用降低问题难度,把现实生活中的问题转变为计算机能执行的问题。
抽象是实行编程之前的一项非常重要的工作。学生学会抽象更易于找到Scratch编程的切入点,从而掌握程序设计规则。
1.创设生动情境,由抽象变具体
教师根据教材内容与教学目标,提前制作一件高质量的范例程序作品,在课堂的引入环节创设生动有趣的情境,让抽象问题变得直观。
课堂教学伊始,笔者直接发起“猴子接香蕉”游戏活动让学生参与(如图2)。
图2 “猴子接香蕉”游戏活动
随后,提出问题:“游戏程序里有几个角色?”学生初步判断:有4个角色,分别是猴子、分数、香蕉、舞台背景。但学生的总结并不全面也不准确,其中分数、香蕉并非角色,这也为后面埋下伏笔。
游戏的导入极大地激发学生的学习兴趣,调动他们的学习积极性和主动性,让学生在“玩”中学会程序的操作方法,使抽象的程序变得形象具体。
2. 思维导图助力,由无形变有形
教师利用思维导图能将思维形象化,很好地理清程序中角色关系,让学生更直观地了解现实生活与计算机程序的联系,掌握将无形思维转化有形导图的方法。
笔者通过游戏创设生动有趣的情境,提出问题,引导学生思考程序所需角色;让学生仔细观察舞台上香蕉、猴子的运动规律(香蕉自上而下运动,碰到猴子消失;猴子随鼠标左右移动),从而引出本课的重点。
笔者出示程序的思维导图(如图3),通过提问引导学生思考问题的关键所在。笔者利用导图对程序进行整体规划,将现实生活的对象与计算机需要处理的对象对应起来,化无形为有形。
(二)分解问题,理顺思路
分解指把一个较为复杂的问题分化成若干个简单的问题,这样就可降低大型程序的设计难度。学生通过分解问题,分析理顺角色的动作及程序设计思路,可将重难点进行分解并逐一突破。
1.简化语言描述,分解程序设计步骤
为有效引导学生把握程序设计的方向,使他们在制作作品时思路清晰,笔者指导学生抓重点词。
在抽象建模的基础上,笔者要求学生根据事先整理好的思维导图,对程序的设计过程进行语言描述。通过简化学生的语言描述后得出重点词:左右、上下、消失、加分、变量。
笔者继续引导学生认识“变量”,并分解得出程序设计步骤:左右—上下—消失—加分。
2.拆分执行效果,细化脚本模块
教师引导学生操作程序并仔细观察确定程序的4个主要问题(如图4),再在此基础上细化所需要的模块:①怎样使猴子随鼠标左右移动?②为什么不设置y坐标?③怎样让香蕉自上而下运动?④怎样实现统计分数的功能?
图4 程序执行过程
其中问题③最复杂,涉及香蕉的随机出现、垂直下落等问题,需要调用随机指令和循环指令。为了帮助学生熟悉规则,笔者让学生描述思考过程,帮助他们理解两条重要指令的作用。
师:怎样让香蕉随机出现?
生:要用到随机指令。
师:随机指令有什么作用?
生:可以让香蕉在指定范围内随机出现。
师:为什么要用循环指令?
生:因为香蕉要不断重复出现、下落。
教师引出数字和逻辑运算脚本模块及控制模块,将两者梳理为“在( )到( )随机选一个数,重复执行指令”的Scratch语言结构,当x坐标的范围确定后,可让香蕉在这个范围内随机出现;反复执行“y坐标增加-10”等指令后,香蕉纷纷落下。通过分析教学重难点问题,让学生学会细化脚本模块。
(三)提炼算法,训练思维
用于解决问题的一系列清晰指令被称为算法。运用算法描述并解决问题是一种策略。经过前面的抽象和分解,已达到了将自然语言描述与程序设计语言链接起来的目的。
笔者考虑对于分支和循环难以表达清楚,不是先放手学生进行Scratch编程,而是先借助流程图引导学生针对每个小问题进行分析,提炼出解决问题的算法。
1.借助流程图,引导学生探究
编程教学的一个重要目标就是培养学生自主探究能力。考虑学生程序设计经验不足,笔者出示了具体的程序流程图(如图5),这样有利于学生规范而有效地描述算法,引导学生在Scratch软件中找到对应的脚本指令模块。
图5 编程学习流程
其后,让学生根据程序流程图和脚本模块,尝试探究,编写脚本,体验编程的乐趣。学生通过细化脚本模块,查看分析流程图,形成基本的编程思路,为有效自主学习奠定了基础。
2.突破重难点,透彻理解算法
“猴子接香蕉”一课教学重难点是:设计带有判断条件的循环指令,结合流程图编写程序。教师引导学生开展讨论,并得出了多种算法。不同的算法执行的情况略有差别。
学生在讨论、探究、实践过程中,拓宽了编程思路,发展了计算思维,这是教师所期望的结果。“猴子接香蕉”的编程训练主要是运用循环指令,通过调试对比执行效果。通过训练,学生很容易就理解循环指令的意义,并灵活运用。
(四)调试纠错,巩固成果
“纠错”在Scratch教学中是不容忽视的一项工作。因为在整个课程的学习中出错和纠错的行为始终发生着,只有通过不断调试纠错才能引发学生深入思考,调整程序,甚至采取不同的算法去实现不同的效果。这样不仅有利于学生掌握知识和技能,而且有利于培养学生的计算思维能力。
1.阅读脚本,增强纠错自主性
审读脚本是一种最具实效性的纠正程序错误的方法。随着编程学习的深入,所用到的脚本数量越来越多,为了方便编程,提高程序调试纠错的效率,很有必要养成边读脚本边做注释的习惯,这也是一种纠错思维。
例如,边读“猴子接香蕉”脚本边注释。“点击绿旗开始,重复执行‘将x坐标设定为鼠标的x坐标’”(注释:猴子跟着鼠标左右移动);“移动x:在-240到240区间随机选一个数y:178”(注释:香蕉随机出现);“重复执行将y坐标增加-10”(注释:香蕉垂直下落)。
学生阅读脚本及注释后,再接受教师的点拨,就会较容易发现脚本中的错误并进行调整。
2.小组合作,增强调试有效性
教师根据教学实际,给学生提供调试程序的学习情况记录表(见表1),让学生对“猴子接香蕉”这个程序进行调试,观察并记录错误的情况,找出错误,然后探讨,分析原因,修改并完善程序,反复调试,直到完全正确。
例如,在编程教学中,教师发现香蕉不能随机出现或不能垂直落下等问题,先引导学生仔细观察调试情况,填写程序纠错学习记录表,记录程序中的错误现象和错误语句,再思考怎样修正。
学生如果不会修正,可以在小组内部研讨,也可以请教教师。学生通过对脚本程序进行纠错调试的训练,不仅巩固了所学知识,锻炼了自身的合作学习能力,还有效培养了计算思维能力,为拓展学习奠定了基础。
(五)总结归纳,积淀思维
归纳是指从许多个别事物中概括出一般性概念、原则或结论的思维方法。训练学生的归纳能力,有助于学生运用各种程序设计的技巧与方法,关注共性问题,将一个问题的解决方法迁移到另一个问题中去,进而内化学生的计算思维能力。
通过前面4个步骤的教学,学生已初步形成了计算思维能力,但这种思维能力尚未成熟和稳定,这时候仍需要在教师的引导下,对所学内容进行总结归纳,巩固学习结果。
1.分析作品,拓展创作
在总结归纳的过程中,教师引导学生分析初步形成的作品,再进行梳理,形成知识网络。在这样的情况下,学生已经积淀了一定的计算思维能力,教师可以布置一些具有挑战性的任务。
例如,笔者增加这样的拓展任务:在游戏中添加一些绿色的香蕉,设置了“如果猴子碰到绿色的香蕉就扣1分”的进阶游戏,并开展“评一评”活动。
笔者借助拓展任务和评价表,引导学生创作,对循环语句、变量等相关内容举一反三,分析并灵活运用,有效提高了学生的计算思维能力。
2.作品展示,分享交流
展示作品是对学生学习成果的肯定和鼓励,也是学生再度学习的一种方式。教师为学生提供展示作品的机会,要求他们对教学内容进行总结归纳。这样有利于进一步拓展学生的思维,使学生对作品创作更有兴趣、更有想法;有利于锻炼学生的语言表达能力,使学生进一步理顺编程思路,同时获得成功的体验,并积淀成果。
教无定法,贵在得法。在Scratch编程教学中,教师要在教学设计过程中融入计算思维,并积极探索行之有效的教学策略,以充分激发学生学习编程的兴趣,调动学生的积极性,让学生在自主、探究、合作、分享的过程中学会创造性地思考,从而促进学生计算思维的发展。
注:本文系全国教育信息技术课题“基于核心素养的小学创客课程教学策略研究”(编号:184440031)的成果之一。
(作者系广东省中山市坦洲镇林东小学教师)
文章来源:《中小学数字化教学》2019年第6期
责任编辑:祝元志
微信编辑:李中华
监 制:朱哲
往期荐读
林华:进步的教育在于在变化中保持秩序,在秩序中保持变化 | 名师引领