《Python语言中turtle画图的综合应用》 教学设计
张亚光
● 学科核心素养
(1)掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法,通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。(计算思维)
(2)针对具体学习任务,体验数字化学习过程,感受利用数字化工具和资源的优势。(数字化学习与创新)
● 学习内容分析
本节课的教学内容来自新课程必修模块1:数据与计算。本节课是运用turtle画图工具来绘制国旗,教学内容不仅涉及信息技术,还需要将国旗绘制的相关知识、数学函数的运用融合在一起才能实现,是一节综合课。选择使用Python编程语言来教学,符合课标要求,也是新课程发展的必然。在纪念祖国成立70周年的日子里,“我和国旗合个影”“给我一面国旗”这样的网络活动深受广大网友的欢迎,但大部分人对国旗基本知识的了解并不全面,选择这一主题在课堂上呈现,具有一定的现实意义。
● 学习者分析
本节课的学习者是高一年级的学生,他们有较强的学习能力,喜欢交流和分享,在观察、分析、思考能力上都有非常好的表现。在本节课之前,他们已经上过三节Python语言课,掌握了输入语句、输出语句、if语句、for语句以及turtle模块中一些画图函数的基本用法,但并没有用这些知识来解决过实际问题。本节课,画出规范的国旗对他们来说是一个挑战。
● 学习目标
(1)分析问题,设计解决问题的基本方案,培养分析问题的能力。
(2)通过探究活动,了解国旗的绘制标准和使用规范,树立规范意识,激发爱国热情。
(3)分析文本,获取关键信息,建立数学模型,实现将数学表达向计算机语言表达的转化,学会运用数字化工具表达思想、建构知识。
(4)进一步体会程序设计的基本步骤,编写程序解决问题,促进学生计算思维的发展。
● 教学过程
1.播放视频,展示相关内容,明确本节课项目任务
师:(播放学校庆祝祖国成立70周年视频片段)刚刚播放的视频中,同学们都是亲历者,这是我们对祖国70岁生日的献礼。每次老师看到这段视频都会很激动,特别是看到同学们挥动着五星红旗的画面,我的心里都会觉得很温暖,觉得很震撼。国旗作为国家的象征和标志,彰显着国家的尊严,国家的每一个重大时刻,都会升起国旗,国旗也见证着我们的成长。今天,就让我们带着这样的情感,用所学的Python语言中的turtle绘图知识,绘制一面我们心中的国旗,把它送给祖国母亲。
设计意图:通过创设情境,以学生的亲身经历以及网络上的相关热点活动导入,引起学生情感上的共鸣,激发学生的学习兴趣,提高学生的课堂参与度。
活动1:研读文本资料。
师:在绘制之前,我们要明白一点,不是随手画出的五星红旗就是国旗。在我国,制作国旗是有国家标准的。
教师引导学生阅读文本材料,完成以下任务:①根据从阅读材料中获取的信息,确定要绘制的国旗的长和宽;②选择一种获取旗面上大小五角星位置数据的方法(提供直尺、量角器、铅笔等工具);③根据文本信息,思考还需要获取哪些数据才能顺利完成任务。
学生阅读资料,填写绘制方案中的问题一。
设计意图:让学生研读“国旗制法说明”“标准国旗尺寸”“标准国旗尺寸和允许误差”等内容,明确绘制和制作国旗要遵守国家标准。
2.分析问题,形成初步绘制方案,探究获取关键数据
(1)简单梳理绘制思路,回顾已知应会内容。
师:请同学们快速梳理一下阅读的内容,回答画国旗的基本步骤。
生:第一步,先确定旗面的大小;第二步,根据国旗制作标准,确定旗面大五角星的位置、4颗小五角星的位置、4颗小五角星与大五角星的位置关系。
师:矩形和五角星这两个元素的绘制程序,前面的课我们已经学过。现在老师和大家一起来复习这两个程序。
①繪制矩形。(具体程序代码省略)
师:请同学们思考,在绘制矩形表示旗面时,需要注意什么?为什么要记下旗面在画布起点的位置坐标?
生:绘制矩形代表的旗面,旗面的长、高比例要满足3∶2的关系。旗面在画布的起点位置坐标,将决定旗面上各五角星的外接圆圆心的坐标。
②绘制五角星。(具体程序代码省略)
师:我们在旗面上绘制五角星时,需要注意更改程序中哪些关键的量?
生:起始角度angle变量的初值,因为它决定五角星的偏转角度;使用turtle.seth()函数时,需要明确填写的角度是按顺时针方向还是逆时针方向,顺时针方向角度符号为“-”,逆时针方向角度符号为“+”;要改变星斜长度length。
(2)探究获取关键数据。
师:请同学们再次深入研读“国旗法说明”“标准国旗尺寸图示”完成以下任务:①根据你选择的旗面长、高,依照选择的测量方法,按比例计算大五角星、4颗小五角星的外接圆圆心坐标、外接圆半径、星斜长度,将具体数值或者用到的数学式子填写到数据表的基础数据中;②思考以上获取的基础数据,哪些为关键数据,在使用turtle画图时,需要怎样处理,才能为程序所用,命名代表其意义的变量;③绘制五角星时,起点位置和偏转角度数据将怎样获取?选择哪个位置作为绘制的起点在技术上更容易解决、更省力气?
活动2:获取关键数据,填写绘制方案表格。
学生迅速进入思考、讨论、测量获取数据的状态,教师在巡视中回答学生的各种疑难问题,总结学生在获取数据时所遇到的共性问题。
疑难解析:教师在巡视、指导过程中发现,大部分学生对星斜长度、绘制五角星时的起点位置、绘制时的偏转角度三个关键数据如何获取存在着一定的困难,因此,教师结合自己的绘制经历,给学生提供以下两点提示,供学生参考。
①计算星斜长度。
计算星斜长度,教师用的是数学中的三角函数知识。在直角三角形中,已知斜边和一个锐角,求一条直角边(如下页图1)。请学生结合国旗制法图示(如下页图2),仔细观察大五角星的星斜长度如何计算,小五角星的星斜长度如何计算。
②绘制五角星时选取的起始位置及偏转角度的计算。
教师绘制五角星分两步来完成,请学生观察国旗制法图示。第一步,绘制起点选取的是外接圆的圆心,绘制的长度是外接圆半径,目的是要走到五角星的一个角尖。以大五角星为例,首先用goto()函数将海龟箭头移动到外接圆圆心位置上,这时海龟箭头初始角度为0度,即与x轴正方向一致,然后使用seth()函数按顺时针方向将海龟箭头偏转270度,再用forward()函数向前走外接圆半径的长度,即到达最顶端的角尖位置。第二步,把海龟在原地按顺时针转(180-18)=162度,顺时针偏转162度就是大五角星的初始偏转角度,然后使用学过的画五角星的程序段,完成对大五角星的绘制。
对于4个小五角星,也是从外接圆圆心出发,那么,要定位到哪个角尖呢?教师选取的是在大五角星与小五角星外接圆中心连线上的角尖,这就需要先计算出要走到这个位置,海龟箭头偏转的角度是多少。通过观察标准国旗尺寸图示可知,大五角星与小五角星外接圆圆心连线与从小五角星外接圆圆心垂直方向、从大五角星外接圆圆心水平方向三条直线相交,构成了一个直角三角形,可以利用直角三角形内的三角函数关系,即反正切函数就可得到垂直方向的偏转度数,再加上海龟箭头与x轴正方向的偏转角度,就可以求出大五角星与小五角星外接圆圆心连线与x轴正方向的偏转角度了。在计算过程中所有的角度旋转方向都一致,选择的都是顺时针方向,所以在角度前加上了“-”号;当海龟箭头从外接圆圆心走到指定的角尖位置后,与绘制大五角星一样,海龟箭头的角度再顺时针偏转(180-18)=162度,这样就规范地画出了各个五角星。
设计意图:为学生提供绘制方案基本框架,引导学生探究学习的方向,鼓励学生自主探究。在探究过程中,教师引导学生找到所有相关数据,并分析出哪些数据为关键数据,思考如何求得这些数据,思考如何将这些关键数据转化为turtle函数能利用的参数。遇到共性问题时,教师给出难点解析,这个解析仅代表教师的一种绘制方法,为学生提供一个解决问题的思路,鼓励学生运用自己想出的办法解决问题。教师在与学生的交流中也会了解学生个性化的绘制方法,实现教学相长。
3.设计基本算法,编写程序、调试修改
在取得全部关键数据后,在编程之前,先思考编程的基本逻辑,也就是基本的算法,并用自然语言来描述算法,填写在绘制方案中。
①师生总结绘制国旗的基本算法:第一步,设置画布的位置和大小;第二步,在画布上确定旗面的位置和大小,旗面为长、高比为3∶2的红色矩形;第三步,根据国旗制作标准,在旗面上画大五角星;第四步,从本步开始,依次画4颗小五角星,每颗小五角星内接圆圆心位置、偏转角度不同。
②编写程序、调试修改。
师:根据我们刚才梳理的算法框架以及刚刚获取的关键数据,结合上几节课所学的设置画布、绘制矩形、绘制五角星等知识,现在动起手来编写绘制国旗的程序吧。
活动3:自主实践,编写、调试程序。
学生结合教师给出的自助学案,自主实践,学生快速进入编写、调试程序的状态。教师在巡视过程中给予学生指导,特别是针对学生的疑难问题,在学生充分思考仍不能解决时,提供必要的程序片段,供学生参考。
设计意图:通过设计算法、编写和调试程序,引导学生思考如何分步骤地完成任务。在编程之前要理清解决问题的思路,梳理编程的基本逻辑,明确绘制国旗的算法,将建构的数学模型准确地转化为计算机程序来表达。教师帮助学生学会运用数字化工具表达思想、建构知识,初步达到促进学生计算思维发展、培养学生计算思维的目的。
4.学生成果展示、交流、分享
學生展示成果,分享采用不同方案绘制完成的规范“国旗”,交流数据是如何获取的、程序编写时遇到了哪些困难、是如何解决的、编程过程中最大的收获是什么。
设计意图:营造开放、交流的学习氛围,分享在学习历程中遇到的问题、解决问题的方法,引导学生互相学习,提升学生思维品质。
5.归纳总结,提出进一步优化程序的任务
师:在编程绘制规范的“国旗”的过程中,设置画布、绘制矩形和五角星等程序段我们之前都学过。如果自由绘制,没有要求,同学们都能比较好地完成,但在绘制国旗时有了国旗制作标准的限定,同学们就感觉有困难了,这时候就要深入分析文本,获取关键数据,建立数学模型,找到突破点,然后再确立算法、编写和调试程序,最后才能解决问题。这是一个综合运用知识的过程,需要同学们耐心、细致、有步骤、分阶段地去完成。
师:现在,请同学们仔细观察刚刚编写的程序,没有编完的同学,阅读老师给的范例,大家是不是发现,画5个五角星,除了初始的偏转角度和外接圆半径不同之外,其他的主体部分都相同?这种重复的程序段,我们能不能再优化呢?下一节课,我们将优化这个程序。
设计意图:总结、梳理,激发学生继续深入学习的内驱力。
● 教学反思
本节课学生通过完成绘制规范的国旗,体验了分析问题—获取数据—设计算法—编写、调试程序的完整过程。
首先,教师为学生创设了一个真实的情境,“我和国旗合个影”“给我一面国旗”这样的网络活动,来源于真实生活,容易引起学生的共鸣,激发学生的学习兴趣,具有实际意义。新课标强调,要以立德树人作为课程设计的指导思想,要挖掘学科教学中的育人因素。在课堂教学中,引导学生树立正确的价值观,将爱国主义渗透到学科教学中去,也是信息技术课程应当承担的责任,本节课选择的这个主题是一个积极的探索。
其次,教学过程以教师引导学生探究、解析疑难点为课堂运行主线,在教师分步骤地引导下,学生完成对“绘制方案”的填写。“绘制方案”可以帮助学生快速建立一个知识支架,学生填写“绘制方案”的过程,就是对问题由浅入深地思考、探究、解析的过程,为知识、技能的迁移做铺垫。整节课材料准备充分,不仅包括turtle模块中各函数的基本用法,还包括设置画布、绘制矩形、绘制五角星等程序块,学生在编写程序时可以直接使用,降低了编程的难度,节约了编程时间。在教师巡视过程中,师生互动效果好,有助于解决学生个性化的问题。
最后,从教学效果来看,学生在获取数据的过程中体会到分析文本材料的重要性;在填写数据表、转化到运用turtle函数解决问题的过程中体会到程序设计与数学建模的关系,提高了知识迁移、知识运用的能力;在设计算法、编写和调试程序的过程中体会到问题的解决需要逐步分解,先将大问题分解为几个小问题,再逐一细化,最后落实到每一条语句上去解决每个小问题,体会“自顶向下、逐步求精”的思想方法。
不足之处是,本节课的课堂容量比较大,平时常规课都是两节连上,共90分钟,本次公开课用45分钟时间难以达成最终的教学目标。因此,在教学设计中应该根据学生、课堂时间等实际情况,分解任务,设置任务层次,使学生能够有足够的时间去理解、转化、移迁知识。
点? 评
本节课从本质上来说,是一个很好的项目教学。本课以绘制标准国旗为主题,结合国旗制作标准、Python編程语言、数学三角函数等内容,具有很强的综合性。课程的导入以刚刚发生在网络空间的“给我一面国旗”引入,贴近生活,主题能引起学生的兴趣。国旗是国家的象征,制作和使用国旗都要遵守国旗法,网络空间也不例外,将国旗相关知识引入课堂也是对学生进行公民教育。我经常在思考,信息技术课程如何与爱国主义结合起来,今天这节课就是一个很好的示范。
本课选择Python语言编写程序,对任课教师本人是一个挑战。在吉林省还没有进入新课程、没有新教材的情况下,教师能从课标出发,自我组织材料,梳理教学内容,课堂上以制订“绘制方案”作为脚手架,逐步引导学生分解问题,并且提供了大量的教学资料,实属难得,从提供的文本材料来看,也体现了教师严谨的教学作风。在教学过程中,引导学生自主学习、探究,对共性问题予以重点分析、解答,帮助学生克服困难,教师起到了很好的主导作用。学生在编写程序的过程中,探究顺序结构、循环结构,体会程序设计分析问题—算法设计—编写代码—测试—排错的基本流程,加深了学生对程序设计思想的理解,培育了学生的计算思维。这样的课堂实践才能使学科核心素养真正落地。
面对信息技术新课程的到来,我们都是新教师,我们也都是探索者,我们也一样需要补充新知识。信息技术教师,只有深度学习相关专业知识,学习相关教学方法,为新课程的开展做必要的准备,才能在进入新课程之后胜任教学,才能使学科核心素养落地生根、开花结果。