APP下载

关于编程学习可见性的效能思考

2022-01-15赵伟刚

中国信息技术教育 2022年1期
关键词:代码编程流程

赵伟刚

在新一轮信息技术教学改革中,编程教学是重点更是难点。《普通高中信息技术课程标准(2017年版2020年修订)》对编程教学有如下要求:“通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。”要在有限学时内,达成课标要求,渗透学科核心素养,就需要教师真正站在学习者的角度设计活动,关注影响课堂教学实效的细节,这样才有利于学生学科核心素养的发展。山东省自2019年秋季全面使用基于新课标的高中信息技术新教材。在这两年多的时间里,笔者通过深入课堂听课,与教师研讨,对如何改进学生编程学习的“可见性”,提升思维深度及学习“效能”,优化编程教学,有一点思考和建议。

● 让程序“跑”起来,在观察过程中体悟变化与功能

1.教学场景

课堂上,教师用了如图1所示的代码讲授计数循环(代码已简化),为了帮助学生理解循环控制及变量变化,教师通过板书与学生一起单步分析代码流程(如图2)。

2.教学反思

类似“纸上谈兵”的讲解,在过去信息化程度不高、数字化学习环境不成熟的条件下普遍使用,可以帮助学生理解代码运行流程,但效果不尽如人意,学生似懂非懂。现今,计算机、投影、多媒体一体机、电子教室系统一应俱全,借助信息化手段和方法,让学生在真实环境中观察代码的执行流程及变量变化,可以帮助学生更好地理解程序运行基本流程,内化知识。

3.优化建议:让程序“跑”起来,变抽象为直观

在系统开发时,程序员常用到代码调试(Debug)功能。Debug在程序调试、查错方面优势明显,其追踪程序代码运行流程、跟踪变量变化、帮助理解复杂程序逻辑等功能对初学者来说极有价值。

以IDLE为例(如下页图3),在讲解并分析程序的基础上,教师与学生一同借助Debugger单步运行,调试演示。通过亲自“跑一跑”程序,学生可以非常直观地体验到代码运行的流程,观察到变量i和s的变化及输出,将原本抽象的变量迭代和流程控制具象化,在具体流程的体验中,学习兴趣被激发,对程序流程的体验和理解必然深刻。

● 让过程“显”出来,在观察输出中体会流程与逻辑

1.教学场景

教师借助约瑟夫问题进行列表和队列教学,给学生提供了如下页图4所示的半成品代码,让学生体验算法思想和程序实现。

2.教学反思

有了列表操作的基础,再经过对约瑟夫问题算法分析和代码中注释语句的提示,学生任务的达成度比较高。看似完美顺利的教学,学生真正理解了吗?理解到了哪一层次?该段代码是对约瑟夫问题流程的模拟再现,代码的运行结果仅仅是列表经过模拟淘汰后剩下的最后两个元素——[19,29],如果错将第6行代码输入为c=jose_q.pop(i),程序出现逻辑错误,输出结果变为[16,26],学生也很难发现异常。

让学生更深入地感受算法在计算机程序中的逻辑实现和数据结构组织形式的具体流程,才能够更好地提升学生的思维深度,从而将算法设计、代码实现与问题解决更紧密地联系在一起。

3.优化建议:让中间结果“显”出来,让过程更清晰

在系统开发过程中,为了验证程序运行的中间结果,排查逻辑错误,教师会在代码中临时增加输出语句来测试程序。当授课教师在While循环体最后一行增加了print (s,"被淘汰。")语句(代码如图 5),屏幕上显示出每次被淘汰的编号,学生开始尝试验证代码执行与自己判断是否一致。在第6行代码逻辑出错的学生,也能及时发现运行结果的异常,结合之前的算法分析,尝试排除错误。在发现问题进而解决问题的过程中,学生思维深度和学习效能有了顯著提升。

简化代码可以让学生更好地关注程序主体结构,增加输出可以更好地理解程序流程及算法逻辑,二者兼顾,可以让编程教学更加深入和高效。

● 让程序“慢”下来,在思考中孕育发现和生成

学科核心素养的发展,需要知识内化与外化的合一,更需要活学和活用的结合,只有促使学生在学习过程更深入地思考,将已有知识经验充分激活,才有助于学生把握问题本质,优化已有的知识结构和思维模式。

1.教学场景

将优化后的代码再次在教学中实践,当所有被淘汰的编号瞬间显示出来后,相当一部分学生把注意力只放在前几个被淘汰的编号上,简单验证后就万事大吉,只有极少数学生能耐得住性子,尝试寻找规律。

2.教学反思

高质量的课堂应该关注更多学生的收获,教师要善于引导学生在问题解决的过程中发现新问题,在问题解决的互动中引发新思考。代码中间结果输出过快,不利于学生对过程变化的关注。如果尝试将输出慢下来,可以更好地吸引学生关注问题解决的过程,引发深入思考。

3.优化建议:让程序“慢”下来,让思维更深入

“教育是农业”,需要慢下来,只有慢下来学生才能有充分、深入的思考和反思,课堂上也才有更多的发现和生成。

对代码再次优化(如上页图6),增加了显示列表的“初始状态”及“延时显示”功能,以方便学生观察数据变化。当代码的执行速度慢下来后,更多学生创新的火花被点亮。例如,有的学生开始研究如何让程序在队列经过每一轮淘汰后,显示出新的列表元素,这将会用到取整运算、循环嵌套甚至函数复用等前几节课学到的知识。

综上所述,适恰地改进编程学习的“可见性”,对于提升编程课堂“效能”、落实课程标准、促进学生思维深度具有积极作用。通过优化教学激发学生进行深入思考与反思,引导学生把握学科本质与普遍原则。只有把握住学科知识的本质,学生才能够主动优化自己的知识结构,丰富已有的知识体系,促进学科核心素养的发展。课堂是学生核心素养发展的主阵地,只要真正“把学生放在学习正中央”,以有利于学生理解的方式,在教学设计上多下功夫,引发学生在问题解决的过程中深度思考,让编程教学“跑”起来、“显”出来、“慢”下来,高效能课堂就会离我们更进一步。

苍山点题

本期解码两篇文章,给一线教师带来实实在在的教学如何改进的启发,可以说是宝贵的“金点子”,也可以说是“教无定法”再次在教学中的印证。

第一篇文章,作者为解决刚接触编程的学生遇到各种错误产生挫折感的问题,减少在拼写错误上的时间浪费,根据所在学校学生的接受能力,以及基础两极分化严重、动手能力弱、编程思维几乎为零,并且Python编程环境IDLE界面不够友好等情况,通过引入图形化编程,结合积木和代码两种模式对比教学,让学生能更好地学习和理解代码命令,还能够用积木快速搭建出简单的程序,体验到完成项目和学习的成就感,培养学习兴趣,提升学习效率,让学生的编程思维普遍得到提升。这种“双模式”是一种良好的探索。当然,在教学中对课本的利率编程进行了挖掘与信息安全的渗透,也非常可圈可点,只是如果对这些网络陷阱的了解不深刻也极易造成误导,所以大家要深入研究方可灵活使用。

第二篇文章,作者通过教学观察,总结出如何让学生更直观地理解程序原理,增强编程学习的可见性效能。例如,通过使用调试工具观察循环中变量值的变化,“见证”程序“跑起来”(执行过程);通过对程序中变量变化中的值的“显”出来,以及显示的过程中要“慢”下来,从不同的角度提高了程序“可见性”对认知思维形成的效能,深化了学生对程序原理与过程的感受。本文呈现给的“小点子大效能”,非常值得在教学中借鉴,也提示我们,在教学中可以“从小处着手”去发现解决教学难点的小技巧、小革新。

教法对课堂需要务实,所以教学的点子不在规模大小,在有效;教法经验的总结也不在理论多高,在真实。

猜你喜欢

代码编程流程
急诊快捷护理流程在急性脑卒中抢救中的应用
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
与元英&宫胁咲良零距离 from IZ*ONE
编程屋完成数百元万天使轮融资
学编程,先画画
四川省高考志愿填报流程简图
神秘的代码
“一课四备”磨课流程例说
一周机构净增(减)仓股前20名