《繁花曲线——周而复始的循环》教学案例

2022-05-19 10:56姜华
中国信息技术教育 2022年9期
关键词:繁花程序设计编程

姜华

● 学科核心素养

信息意识:掌握程序员编程解决问题的过程和方法;明确结构化在程序设计中的重要作用。

计算思维:掌握一种程序设计语言的基本知识,编写简单程序解决问题。

数字化学习与创新:针对特定的学习任务,运用一定的数字化学习策略,通过整合跨学科的学习任务,帮助学生运用数字化工具表达思想,养成数字化学习与创新的习惯。

信息社会责任:认识信息技术发展对社会进步和人们生活带来的影响。

● 课程标准要求与学业要求

课程标准要求:①掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法;②通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。

学业要求:①能够根据需要选用合适的数字化工具开展学习;②利用程序设计语言实现简单算法,解决实际问题。

● 教学内容分析

本节内容源自高中信息技术必修1《数据与计算》(教育科学出版社)的第2单元第3节,对它的教学是在学习了Python相关基础知识和顺序结构、选择结构的基础上进行的,所以它是对前面知识和能力的提升,也是后面程序实现的基础。循环结构作为程序设计的三种结构之一,是程序设计的基础,也是程序设计中的一个重要知识点。循环结构通常包含两种类型,一种是重复一定次数的计数循环,另一种是重复直到某种情况结束的条件循环。在Python中使用for语句来创建计数循环。教材介绍了for循环的基本格式、循环体、循环次数的控制等,本课时主要解决计数循环(for循环)的基本结构,由于Python中for循环次数和列表有密切联系,因此教学中引入了列表。

● 学情分析

通过前面的学习,学生已经熟悉了Python程序的编程环境和基本语法,了解了三种基本结构,掌握了顺序结构和选择结构的格式和使用方法。高中学生对程序设计有一定的兴趣,但学习程序设计不同于专业训练,因此,需选择能激发学生兴趣的实例,并提供有针对性的帮助文档,帮助学生完成算法设计及编程实现。由简到繁,层层推进,让学生理解循环的基本思想,通过三种结构的综合使用、相互嵌套解决复杂的问题,巩固和加深对三种基本结构的认识。考虑到学生编写程序代码不规范,出错率比较高,如全角半角混乱、单双引号缺失、代码无缩进等,所以合理利用可遇见的失败组织教学来提高学生的学习效率。

● 教学目标

掌握计数循环(for循环)的基本结构;学会导入Turtle模块,并了解模块中常用的方法和属性的使用;能够应用range()函数解决循环问题;体验程序设计的基本流程,能够应用循环结构解决实际问题。

● 教学重难点

重点:for循环的使用。

难点:解决问题的分析方法与过程。

● 教学策略

教法:任务驱动法(以任务串联课堂教学)、问题导学(以问题引领学生探究)。

学法:以小组合作探究为主,分成2人小组,形成合力,方便交流分享,组间竞争、共进(作品评比)。

● 教学过程

1.任务引入

教師先呈现一组漂亮的繁花曲线,以及由繁花曲线参与的艺术设计版式。通过对比,让学生体会规则几何图形带来的感官冲击以及它们在艺术设计中的实际用途。接着选择较简单的繁花曲线,通过静态和动态两种观察方式让学生分析基本构成单元的形状。

师:如果让你来画,你会用什么工具?怎么画?(学生思考、讨论)今天我们利用Python软件,看看它能不能帮我们画出这么美的图形。

设计意图:用“美”来激发学生的学习热情,“实现美”是该任务的目标,解构“美”是任务实施的入口, Python则是任务实施的重要工具。

2.任务实施过程

(1)简单繁花曲线的解构

师:简单繁花曲线的基本单元是正方形,而正方形是线与角的关系,所以首先要掌握Python中画线和角的方法。

Turtle.forward(长度)

Turtle.left(角度)或Turtle.right(角度)

学生画出一条线段并转动相应的角度。

师:用这种方法我们能否画出一个正方形?

学生重复输入上一操作,直到得到一个正方形。代码片段如图1所示。

师:《Python之禅》里说“Simple is better than complex。”有什么方法可以简化上面的代码?(引出循环结构和range()函数,这是本节课的重点)

教师讲授for-in语句结构:循环变量的值从列表中第一个数开始,对应列表中的每一个值,循环把语句组A中的所有工作执行一次,执行完成后,循环变量赋为列表中的下一个值(如图2)。教师讲授分析for-in语句的执行流程(如图3),请学生打开给定的程序。学生打开执行learn1.py,体验for-in语句执行过程和结果。教师展示、讲授执行过程(如图4)。

师:Python非常贴心,为我们设计了range()函数,它可以直接生成一组连续增加的数字,实现列表功能。

学生打开执行learn2.py,体验for-in语句执行过程和结果。教师展示、讲授执行过程(如图5)。

教师讲授Range(start,end,

step)语法,并让学生尝试用range()函数输出2到10之间的偶数。学生尝试输出五个偶数,并分析失败原因,讨论“顾前不顾后”、步长的含义(如下页图6)。

设计意图:本环节主要是通过让学生体验for-in循环程序,改变其中参数,自主探究语法特征和作用,激发学生的学习兴趣,提高学生探究能力。在range()函数使用过程中用几个可以预见的错误让学生先尝试,教师再总结,可以帮助学生更好地理解知识点,加深印象,提高学习效率。

学生尝试把烦琐的代码修改简练,完成一个正方形的绘制。

设计意图:画一个正方形,是复原繁花曲线的第一步,通过这个环节,让学生掌握turtle绘图的基本函数、for循环的一般结构,以及range()函数的使用。

(2)简单繁花曲线的重构

教师播放例图的绘制过程,让学生思考、讨论图形是如何由基本的正方形变化组合而成的(如图7)。

学生尝试用循环嵌套完成简单繁花曲线的重构。教师对典型的失败案例进行分析(如图8),引导学生分析原因。学生找出问题所在,并讨论解决方案,了解Python中相同逻辑层保持相同缩进的规则。

设计意图:与上一环节形成递进关系,由一个个基本图形叠加变化形成繁花曲线。该环节的重点是让学生掌握for循环嵌套,以及循环体的判断和选择,在这个过程中,势必产生一些错误的尝试,通过对比分析,让学生从失败的尝试中了解Python语言使用规则,并讓他们意识到,即便是失败的作品,仍是一幅不错的繁花曲线。

(3)更多繁花曲线的解构与重构

师:请大家在提供的繁花曲线中选择自己喜欢的形状,尝试完成,也可以在原有基础上加上自己的想法,创作一个新的美丽曲线。

学生利用循环结构和函数,实现繁花曲线的创作。

设计意图:这是一个拓展任务,学生通过本节课所掌握的循环结构和函数,加上自己的理解和创意,尝试解构并重构繁花曲线,也可以建构新的繁花曲线。通过这个过程体会艺术与编程之间的联系。

3.任务小结与评价

师:大家的图案都非常有创意,无限循环的图形在运动方向和形态上,自然、紧凑、流畅,唯美漂亮令人仿佛进入一个梦幻的奇妙世界。

通过今天的学习,大家能够掌握利用程序解决问题的一般过程,能够熟练应用三种结构设计算法,并能够应用结构的嵌套解决复杂的问题。希望大家课后能把学到的知识应用到实际的学习和生活中去。

● 教学反思

考虑到学生现实解决问题思维与编程思维冲突的现状,笔者选择了编程绘图这一学生比较感兴趣的实例,由简到繁,层层推进,在现实问题与编程场景间搭建良好的思维通道。这节课采用色彩丰富的图形化设计作为主线任务,通过人体对视觉的敏感和偏好,一改代码编程的枯燥乏味,改变学生对编程语言的固有见解。另外,针对学生编程语言基本语法不扎实、实践中错误百出的问题,本节课采用了“有效失败”策略,让学生在思维呈现的阻滞中发现问题,纠正错误的理解,修正认知体系中混沌的部分。但在教学实施过程中,学生差异较大,教师提供的辅导支架不够充分,也不够灵活,对学生出现部分颜色不能呈现以及循环嵌套混乱等问题没有做出及时有效的引导。在之后的教学中,笔者将根据学生在代码编程方面基础的差异性,提前合理分组,组内异质、组间同质,优势互补,增加同伴互助支架。

猜你喜欢
繁花程序设计编程
基于OBE的Java程序设计个性化教学研究
雾凇岛的“繁花”
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
鲜衣怒马 看尽烈焰繁花
医学专业“Python程序设计”课程教学改革总结与思考
喜欢圣诞
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
编程屋完成数百元万天使轮融资