聚焦“BUG”,小学生程序调试能力的培养

2023-07-21 07:02张晓明
求知导刊 2023年13期
关键词:信息科技能力培养

摘 要:小学生计算思维的训练必须具备系统性。而充分利用程序“BUG”,引导学生发现问题、提出问题以及自主分析、调试、解决问题,可以培养学生的程序调试能力,从而使学生的计算思维得到系统训练。学生程序调试能力的提升也能有效促进其创造性思维的发展。文章聚焦程序“BUG”,对小学生程序调试能力的培养问题进行详细研究。

关键词:信息科技;编程教学;程序调试;能力培养

作者简介:张晓明(1975—),男,江苏省常熟市颜港小学。

一、全方位审视“BUG”,充分认识程序调试能力的重要性

(一)程序调试能力能够有效促进学生计算思维形成

信息科技核心素养的核心之一是计算思维,计算思维是通过冗余、堵错、纠错的方式,在最坏的情况下进行预防、保护和恢复的一种思维[1]。小学信息科技课程中编程模块尤重学生计算思维的培养,编程课堂是用计算思维解决问题的课堂,而培养学生的程序调试能力的过程,就是学生发现问题、解决问题的计算思维训练的过程。在计算思维的培养过程中,调试的头脑风暴过程对于计算思维的训练更直接有效,程序调试能力也是学生计算思维的具体能力体现。

(二)程序的独立调试过程是学生主体性得到充分发挥的过程

从教学的角度来看,调试是一种层次较高的能力。在传统的步骤式教学中,学生跟随教师学习教学案例,却无法真正提升自身的思维能力。所以,在教学环节的设计上,教师应尽可能地让学生发现问题,并尝试通过各种方法进行调试。每节课完成基础知识教授后,教师要为学生预留足够的时间让其进行知识延伸,在摸索“BUG”的过程中不断纠错,掌握程序调试的方法,充分发挥学生的主体性。

(三)程序调试成功的成就感能够激发学生对编程的学习兴趣

编程与人工智能的密切联系使很多学生对编程有着浓厚的兴趣,但在经过一段时间的学习后,简单机械的复制、按部就班的跟从导致编程失去了挑战性,从而使学生的探究兴趣降低。而经历程序调试成功,能够使学生产生更多的成就感,进一步增强深入学习编程的兴趣。

(四)程序调试能力的培养关系到程序的有效优化

学生程序调试能力的培养对程序的后期优化能起到关键作用。程序的优化实际上也是程序反复调试的过程。教师没有精力与全体学生一起进行程序的后期优化,这就需要学生自身具备程序调试能力。调试不局限于纠错,也包括程序的进一步完善和功能增强。这是一个反复打磨的过程,好程序在一定程度上是改出来的。

(五)程序调试能力的培养有助于学生编程自学能力的提升

与其他课程不同,编程是一门在曲折中前行的思维能力训练课程,程序调试能力的培养也是学生编程自学能力的培养。李开复在《做最好的自己》一书中提出这样几种学习境界:熟能生巧→举一反三→无师自通→融会贯通。其中的“无师自通”说的就是自学能力。在学习编程的过程中自己摸索、研究,这就是调试的过程。具备程序调试能力的学生,能够将发现的问题与所学知识相联系,最终抽象归纳出解决问题的方法。

(六)程序调试能力培养有助于学生逻辑思维能力和批判性思维能力的形成

程序调试能力的培养不仅仅是让学生找出程序“BUG”然后修复那么简单,重要的是其能帮助学生形成逻辑思维能力和批判性思维能力[2],这些能力对学生以后的日常生活和学习有着推动作用。

二、多渠道培养学生程序调试能力

编写一段程序并不难,难的是程序出现“BUG”后调试、排查、修复的过程。在具体教学活动中,教师要从多种渠道,采用多种方法引导学生主动探究解决问题的策略和方法,以此培养学生的程序调试能力,切实发展学生的计算思维。

(一)借助流程图和思维导图设计“思维树”,进行系统性调试

教师要让学生从全局出发,充分认识到程序调试能力的培养不是琐碎片段的思维训练过程,要让学生养成在发现问题时先从整体考虑的习惯。笔者在教学中结合流程图和思维导图设计“思维树”,辅助学生培养程序调试能力。

笔者从编程教学第一节课开始就向学生提出要养成使用“思维树”的习惯。在具体教学中,笔者将每节课的案例设计成“思维树”,通过板书由“根”向“枝叶”逐步呈现,做到每个重要环节都能在“树”上有所体现,每个思维过程都能在“树”上找到脉络。

在学生有了一定的基础后,笔者指导学生在纸上自己动手绘制“思维树”,以此帮助学生养成良好的编程思维习惯。教材案例的“思维树”可以让学生在课前先整体设计,然后在教学中逐步补充,最后安排课后作业让学生进行延伸设计。长此以往,学生就可以独立设计一个程序的“思维树”。

“思维树”的应用在程序调试能力的培养中起到了重要作用。在程序出现“BUG”后,学生可以自己根据“思维树”从源头梳理“BUG”,进行纠错。例如,在讲解“克隆飞机大战”第一个环节“克隆飞机”时,总有学生将顶部随机位置出现的部分积木放置在“当绿色旗帜被点击”的事件下。对此,教师要让学生通过反复仔细观察“思维树”,系统理清整个程序的思维过程,寻找思维的遗漏点,引导学生发现应该使用“当克隆体启动”的事件。教师要教会学生先从“思维树”的主干上查找问题,再逐步分级向下细查慢研。

(二)通过拆解程序、分解功能来调试程序

小学编程没有专业编程软件的逐步运行的调试功能,那么我们可以将程序拆分为一个个、一段段小程序,分别来验证结果。反复拆解组合,这种积木重组式的编程方法正是培养学生程序调试能力的巧妙方式。在教学中,当学生不知道哪一个积木出现问题的时候,教师可引导学生先将部分积木从脚本中抽离出来,再运行这个脚本;如果没错,就再从剩余的积木中寻找问题。通过一部分一部分拆解排查的方式,将有问题的积木“揪”出来。

例如,在“花朵缤纷”的教学中,学生刚接触重复的嵌套,有的学生会思维混乱,不知道積木应该出现在哪个重复里,从而将积木放置在“清空”下面,甚至放置在“花朵重复”里。此时,教师就要引导学生将复杂的问题简单化,将两个重复拆分,先运行一朵花的重复,引导学生观察一朵花重复后,第二朵花的位置在哪,从而让学生发现,“移动”应该是在一朵花重复之前或之后运行,最后再通过重复产生很多花朵,这样理清思路,学生就能顺利完成调试。

在拆解过程中,有时也可以采用放大错误现象的方法。在“BUG”不明显、不能准确判断“BUG”的情况下,我们可以试着修改程序,想办法将其拆解,同时通过调整参数等方法放大错误现象,有效定位具体的出错位置,发现出错原因,帮助学生完成调试。

(三)有意预设“BUG”,制造调试机会

教师在课堂预设的过程中,应该结合学生学情,埋“坑”设“洼”,充分挖掘、预设错误。有的错误往往是学生思维的闪光点,不应堵塞,而是要做好预案及时激发、疏导,在学生踩“坑”后再引导他们分析、调试、解决问题。埋“坑”设“洼”能训练学生思维,对学生程序调试能力的培养效果显著。

如在教学“画正多边形”这节课时,当以边长为100步完成正三边形、正四边形、正五边形的绘制后,笔者让学生上台尝试完成正六边形的绘制,并在学生不注意的情况下将画笔下移,使学生绘制的正六边形因碰到边缘而变形。这个问题在学生画更多边形时也会出现,但笔者认为边数越多越不利于学生思维清晰地解决这个难题。学生发现问题后,自主摸索出了调整画笔位置或缩小边长等方法,然后在画更多边形时,利用这个方法成功完成绘制。

又如在教学“克隆飞机大战”这节课时,因为绘制“火炮”和“飞机”是基础操作,笔者在课前下发的文件中有意缩小了“火炮”的火力范围,在学生完成“克隆飞机”后,“飞机”出现在顶部位置时也不指出学生设置的(-240,240)x范围值有问题。最后,当学生完成游戏运行时,他们才发现很多“飞机”无法被击中。此时,笔者再引导学生发挥程序调试能力,寻找解决问题的方法,最终通过增加“火炮”火力范围或缩小“克隆飞机”顶部出现的范围值,来取得理想效果。

编程教学的“BUG”预设,能够训练学生思维,但一节课也不宜设置过多“BUG”,教师要在充分挖掘的基础上进行有效筛选,切实找到能提高学生程序调试能力的思维训练点。

(四)通过程序补充练习培养学生程序调试能力

在编程教学中,教师往往根据教材内容,通过案例的教学培养学生的计算思维。但笔者认为,有针对性地搜集设计一些程序补充习题让学生练习,可以提高学生的程序阅读理解能力。程序阅读理解能力的提高,能够帮助学生快速发现程序的“BUG”所在,从这个意义上来讲,程序阅读理解能力也是程序调试能力的一部分。程序补充练习设置要多样化,可以是程序补充题,也可以是程序“BUG”判断题,可以利用试卷在课堂上进行考试,也可以利用“问卷星”在网上进行答题。

(五)借助工具积木进行程序调试

随着编程学习的深入,程序的复杂程度不断增加,在纷乱的程序中找到“BUG”进行调试会越来越难,这时我们希望能运行部分程序代码后停下来,通过分析各个变量的值,来发现错误。因此,在讲授完变量和克隆的知识点后,笔者认为有必要培养学生使用一些特定的积木来辅助调试程序。

在编程中,学生可以通过直接点击某些积木获取当前相关属性值,以此帮助自己进行调试判断。如“说”“思考”等积木的对话显示结果能帮助学生获取一些不可见的角色的属性值,有助于学生在运行程序时找到“BUG”所在。

克隆体局部属性信息的获取是比较麻烦的,而用“说”积木可以较为方便地查看某个克隆体的某个局部属性。在机器人模块中,一些传感器的属性值也可以通过这些积木具体呈现,帮助学生进行判断,为进一步展开后续程序优化奠定基础。

这类积木使用起来十分方便、灵活,在程序运行过程中想要测试某个角色在某个节点的参数,只需要把积木放置在对应的脚本中,结果便一目了然。同时,它们通用性强,支持多种数据类型的输出,呈现方式也最直观,通过这种方法可以同时在舞台上观察到多个角色的局部属性,而不必切换角色。

(六)通过修改优化既有程序来培养学生程序调试能力

在学生有了一定的基础后,教师可寻找一些小程序,刻意将其中关键部分删除或改错,然后下发给学生,让学生进行纠错、补充再创造。而选择的这个关键部分最好是可以采用多种不同方法来完成的内容,这样更有助于发散学生思维,有效培养学生的程序调试能力。

教师还可以通过一些网络资源,如“好好搭搭在线”,设计编程活动课,给学生足够的时间,让学生试玩网站中其他小朋友上传的作品,并通过在线编辑功能,进行游戏脚本的更改。在利用网络资源时,教师不能让学生沉溺于游戏本身,而是要根据学生水平,有目的地选取相应难度的作品开展调试修改。之后,教师可在班级内组织学生共享,挑选部分优秀的修改作品进行展示,在展示时向修改者提问:为什么要这么改?向其他学生提问:还能怎样改?

通过修改优化既有程序,学生接触了大量教材以外的案例,既开阔了眼界,也培养了兴趣。在教师的主动干预、合理引导下,学生的程序调试能力能够得到有效锻炼。

三、重视情感态度价值观教育,鼓励学生主动调试

编程教学的情感态度价值观教育体现为鼓励学生根据所学知识主动大胆联想、探索,勇于尝试,善于发现错误。在课堂教学中,教师要正视学生的错误,把学生认真学习而产生的“错误”看成是课堂的闪光点,因为那都是学生计算思维的有形体现。

我们也可以说程序调试能力培养是一种逆能力培养,逆水行舟,往往培养出的学生能力更强。教师要向学生明确计算思维的重要性,要求学生切实培养自身的程序调试能力;要让学生明白,编程不是仅仅靠跟随教师学习几个案例就能学会的,也不能仅仅靠同学的帮助,只有静下心来沉浸进去,训练自身的计算思维,形成能力,才能真正学好程序设计。

最后,我们也要教育学生养成良好的、严谨的编程思维,根据程序调试能力培养方法,积累经验,逐步完善自己的计算思维,逐步减少程序“BUG”出現的概率。

[参考文献]

[1]高萍.基于计算思维培养的Scratch教学:以《大鱼吃小鱼》一课为例[J].中国信息科技教育,2016(9):33-35.

[2]邓正杰,杨帅森.少儿编程调试模块教学的分析与设计[J].电脑知识与技术,2019,15(26):123-125.

猜你喜欢
信息科技能力培养
基于就业视角的中职烹饪专业教学研究
体育教学中学生合作学习能力的培养研究
数学归纳法在高中数学教学中的应用研究
信息技术教学中学生自主探究能力的培养探析
基于CDIO的大学生职业素养培养研究
低年级学生课前预习能力的培养
智慧旅游景区发展存在的问题和对策研究
关于新时期博物馆的陈列思考