高中生零起点学Python 编程的教学策略

2022-05-16 08:48陈治干
福建基础教育研究 2022年4期
关键词:程序设计编程算法

陈治干

(永泰县第二中学,福建 永泰 350700)

《普通高中信息技术课程标准(2017 年版2020年修订)》明确提出,普通高中信息技术课程要以培养学生的计算思维作为学科核心素养之一,提高学生用计算机能处理的方式分析问题、处理问题的能力,并把这种能力迁移到各个学科的学习中去,[1]改进学习方式,提高学习效果。以“发现问题—分析问题—解决问题”为特征的编程教学,是实现计算思维的有效手段。

在高中信息技术课程中,Python 编程设计语言是目前最受欢迎的编程设计语言,因其“重算法轻语法”的特点,成为一门很容易上手的编程语言,深得广大学习者的喜爱。其特点是:强调算法为主,语法为辅,侧重分析问题、解决问题的过程与方法。Python 已经内置了很多常见功能和第三方库,我们只需要用import 关键字导入相关库,在程序中调用库中的函数,就能实现程序的强大功能。因此,Python 的学习对于中学生计算思维的发展是有很大促进作用的,这也是现行普通高中信息技术课程教材选择Python 作为编程语言的原因之一。

一、实例分析突破难点,消除恐惧心理

Python 程序设计语言虽然比较容易入门,但对于普通高中学生,特别是“零基础”的学生,还是有着比较大的困难。Python 程序设计语言对没有学习过编程的“零基础”学生,使他们快速理解程序设计原理,掌握代码的语法结构和逻辑结构,特别是培养他们从直观形象思维提到升到计算机编程所需的抽象逻辑思维,快速叩开编程的大门。

当前疫情防控转入常态化,体温监控是第一道防线。某地新冠肺炎疫情防控指挥部规定,体温大于等于37.2℃不能入校上课;低于37.2℃,体温正常,可以进入校园。这是两个条件产生两种不同结果的问题,其结果取决于体温的判断,属于计算思维的范畴。我们可以引导学生分析问题,设计算法,用Python 程序设计语言的分支结构语句来解决(代码如图1)。在实际编程的过程中,学生却被两个问题给难住了,问题一、第二行和第四行的冒号,问题二、第三行和第五行,要右移4 个字符。如果教师强行让学生死记,可以比较快地解决问题,但从学生的长远发展来说,是一大隐患,因为这个问题才是Python 程序设计语言的精华所在。Python 的类和块,不像C 语言那样用{ }来区分,而是通过冒号和下一行的右移4 个字符来表示上下行代码块的从属关系,是初学者难以逾越的难点。笔者用了图文标识和实际操作的方式并故意出错,引导学生观察运行出错时的情形程序会弹出对话框,(全英文语句提示,这又是一个绕不开的难点,下文再讨论),引导学生修改。在现行沪科版高中信息技术教材中,分支结构起到承上启下的作用,它上承赋值结构,下接循环结构,解决好这个冒号和缩进问题,可为后面的教学打好基础,扫清障碍。

图1

二、构建个性化学习资源,增强学生学习信心

Python 虽然简单易学,但其所涉及的知识面还是比较广的,有些知识点比较难理解,比如运行报错的提示,学生常常感到无法应对。教师把零散的学习资源进行有效整合,并以动画、PPT 文件、中文文档等,提供给学生,帮助理解相关知识,满足不同学生的学习需求,增强学生的学习信心。

在教学过程中,代码出错或者语法错误,运行调试时Python 程序设计语言会给出相应提示信息,可是全部是英文,而且单词也并不是日常用语,就现有学生的英文水平还不足以理解。

[例1]Print(a)程序代码运行后报错:“Name Error:name′a′is not defined”;

三、体验编程成果,激发学习兴趣

Python 作为编程语言,其语法的逻辑性还是有一定难度的,让尚在入门阶段的“零基础”学生有点“心有余而力不足”。教师要先采用学生感兴趣的实例来引导他们体验成功,引起他们的学习兴趣。俗话说,兴趣是最好的老师,是进行一切活动的强烈的内在的驱动力,有了兴趣才能够产生强烈的求知欲望。

[例3]某景区售票规则,成年人(15 岁到60 岁)全票100 元,少年(10 岁到14 岁)半票50 元,儿童(小于10 岁)和老年人(大于60 岁)免费,要求学生用Python程序设计语言为景区编写一个程序。笔者引导学生分析:这个以年龄段为条件的收费问题,不同的年龄段收费不同,符合Python 程序设计与语言分支结构的特点,因此可以用多分支语句的程序来实现问题的求解。(代码如图2)教学时,笔者把相关的基本知识点通过文档、微课等形式作为学习帮助包发给学生,供他们参考;重点引导学生进行以计算思维为特征的抽象逻辑思维的方式分析问题,设计算法,然后用Python语言来实现算法。学生在看到成果后,教师再给学生简单介绍语法,开发他们基于计算的抽象思维。这样的教学方法,让学生乐意接受,避免产生厌学心理。

图2

四、强化“抽象”思维,培养算法意识

高中学生学习Python 程序设计语言并不是用来开发软件,而是为了提升信息素养,发展以机器计算和抽象逻辑思维为特征的计算思维,学会利用信息技术来分析问题、解决问题,提高利用信息技术来思考问题、解决问题的能力。所以,首要问题就是先培养学习兴趣,然后再强化“抽象”思维,通过实例分析培养算法意识。

在课堂教学过程中,发挥学生的主体作用,教师作为辅助者和引导者,学生在理解教师课前分发的基础知识和核心问题的基础上,根据自身的既有知识和体验进行独立分析。例如,要求学生用Python 程序设计语言编写程序,输出“九九乘法表”,教师先引导学生分析问题,找出规律:每向右移动一列,被乘数在前一列的基础上加1,乘数从1 到9 每右移一列减1。根据多数学生的共性问题进行集体教学,并适时组织学生进行小组合作探究,并将小组探究结果,以及探究中设计出的算法进行共享,分析讨论,不断优化算法,最后用Python 程序设计语言进行实践,验证算法。(参考代码如图3)

图3

五、小组合作探究,提升程序优化能力

计算思维背景下的高中信息技术教学目标不能仅满足于教会学生使用Python 编程这一基本要求,而要以学生对于信息技术的理解和应用为长远任务,将计算思维这一核心素养的提升作为教学的最终目标,使学生能够从抽象、算法、归纳、分析、评价等维度中获得思维能力的提升,从而促进学生的全面发展。[2]

笔者在Python 程序设计语言编程教学时,坚持挖掘学生的潜能,通过积极创造条件,为学生提供重在培养抽象逻辑思维能力的情境和资源,训练拓展思维,让学生敢于把Python 技巧运用得活灵活现,不断创新,收到独特的效果。比如,要求用编程来解决“推算某年某月是星期几”这个问题,笔者首先引导学生分析问题,设计相应的算法,各小组的学生展开了热烈讨论,想出了各种办法,其中第三小组的想法比较成熟,笔者把他们的成果通过多媒体广播软件共享给全班同学,学生编写的程序代码如图4。这样问题是解决了,但这只是实现了算法,并非最佳方案,如果教师的教学满足于此,那对学生的长远发展是极其不利的。

图4

通过观察发现:在上述算法中,用if 语句每增加一个选择项,代码就多了2 行。教师逐步引导学生深入分析:星期值除了“星期日”,后一个“星期几”只比前一个“星期几”多1,如果采用Python 的分支结构语句中嵌套列表语句,代码就变得很简单多了,程序的运行效率得到极大的提高。(程序代码如图5)

图5

如果只是作为解决问题,这时已经完全可以了。但对于学生计算思维能力的培养,是不够的。它是一个长期而又极具挑战性的工程,要从不同角度、不同侧面,多方位挖掘学生的创新潜力才行。于是,笔者在肯定学生取得突破的同时,又继续引导学生深入分析思考,最终实现创新性的方案。(程序代码如图6)这才是编程的高级境界,通过优化程序的实践,提升学生应用计算思维分析问题,解决问题的能力,养成严谨治学的良好习惯,提升学科核心素养。

图6

从表面上看,学生在编程过程中,只是把16 行代码精简到4 行,程序运行时间缩短0.46 秒,运行效率得到了较大的提高,让学生对相关命令的掌握更加娴熟,思维也更加快捷,直击事件的本质。而更重要的是让学生敢于打破思维惯性,大胆创新,为将来在科研领域中敢做别人不敢做的事、想出他人还没想出的解决问题的策略打下基础,这才是我们的教学目标。

总而言之,在学科核心素养背景下,解决“零基础”高中生学习Python 程序设计语言的入门问题,可以从帮助学生解决Python 程序设计语言的语法、英文提示、设计算法、编写代码入手等问题,培养算法意识,兴趣,提升抽象逻辑思维能力。

猜你喜欢
程序设计编程算法
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
元征X-431实测:奔驰发动机编程
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
Travellng thg World Full—time for Rree
学编程,先画画
学习算法的“三种境界”