基于计算思维培养的图形化编程教学方法
——以《询问交互》一课为例
2022-11-07任春霞浙江省绍兴市上虞区实验小学
任春霞 浙江省绍兴市上虞区实验小学
《义务教育信息科技课程标准(2022年版)》明确指出信息技术学科核心素养由信息意识、计算思维、数字化学习与创新、信息社会责任四个要素组成。[1]计算思维是个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动,由算法思维、评估、抽象、分解、概括等要素组成。本文以浙江摄影版小学信息技术教材(2020)五年级下册第二单元第7课《询问交互》为例,进行基于计算思维培养的课堂教学探究与实践。
● 兴趣引入,了解问题
本课以观看《达拉崩吧》的音乐动画片段引入。《达拉崩吧》是学生感兴趣的歌曲之一,用学生感兴趣的歌曲引入并以此为主题,可以让学生的兴趣保持较强的稳定性。在兴趣的驱使下学生可以一步步深入探索,克服困难解决问题。此音乐动画片段的歌词及剧情如图1所示。
图1
动画片段中交待了故事发生的背景,通过国王和勇士的对话、勇士和恶龙的对话引出课题“询问交互”。在勇士与恶龙交谈之后动画片段戛然而止。“接下来的故事是怎么发展的呢?我们来看一位小导演的设计。”笔者打开根据《达拉崩吧》动画设计的图形化编程小游戏——“拯救公主”,并与学生一起玩游戏。
通过玩游戏可以了解游戏的规则:公主被恶龙抓进了山洞,恶龙守在山洞口,勇士要救出公主,必须回答恶龙提出的5个问题。答对了给出答对提示:恶龙身体变小并离开山洞一段距离;答错了给出答错提示:恶龙身体变大,位置不变。
● 抽象建模,理清问题
利用计算思维解决问题,是指运用计算机领域的思想方法,对问题进行抽象、分解、建模,并设计算法形成解决问题的方案,且通过算法的实现、测试来验证方案的有效性,最后再反思优化方案。抽象是此过程中的第一步,也是至关重要的一步。抽象是指从众多事物中抽取出共同的、本质性的特征,而舍弃其非本质特征的过程。[2]抽象的过程就是根据要解决的问题,抓取事物中与问题解决有关的重点属性,忽略与问题解决无关的部分属性。建模是通过抽象后,将问题转变为适合在计算机中表示的数据结构和形式化的数学模型。“拯救公主”游戏抽象后建立的模型如图2所示。
图2
根据皮亚杰认知发展阶段论,五年级学生的思维处于具体运算阶段,此时的学生能从一个概念的各种变化中抓住实质,但思维状态还离不开具体事物的支持,正处在从以具体形象思维为主逐步过渡到以抽象思维为主的过程中,且此阶段的思维运算是零散的,还不能组成一个完整的系统。所以,对五年级的学生来说抽象和建模较为困难,于是笔者以三个简单具体的问题引导学生:①游戏中的角色有哪些?②这些角色分别做了什么事情?③这些角色做了事情之后有什么变化?
在回答了这三个问题之后,可以得知有“勇士”“恶龙”“用户”这三个角色。其中用户即勇士,勇士的行为就是回答问题。恶龙的行为是:①提出问题(可以提出一个或多个问题);②设置正确答案;③判断勇士的回答。由此可知,主要行为集中在恶龙这个角色身上,同时,恶龙还有相关属性的变化,如语言、造型、大小、颜色、位置等。
图3
● 由大到小,分解问题
计算思维中的分解是指将一个比较复杂的问题分解成若干个容易解决和实现的小问题。在这个游戏中,恶龙的行为最为复杂,让学生直接编写脚本较为困难。根据对模型的分析可以由大到小将其分解成4级问题(如下页表),其中恶龙的第3级和第4级问题均可自由发挥。将问题分解之后,便可根据问题逐个设计算法,编写程序。
● 编写程序,解决问题
算法是解决问题的方法和步骤,经过建模和分解之后,学生已经可以用自然语言清楚地描述游戏的流程。自然语言虽然通俗易懂,但书写起来较为繁杂,对复杂问题需要用很多文字才能表达清楚,无法做到一目了然。与自然语言相比,流程图更加简洁明了,形象直观,便于查看和参考。于是,笔者提供流程图图框,请学生讨论分析并将相关内容填进图框内,引导学生画好流程线,一起将自然语言转化为流程图。学生可以根据流程图图框(如图3)到对应的区域寻找代码积木块。在流程图的指引下,脚本编写便水到渠成(如上页图4)。其中,“所提问题及答案”“答对提示”“答错提示”由学生自主创造有趣的问题并设置对应提示。
图4
有流程图的引导,学生能够自主编写脚本,但由于个体差异,不是所有学生都能够顺利进行,于是笔者提供以下建议引导学生自主获取知识:①鼠标指向积木块,根据指令文字提示操作指令,了解相关指令功能;②参考课本获取操作知识点;③查看教师提供的微课获取相关知识点;④与同学和教师交流获得知识和方法。
以上建议层层递进,大部分学生可以通过寻找相关提示和参考课本完成操作,少部分学生需要查看教师提供的微课,极个别学生需要同学和教师的帮助。
● 调试评估,完善方法
调试就是对程序进行测试,模拟用户使用的状态,找到程序中的不妥与错误之处并对应进行修改完善,让程序变得更加完美。
本课中学生在调试时发现一个问题:当游戏中的问答结束后,如果想重新玩游戏,恶龙并不会自动回到最原始的状态,即无法重新玩游戏。为了解决这个问题,学生思考并提出需要将游戏进行初始化设置。在进行初始化设置时应根据恶龙的大小、形状、颜色、位置等做相应的初始状态设置,每位学生根据自己游戏中恶龙的实际情况进行初始化脚本编写(如图5)。
图5
● 互玩寻异,开拓思维
在评价环节,笔者请学生互玩游戏,找找对方的游戏和自己的游戏的不同,在互玩的过程中拓展了学生的思维,并进一步激发了学生的灵感。学生在课后继续讨论交流游戏故事,思考实现过程,在碰撞中推进游戏进程,在设计游戏中提高了思维的深度和广度,这样既促进计了计算思维的形成,也发展了自主学习和深入学习的能力,使信息素养得以提升。
编程教学可以使学生逐渐养成良好的思维习惯,让学生能够在真实情境中发现问题,提取问题的基本特征,对问题进行抽象、分解、建模,制订解决方案,并执行优化方案,是培养学生计算思维的有效途径。作为信息技术教师应让学生能够使用计算机科学领域的思想方法去解决问题并能有意识地总结解决问题的方法,将其迁移到其他问题的求解中,只有这样才能促进学生核心素养的形成与发展,使学生具有能够适应终身发展和社会发展需要的必备品格和关键能力。