2017年以来,全国各省市陆续实施普通高中课程改造,启用新的课程标准及教材。计算思维作为信息技术学科的核心素养,程序设计相关内容的学习自然成为了此次新课改关注的主要内容之一。由于Python具有简单易用、语法规则灵活、更接近自然语言、结构化强以及支持多个编程接口等优势,成为高中信息技术教材普通选用的编程语言。
由于此次课标内容制定采用了“非零起点”的指导思路,同时结合项目化学习的课程设置方式,初衷是重在体现“编程是为了解决实际应用问题,一切着眼于应用”的思想,因此教材中主要是围绕Python解决实际问题的应用。因为目前学生还没有任何Python应用的基础,导致普遍产生入门难、难免产生恐惧的心理。在课堂实践中,笔者设计了一系列python教学入门进阶课,让学生在轻松掌握知识并实际体验Python的功能,同时也为后续的学习积累一定的基础。
下面以入门第一课《趣学Python》为例,谈一谈我的教学设计思路。
在导入阶段,我设计了一个网上图案展览馆的情境,将古代器皿上的条纹、近代各种底格图纹以及现在常见的各种图案线条先后呈现出来,创造艺术审美的情境,让学生在感受中国古代图案优美精良的设计,产生民族悠久历史文化的自豪感(强调文化自信),同时引出一个问题:对于相对更加规则的现代线条图案(如右图),能否通过计算机手段进行绘制呢?由审美情境引入到信息技术学科的知识领域。
接下来站在学生的视角,联系他们已经具备的知识,引导学生分别选用“画图”“word自选图形”“photoshop”等工具软件,思考绘制此图形的可能性。
设计意图:调动学生的已有知识经验,将新旧知识进行有效的关联。同时也是引导学生发现,通过使用已有的工具软件可能也能够实现这个图形效果,但效率太低。
适时地引出“自动绘图”这个设想,使用计算机工具实现自动绘图效果(通过视频展示turtle绘图的过程。)
接下来针对折服较为规则的图形,引导学生思考它的基本构成,即它的基本线条有哪些?通过观察及观察图案绘制视频,不难发现这些图形是通过多个同样大小的正方形不断倾斜堆叠而成,主要由正方形构成,并可以进一步分解为一条条同等长度的线段。按从易到难,设置本节课的三个任务:绘制直线、绘制正方形、绘制复杂图形。
主要目的是化繁为简,层层剥离,找出最基本的图形结构,降低绘制难度。
关于PythonIDEL的基本操作,首先介绍有命令行模式和函数模式两种模式,其中命令行模式一般适用于单行语句的即时呈现效果,其他一般建议采用函数模式。简单介绍函数模式下的文件新建、保存、运行等操作方法。
接下来完成第一个任务:绘制一条直线。
在IDEL中输入如下代码,在演示代码书写过程中,提醒学生注意使用注释语句(#)的作用。绘制一条线段的具体代码如下:
import
turtle
#调用turtle(海龟)模块
turtle.forward(100) #海龟向前移动100像素
turtle.done()
#画图停止,显示绘图画面
学生模仿练习。在此阶段主要关注学生对Python IDLE环境下函数模式基本操作的掌握情况,以及python基本代码语句的书写,重在让学生熟悉IDLE环境。
学生在这一环节基本能够快速完成。学生基本掌握后,适时向学生补充一个知识点:改变海龟运行方向的方法:turtle.left(degree)/turtle.right(degree),分别表示向左/向右转动多少度。需要强调的是:left(x)和right(x)仅仅是改变海龟的前进方向,并不会向前移动距离。接下来引出第二个任务:
绘制一个正方形。
学生练习过程中发现,大部分同学有小学阶段LOGO语言的基础,能够快速上手。但也有个别学生竟然把turtle.left(90)和turtle.right(90)同时输入,没能理解改变方向的真正用意,经个别辅导后能够掌握。大部分同学能够快递实现绘制正方形的效果。【鼓励部分掌握速度较快的同学尝试绘制其他图形,如三角形、五边形等】
绘制正方形基本代码如下:
import
turtle
#调用turtle(海龟)模块
turtle.forward(100)
#海龟向前移动100像素
turtle.left(90)
#海龟向左转向90度
turtle.forward(100)
#海龟向前移动100像素
turtle.left(90)
#海龟向左转向90度
turtle.forward(100)
#海龟向前移动100像素
turtle.left(90)
#海龟向左转向90度
turtle.forward(100)
#海龟向前移动100像素
turtle.left(90)
#海龟向左转向90度
turtle.done()
#画图停止,显示绘图画面
接下来提出一个问题:对于上面的十行代码,我们不难发现其中存在的一些规律。IT届著名人士比尔盖茨先生说过:“代码长度……”,因此我们是不是可以尝试下精简代码呢。
补充一个知识点:
for
num in range(n):#num是一个变量,n表示一个具体的数
turtle.forward(100)
turtle.left(90)
学生比较容易理解这段代码的意义。此处需要重点强调的是python语言的缩进格式(冒号结尾,后面为实现循环的语句,必须要统一缩进(一般为4个空格))。提醒学生这是python语言严谨性的重要体现之一,一定要注意。
这时,学有余力的同学可能会在此基础上修改图形的形状,如三角形、长方形等。教师引导学生充分表达自己的思想,并力争实现。
呈现最后一个任务:绘制复杂图形。通过课堂引入阶段的视频演示,学生已经知晓图形的绘制过程,此时的知识难点就是理解嵌套的循环了。
我处理的过程时,先借鉴绘制正方形的“for num in
range(n):”语句形式,使用伪代码形式表示如下:
for
sibianxing in range(36):
绘制正方形
旋转10度
全部代码便为:
for
sibianxing in range(36):
for xiantiao in range(4):
turtle.forward(100)
turtle.left(90)
turtle.left(10)
turtle.done()
此部分掌握的难度在于书写的格式,对于嵌套学生可能一时难以准确理会。告知学生可以先模仿这样的格式输入代码、运行代码。多接触几次就容易慢慢领会。
所有的任务完成之后,学生可能会自己去摸索尝试,比如对参数进行一些改变,要鼓励学生这样的做法,还可以和同桌进行绘制图案的比较,引导他们自主、深入学习。
在本节课的实践中,发现一位同学通过以上代码参数的修改,绘制出了一个圆形的效果。
import
turtle
for
sibianxing in range(360):
turtle.forward(1)
turtle.left(1)
turtle.done()
后记:这个通过使用循环控制直线、旋转角度的语句最终实现了圆形绘制的效果,这在我之前的预设中是没有想到的。这位同学的解释又激起了其他同学的热情,他们不断尝试、不断调整,实现了许多意想不到的图案效果。课堂中探讨氛围浓烈。
import turtle
for
sibianxing in range(100):
for xiantiao in range(60):
turtle.forward(30)
turtle.left(70)
turtle.left(136)
turtle.done()
这也是我从教以来第一次发现学生学习产生这样欢乐的氛围,下课铃声响了,同学们还在继续探讨,忘记了下课。
起始阶段的Python语言学习要坚持小入口、慢节奏,让学生在不断地尝试和体验中学习,既要学得轻松,又能够有满满的获得感,持续增强学习的兴趣,为后续的深入深度学习奠定坚实的基础,播种好美好的契机。
(待完善)