李忠伟
案例背景
《循环结构》案例是广东省佛山市高中信息技术课程校本化研究活动之“计算思维的培养”的一节公开课。教材内容取材于广东教育出版社的高二信息技术(选修1)算法与程序设计第二章第4节第一课时,并结合石门高级中学机器人校本课程进行设计,学时为1课时。《循环结构》一课将STEM教学理念融入课堂。STEM教育理念源于美国,其代表科学(Science)、技术(Technology)、工程(Engineering)、数学(Mathematics)融合,旨在培养具有创新能力的复合型人才,同时在教学过程中有意识地向学生渗透计算思维,即利用计算机解决问题的思维和方法。
学情分析
本节之前学生已学习了程序的顺序和分支结构,对机器人仿真编程软件的使用基本熟悉。这节课较之顺序、分支结构有一定的难度。由于只上了几节程序基础课,大部分学生用代码编写程序的能力较弱。为了提高学生的学习积极性,降低难度,笔者对循环结构这一章节采用循序渐进的方法。首先用流程图的编程模式进行教学,暂时忽略具体代码,关注算法本质,希望让学生更容易接受和体验学习编程的成就感。高中生信息技术水平差异化非常突出,教师要兼顾到各个层次的学生。教师设计不同难度的编程任务,让学生们都能在课堂上“吃饱”。教师在课件上提供丰富的学习资源以供他们进一步学习,如提供自主学习的微视频导学材料等。
教学目标
知识与技能目标:认识循环结构的概念、作用、分类及其在编程中的广泛应用。掌握循环结构中的多次循环(固定次数循环)、永远循环(死循环)和条件循环的区别和应用。学会综合利用循环结合顺序和分支三大结构编写机器人行走等一系列的应用问题。
过程与方法目标:能通过类比的方法去应用循环结构编写程序。能正确运用循环结构去解决机器人行走等一系列应用问题。初步体验自顶向下、逐步求精、模块化程序设计解决问题的过程和方法。
情感态度与价值观目标:通过程序设计过程,培养学生严谨细致的科学精神。培养学生编程兴趣。
教学重点、难点
重点:循环结构中条件循环的执行流程及编程应用。
难点:循环结构的灵活应用。
整体思路
本课先是从学生感兴趣的机器人问题出发,教师演示灭火机器人灭火和扫地机器人回家充电的情境。然后,教师提出问题:机器人是如何搜索到火源和充电器的?从而激发学生探究问题的兴趣。接着,教师以问题解决的教学模式,将循环结构的知识,按照“什么是循环结构——为什么要用循环结构——循环结构分类——循环结构应用”一步一步地循渐推进。教学中采用案例教学,贴近学生生活实际,如机器人叫醒程序“闻光起叫”、机器人灭火程序等,让学生体验完成机器人编程项目的成功感。
●教学过程
1.创设问题情境,引入新课
教师播放两段视频,一是我校学生在美国参加国际中学生机器人灭火比赛获得冠军的比赛视频;二是家庭扫地机器人扫完地回家充电的视频。学生看后既感到新鲜又充满疑惑。例如,灭火机器人它是如何自动搜索到火源的?扫地机器人是如何找到充电器的?教师引导学生分析,机器人是由程序驱动的,灭火机器人在找到火源前,它不停地重复行走以搜索火源目标;而扫地机器人快没电了,在找到充电器前,它都在不停地重复行走以搜索充电器目标。因此,看似它们在做不同的任务,但程序本质是一样的,即在一定的条件下,重复执行行走和搜索目标的动作。而描述这种重复的算法步骤的程序结构,就是这节课要学的内容——循环结构。
设计意图:机器人问题情境让学生倍感新鲜,富有时代感。机器人的各种走路算法是一个个灵活应用循环结构编程的典型案例。通过机器人仿真编程环境,驱动机器人按学生的意图做出各种反应,呈现效果生动形象,更能吸引学生学习程序的兴趣。
2.循环结构概念
教师讲解循环结构的概念,描述重复执行某段算法的程序结构。它和顺序、分支结构一起组成程序的三大类型结构。教师讲解循环结构的执行流程。
学生聆听并理解循环结构的概念,阅读流程图掌握循环结构的执行流程,回答教师提出的问题。
设计意图:让学生储备循环结构的知识为后续编程解决问题夯实基础。用流程图的方法讲解循环结构执行流程。通过对比教学法,让学生理解循环与分支、顺序结构的区别。
3.循环结构作用与分类
教师通过分别用循环结构和顺序结构实现机器人走正方形的两个程序的对比演示,引导学生归纳循环结构的作用,它可以极大地减少程序重复书写的工作量。
学生对比分别用顺序结构和循环结构编程实现机器人走正方形的例子,感悟采用循环结构的优势。
设计意图:通过对比实验,形成简练和繁冗的强烈反差,让学生感悟循环结构的优点。
4.循环结构的应用
(1)多次循环
教师讲解多次循环的概念和使用方法,布置机器人走正六边形的编程练习任务。
学生计算走正六边形转弯的角度(如图1),动手编写和调试程序。学生总结并掌握多次循环结构的编程方法。
设计意图:机器人走正六边形轨迹的程序是走正方形程序的进阶,需要灵活求解转弯的角度,也通过任务的稍微改变考察学生知识的迁移和应用能力,有一定的难度梯度,符合学生认知和能力发展规律。同时,这里也给学生设置了一个惯性思维陷阱,很多学生误认为机器人转弯角度是内角,其实是内角的补角。
(2)永远循环
教师演示机器人不停发出叫声并眨眼睛的编程例子的实现方法。
学生观看演示,掌握永远循环结构的编程方法。
设计意图:这个编程例子为下面完成的“闻光起叫”机器人叫人起床程序作铺垫。由相对容易理解的永远循环知识点过渡到下面难度相对高的条件循环知识点,学生知识的迁移和能力的提高,符合其心理认知发展规律。
(3)条件循环
教师讲解条件循环的概念和应用场景,布置学生练习机器人“闻光起叫”编程。
教师巡回指导学生,检查学生学习成果。
学生两人分组协作动手编写和调试程序,上交作业。学生观看同学演示。学生归纳掌握条件循环结构的编程方法。
设计意图:机器人“闻光起叫”让学生和“闻鸡起舞”相联系,觉得幽默有趣,学习热情高涨。该环节是本课的重点难点所在,因为条件循环的循环体是否执行涉及循环条件表达式是否成立的问题。在实际教学中,笔者发现学生往往会忽略循环条件变量是否改变的问题。学生的整体算法思路没错,但循环体里面常常忘记给循环变量进行重新赋值,以致循环条件在程序执行自始至终都是原来的初值,导致变成死循环或者没有执行循环体的错误。因此,本环节教师先不提醒学生,采用在他们动手实践的时候,允许部分学生犯错,然后通过他们运行程序发现问题,这个时候,再引导学生寻找和分析问题的根源。从犯错中得到经验教训,从而深刻体会到循环条件编程的关键点,也就更好地突破了循环条件应用的教学难点。
5.解决问题——机器人搜索火源问题
教师采用自顶向下、逐步求精模块化的编程方法引导学生获得解决问题的算法,布置练习任务,让学生自主探索机器人搜索火源的算法。教师检查学生学习成果,让学生用游戏表演的方式展示机器人搜索火源的行走算法。
教师展示仿真环境的程序测试效果。
学生阅读课件获得解决问题的算法,观看同学表演机器人行走算法,加深理解。
学生完善教师提供的半成品程序,调试程序和仿真环境测试,提交作业。
设计意图:水到渠成,综合利用本节课的知识点,解决新课导入的问题。让学生学以致用,体验学习成功感。通过游戏模拟机器人行走,加深学生对机器人搜索火源的“S”形行走算法的理解。
6.回顾和拓展
(1)回顾梳理
教师课堂小结,回顾本节课学习过程,引导学生总结循环结构的知识点。教师引导学生回顾自顶向下,逐步求精模块化的编程方法。师生一起浏览网络课件学习社区中学生提出的典型疑难问题并进行解答。
(2)拓展提升
教师简单介绍循环结构在其他编程领域中的应用,引导学有余力的学生课外阅读拓展材料,激励学生进一步学习程序设计和机器人知识。
设计意图:通过网络课件,及时搜集和解答学生的疑难问题,提高课堂的互动性。开拓学有余力的学生的视野,让各层次的学生都能“吃饱”。通过课堂小结和评价,让学生获得进一步的感悟和提升。
● 教学评价
为了获得学生对本课的学习效果的评估数据,课件设计了学生学习自我评价反馈环节(如图2)。让学生学完这节课后,对自己的学习行为进行自我评估,同时也让学生对教师的教学提出改进建议。对学生提交的数据进行分析,可以侧面地了解学生哪个知识点还没有掌握,从而改进教学环节。教师争取从学生的反馈获得改进建议,形成民主的教学氛围,从而更好地达到教学目标和突破本节课的重点和难点。
● 教学反思
这节程序设计课的教学内容和编程案例与机器人应用教学的一些内容进行了整合,旨在利用循环结构解决机器人的一些应用问题,可以说是程序设计和机器人编程应用教学的一堂整合课。在教学过程中,教学设计是有意识地向学生渗透学科思维例如计算思维的培养,试图将STEM教育理念引入课堂,将其融合在一起。具体体现在每个应用机器人的编程小项目对学生来说本身就是一个个需要完成的小工程(E);机器人走正六边形转弯角度的求解就是数学(M)思维的训练;还有机器人应用亮度传感器测试环境光的亮度是电子技术(T)的应用等;而最为重要的是在程序解决问题的过程中,向学生有意识渗透了自顶向下、逐步求精、模块化的编程思想。整堂课,学生整体参与度较高,能完成课堂编程任务。但是,也有不足之处,如限于场地和经费,没能给学生提供真实的机器人编程体验等。