“试错法”在高中编程教学中的应用探究

(整期优先)网络出版时间:2024-04-18
/ 2

“试错法”在高中编程教学中的应用探究

高仲玲

山西省大同市煤矿第一中学校   15525200992

“从错误中学习”是科学家波普尔提出的一个重要的理论观点,他认为理论上对于一个问题的解答通常都可以采用试探和清除错误的方法,即“试错法”,这一观点强调“从错误中学习”,适合众多行业解决问题。而我们所从事的教学工作,其本质正是激励学生不断寻找问题,发现问题,思考问题并争取自主解决问题的过程,这一过程不可避免地要发生错误,如何正确、高效地利用错误,让其为教学服务,成为我在编程教学中的不断思考、实践的方向之一。

在传统教学中,由于课时有限,教学内容多,我们习惯性地只考虑课堂的结果与效率,很少给予学生主动思考探究的机会。新课改后的高中信息技术课程增加了编程版块,教学主要内容为算法和程序代码,这部分内容较为抽象复杂,学生感受到的满是枯燥和困难,我们地区的学生大多还是零基础,面对这种情况,更为丰富有效的教学模式根本无法开展,课堂便成了以讲为主,教师直接提供并示范教学内容,事无巨细的把需要注意的每一个步骤讲解得非常清楚。究其原因,主要是教师总想在有限的课堂时间内,尽量引导学生去关注“正确的”编程方法,去完成“好的”编程作品,获得“成就感”,达到计划好的教学目的。至于学生在学习过程中产生的困惑则不关心或者一带而过。在这样的情况下,学生根本没有犯“错误”的机会,于是也不会有探索、发展的空间了。

经过不停的思考和学习,我发现“试错法”的思想理论可以运用到编程教学中,于是开始反复实践。下面以《Python程序基础知识》教学内容为例,展示“试错法”在教学中的具体应用,与大家一同探究编程教学的教学方法。

一、老师巧妙设置,诱导学生“犯错”,直面问题。

Python中的运算符是进行编程的运算基础,常用的运算符号有五种,算术运算符是高中阶段需要精确掌握的运算符之一。其中“+、-、*、/”符号与数学符号功能一样,学生没有疑问,也不会出错。对于取模“%”符号则经常出现错误。主要表现为:一是依然认为“%”是数学中的百分号,二是不理解“取模”的作用。我选取了下面例题进行教学。例题1:妞妞最近学习了Python入门课程,这门课程的总成绩计算方法是:总成绩=作业成绩*20%+小测成绩*30%+期末考试成绩*50%。妞妞想知道,这门课程自己最终能得到多少分(整数)。

计算成绩程序代码题目很简单,学生开始编程,“20%”这个百分数如何在Python表达式中正确书写,我没有提示,静观其表现。果不其然,学生按照数学思维,出现了第一次编程的结果:

运行程序时开始报错。学生百思不得其解,我给予简单提示,让学生小组研讨,逐步排查错误,真实的目的还是希望学生自己从中发现错误,真正地理解Python中“%”的作用,遇到含有百分数的题目时能够转换思维,正确书写含有百分数的表达式,进而结合其他练习掌握取模“%”符号的作用和使用方法。经过思考、查错,最终得出正确结果:

计算成绩程序代码2

三天打鱼进步程度类似的情况还有浮点数精度的设置,比如例题2:为了让同学们直观感受“三天打鱼,两天晒网”和“每天进步一点点”两种行为态度,在一年后进步程度的差异,以2023年为例编写如下程序:

变量a表示“每天进步一点点一年后的进步程度”,变量b表示“三天打鱼两天晒网一年后的进步程度”,每天进步程度是“实数型”。这段程序运行不会报错,出现的问题在最后结果的呈现上。按照前面学习的例题来看,输出变量a和b,这段代码的编写一点问题没有,但是程序经过循环365次运算后,输出结果会出现一个小数位数特别长的数据,显然,这不符合最终想要的结果。学生容易犯的错误就在于不注意输出结果格式的设置,因此,这个例题也可以用“试错法”来教学,让学生在发现错误、纠正错误中领悟输出结果的格式设置,掌握本例题涉及到的浮点数精度的设置。

二、老师明知故犯,炼就学生火眼金睛,发现错误。

在编写程序代码时,学生经常出现遗漏冒号,弄不清楚赋值符号和等于号,给变量命名前后不一致等问题。对于这些易错知识点的掌握,使用“试错法”也是一个很有效的方法。还以例题2为例,书进步程度区别程序代码1写计算a 和b进步的表达式时,我故意把等于号当成赋值号,写成a==a*(1+n)和b==b*(1+n),让学生运行程序时找错误。

这段程序的巧妙之处在于运行不会报错,但是输出结果会出现计算错误。教师可以提示学生将循环次数减少,利用计算器验证程序是否有错,再把本题正确答案展示给学生,让学生在查找错误中掌握赋值符号“=”和等于号“==”的区别。

类似的情况如冒号漏写、缩进不一致、变量命名前后不一致等问题,运行程序时都会出现不同的报错,使用“试错法”比讲授教学、反复强调等方式要效果明显的多。

通过不断地实践,与不同班级的教学效果进行对比,笔者总结得出:第一、利用“试错法”教学编程是一个很有效的方法,因为试错学习是一个不断进行反馈的过程,学习之初,学生对于程序代码,包括程序基础知识都没有清晰的认识,他们需要通过多次动手实践来建立对程序的系统感受,在对程序进行反复的调试、运行中积累经验,这个过程中,错误的发生、失败的尝试是不可避免的,只有不断从“错误”的体验中获取经验才能真正的进步。因此,教师要避免在课堂上封闭学生通往试错学习的道路,甚至要主动创建一个不断试错的课堂,引导学生不断试错,逐渐从以感性的个人判断为主导的解决方式形成以理性为主的思考方式。

第二、 课堂教学中“错误”的发生能够真实反映学生的思维活动,思路决定出路。编程学习就像走迷宫一样,很少一次就能成功,需要不停地探寻,在错误经验的基础上能找到正确的方法,合适的出口。“试错法”可以帮助教师很好的了解学生的学习状况,帮助学生内省自己的学习过程,通过不断试错,建立对问题更全面的理解,教师也顺利达成教学目的。因此,教师要正确解读学生的“错误”,鼓励学生大胆“犯错”,正确面对错误,积极参与,积攒经验,在不断地试错与反馈中寻求更好的解决问题的方式和方法。

当然,千万不要为了试错而试错,有些错误的发生是不必要的,教师一定要对课堂上学生所犯的“错误”进行判断,不是所有的“错误”都有试错的价值。作为教师,我们始终要牢记教学初衷和教学目的的达成。