基于Python语言的算法与程序设计教学策略

    应迎春

    

    Python作为一门“解释型”语言,可读性强,语法简便,能较好地引领学生进入程序设计的世界。算法是程序的灵魂,程序设计离不开算法。阐述用程序设计解决问题的一般过程与方法,有利于帮助学生理解算法在程序设计中的核心地位。本文将以三位信息技术教师在Python教学实践中存在的问题为切入点,针对算法与程序设计教学策略分析展开探讨。

    ● 现状与问题

    问题1:精英教学与普及教学的区别。一位资深信息学奥赛辅导教师,她的上课方式类似于信息学竞赛辅导,是属于精英教学方法,但在普及教学中,学生各方面水平和能力良莠不齐,所以精英教学方法不适合Python语言的普及教学。

    问题2:照本宣科与教材处理的区别。一位是刚工作的新教师,没有教学计算机语言的经历,讲述语言很容易照本宣科,学生听得云里雾里。据学生反馈,学程序设计没有想象中的“有趣”,也没有想象中的“有用”;学生仅将教师的代码敲进去并运行出结果就停止了思考与学习,这样丝毫锻炼不了学生思维能力。

    问题3:一般过程与表面有趣的区别。一位参加地市级优质课评比的高中信息技术教师,上课内容是《用计算机编程解决问题的一般过程》,因为是评比课,在试上时为追求热闹有趣的课堂氛围,他利用海龟画图命令进行项目式学习,从画直线、三角形、正方形到正N多边形,一堂课下来,感觉就是换了款软件上画画课。其实这堂课的重点是让学生了解用计算机编程解决问题的一般过程,即分析问题、设计算法、编写程序、调试运行程序。学生不清楚其一般过程,刚开始抱着很浓厚的学习兴趣,但往后学习会觉得越来越难而放弃学习。

    ● 教学策略分析

    1.结合生活创设问题情境,抽象建模提升学生思维

    在程序设计教学中,For循环结构是一大难点,为了让学生对For循环有形象的理解,有一位教师提问到:每天在储蓄罐中存两块钱,一星期后储蓄罐中多了多少钱?学生通常会直接说出结果——二乘七等于十四,这是他们经过多年的数学学习保留下来的一个数学模型。要想让学生明白计算机的思维方式,可通过动画演示,让学生感受每一天储蓄罐里的变化,从而扭转学生已有思维,使其理解计算机的递推思想。再联系变量,将储蓄罐切换为变量S,抽象出模型。在实例中抽象建模,让学生自主建构得到S等于S加二这样的一个表达式,从而理解计算机的累加,培养抽象思维。

    2.适调结构利用教材重点,注重编程解决问题方法

    大部分程序设计教材都是按照“先理论后实践,先语句再程序”的顺序编排,2020浙教版信息技术八上也基本采用这种模式,若在教学中也是这个顺序,语法格式的讲解就只能是采用传统的讲解法,而学生对这种讲解一是没兴趣听,二是讲了与没讲一个样,在编辑应用中根本不会考虑语句格式。

    例如,在一次采用同课异构方式进行的公开课中,主题是While循环。讲课的两位教师,一位是教龄十年、教学基本功比较扎实的教师,一位是教龄不足两年的新教师。

    教龄十年的教师上的是传统课,由母亲节想用Python跟妈妈说一百遍“妈妈,我爱您!”直接引入新知——用Python中的条件循环语句While来实现,然后按教材新知讲解。

    (1)While循环语句的一般格式(如图1)。

    (2)While循环的执行流程:当条件判断为True时,循环体被重复执行,当条件判断为False时退出循环,else子句的语句块才会被执行。若条件表达式的值一直为True,则While循环将一直执行。因此,在循环体中一定要包含改变测试条件的语句,使循环能够结束,以避免死循环。

    (3)代码展示(如图2)。

    这种上课的模式是比较传统的教学方式,只是在学习语言,学生的思维没有发生火花,不知道学了这个知识有什么用。

    教龄不足两年的教师上课时,以学生熟悉的咬手指鳄鱼玩具引入,手指一直轮流按压牙齿,若触发开关,嘴巴闭合,游戏结束,若没有触发开关,游戏一直继续。

    (1)提出While循环的思想,与For循环的区别。

    For循环:一般用于次数的循环。

    While循环:一般用于条件的循环。

    (2)初探任务:快到寒假了,几个同学准备去游乐园玩,每位同学手里都有一张游乐卡,金额为200元,游乐园的项目价格都一样:摩天轮13元/次,海盗船13元/次,过山车13元/次……引导学生:①分析玩的过程:每玩一个项目,卡里的钱就会扣13元,一直玩,当卡里余额不足时就不能玩了。②设计算法:第一步,卡里初始金额是200元;第二步,玩的条件——当卡里余额大于13元才可以玩;第三步,玩的结果——每玩一个项目,卡里的钱会扣13元;第四步,一直玩,直到卡里余额不足即少于13元,游玩结束。根据上述算法,学生结合教材讲解实现程序语句,从而引出While语句格式(如上页图3)。

    经历这种以学生熟悉的场景实例引入,引导学生问题分析、算法设计,再编写程序实现的过程,学生比较容易掌握While循环的思想、格式。

    其实,新教材的第10课是循环结构——While循环(重点是讲解语句格式),第12课才是While循环的应用实例。通过这次的同课异构可以发现,把这两课的教材内容打散重组处理,每一节课抛出实例或生活中的问题,根据问题进行分析、抽象建模、设计算法,用自然语言或流程图表示算法,根据设计的算法用Python语言编写代码实现,在算法表示的对应步骤中穿插渗透相应的语法知识,最后调试运行,观察程序运行结果,能让学生的上课参与度更高,学习积极性更强,更有助于培养学生的计算思维,即解决问题的能力。

    3.巧用错误认识语法规则,多样实现发散学生思维

    有时候,程序运行不出但在相应行有显示,这说明程序存在语法错误。初学Python造成语法错误的常见原因有字母大小写不同意义、语句的缩进输入、中英文符号的混乱等,不过语法错误程序调试运行时会提示。鉴于此,笔者在课堂中因势利导,用这些语法错误来穿插讲解语法规则,让学生在改错中学习Python语言的语法规则,取得了不错的效果。当然,在展示学生程序时,细心的学生会发现,不同的程序表示会出现一致的程序结果,教师要及时引导学生分析程序,从而引出同一程序的多样性表示。

    例如,在编写第一个Python程序时,学生常常会出现各种语法错误。所以,笔者常让学生先尝试,在调试程序的过程中发现问题时,引导学生结合教材找出问题原因,若不能,则全班同学一起来“找茬”。这样利用错误突破重点或分散难点,取得了较好的教学效果。错误是一种很好的课堂生成资源,这些资源对突破课堂重点往往能起到关键性的作用。

    又如,在教学《循环语句》这一课时,课堂的教学重点是对循环语句的正确描述。在用For语句编写程序时,会发现学生容易出现一种逻辑错误,即循环体语句次序颠倒使结果不符合要求,而这恰恰是教学重点需要解决的问题的具体体现。在接下来的评价分析环节,教师就可以利用这些课堂生成资源引导学生进行讨论和自我总结,从而促进学生科学知识结构的构建或完善。学生的错误通常是他们学习难点的具体体现,在引导学生改正错误的过程中,如果能采取“以错攻難”的方式,用错误来消化学习难点,有时能收到事半功倍的教学效果。

    4.依托竞赛激发学生兴趣,分层教学铸就学习品质

    如今,各级中小学电脑作品大赛中的程序设计项目都是使用各类程序设计语言,创作完成软件作品,实现某些特定功能或解决某种需求。由于学生水平层次参差不齐,以竞赛为引导的基于Python语言的算法和程序设计教学,有利于激发学生的学习兴趣,从而培养学生自主学习、学会学习的能力。

    总之,基于Python语言的算法与程序设计教学是学生深层次认知信息技术魅力的重要窗口,对学生未来的学习及发展能产生一定的影响,但现阶段的教学仍然存在诸多的限制因素,其教育价值并未得到充分显现。所以,教师要始终秉持发展的眼光看待教育教学,加快教学创新及优化的探索脚步,加速攻克教学难点,构建有效教学课的课堂。