苗宣衍
学习内容分析
Python编程是苏教版《初中信息技术》八年级第4章《算法与程序设计》最后一节的内容。本章前几节讲述了算法与编程的基本知识,使用Visual Basic语言实现顺序结构、选择结构与循环结构的运用。本章最后一节在VB的基础上,让学生快速了解另一种程序设计语言的思维和方法,为今后深入学习Python或其他高级语言做准备。本节课的定位是《Python循环语句》的第1课时,主要目的是帮助学生理解Python中for语句的功能,认识for语句的应用,在分析、解决问题的过程中逐步培养计算思维,而对于for语句的具体使用方法安排在后续课时中训练。本课围绕“探寻计算机软件的秘密”这一主题,以学生学过的“填充柄、查找替换、图片反相”等旧知识为抓手,串联起对新知识“循环语句”的学习,引发学生运用计算思维解决问题,编程实现数据处理、文本处理、图像处理和信息安全四个领域的软件功能。
学习者分析
八年级的学生已经完成“信息技术基础”模块的学习,掌握了信息编码、信息安全等概念,对Excel数据处理、Word文字编辑、Photoshop图像处理都有操作经验;本学期学习了“算法与程序设计”的大部分内容,掌握了VB和Python编程的基础知识。学生的上机操作能力较强,同时也具备一定的数学推理能力,为本课的学习奠定了很好的基础。但学生还未接触过Python循环语句及其应用,对程序与软件之间的关系还没有概念,需要通过本课学习。
学习目标
①掌握for循环语句的格式与功能。②掌握range()函数的使用方法。③认识软件功能的实现原理,学会运用循环语句编程解决问题。
教学过程
1.导入
师:老师需要打印这样一张表(如图1),每行开头都是一个数字“1”,你能帮帮我吗?
生:可以用WPS表格中的填充柄来完成。(学生演示)
师:为什么填充柄可以快速完成这样一个复杂的任务呢?其实每一款软件的功能都是由程序控制的,今天我们就一起来探寻计算机软件的秘密!
设计意图:从学生熟知的填充柄引入循环,引导学生思考软件背后的原理,理解循环的概念,这样既能夯实学生的语法基础,同时也能启发学生的计算思维。
2.探秘一:数据处理
(1)复制填充
师:同学们已经学会在Python中使用print语句打印一行内容,那么,如何快速打印多行呢?(演示使用多行print(1)语句完成打印,观察后可发现,完成该任务需要重复执行同一条语句,这就是“循环”。在Python中可以用for循环语句实现指定次数的循环,书写时注意不要忘记冒号和缩进。学生登录OJ平台,完成任务1:打印100行数字“1”。教师在线查看班级答题情况,请学生纠错,代码如下页图2所示)
短短两行代码为何能实现复杂的功能呢?在for循环语句中,i是循环变量,range()函数默认会生成一个从0开始的自然数序列,在循环开始后,序列中的数字会依次赋值给i,接着执行循环体里的语句,直至最后循环结束。(结合课件动画演示,如图3所示)
(2)序列填充
师:除了复制填充,填充柄还可以快速填充序列。(演示)这又是如何实现的呢?我们可以设置range函数的参数来生成指定序列。(讲解,演示)学生登录OJ平台,完成任务2:打印1,3,5,7……n。
老师在OJ平台看到同学们都能顺利完成这两个任务(代码如图2所示),可见大家对for循环语句掌握得很好!至此,我们已经成功地探究出数据处理中填充柄的秘密!
设计意图:通过两个任务,学生能学会正确书写for循环语句,理解for循环语句的执行过程;教师的讲解、演示可进一步帮助学生认识range函数的功能,掌握range函数的参数设置方法,在达成本课学习目标的同时,也为完成后续任务奠定基础。自动化是计算思维的一个本质特征,在本环节中学生使用循环语句编程,能够初步建立计算思维。与此同时,本课采用OJ平台(Online Judge,在线判题系统),使得师生均能实时获得答题反馈,节约课堂批阅评价时间,也能通过数据及时了解学生掌握程度。学生间互相纠错也可丰富课堂的评价方式,促进提升课堂学习效果。
3.探秘二:文本处理
师:这篇文章里有一个词写错了,如何找到所有写错的词语并纠正呢?
生:使用WPS文字软件里的查找替换!(演示如图4所示)
师:查找替换又该如何编程实现呢?Python中的count函数与replace函数能够实现对一个字符串的查找与替换。一篇文档是由一行行字符串组成的,也相当于一个序列,因此也能使用for循环。(结合课件动画演示)
为了统计总次数,我们需要使用一个变量n,而循环体内,变量n的值会根据情况增加。请你完善程序,完成查找替换文字。(学生打开学件,完成任务3:文字查找替换,如下页图5所示)
有的同学已经完成了任务3,我们请一名同学来讲解自己的代码。(学生展示代码如下页图6所示,并讲解思路)
设计意图:学生看到任务3后,很快能够联想到使用文字处理软件的查找替换功能,教师结合课件动画演示进行讲解,逐步引导学生思考查找替换功能背后的循环原理。本环节借助旧知识,学生能发现其蕴含的循环规律,认识循环语句在实际生活中的运用,并能正确设置变量在循环体外的初值,控制变量在循环体中的变化。计算思维的另一个本质特征是抽象,本环节学生通过思考完成对实际问题的分解和抽象,并运用循环语句自动化解决问题,逐步建立计算思维。教师请学生展示自己的代码,简述理解过程帮助学生理清思维过程,巩固知识点,同时起到良好的示范作用。
4.探秘三:图像处理
师:请同学们看这两张图片(如图7),你發现了什么?
生:它们的黑白颜色颠倒了。
师:这是怎么做到的呢?
生:可以用Photoshop来完成。
师:这个任务看似困难,其实用PS反相功能可以快速完成。(演示)它的背后又有什么秘密呢?同学们学过信息的编码,知道黑白像素在计算机中是用二进制数0和1来表示的,现在你发现PS反相功能的秘密了吗?
生:就是把0变成1、把1变成0即可。
师:(出示图片的数字矩阵)可是这么多密密麻麻的数字,倘若人工一个个去修改,将是一个庞大的工程,那我们再找找,其中是否蕴含某种规律?
对于一行数字,我们需要从左到右逐个变换,这样使用一次循环语句即可。而整张图片是由多行数字组成的,我们需要不断对每一行进行变换,再用一次循环语句就可以实现了,所以这里使用了多重循环。(讲解、演示)请同学们完善程序,实现图像的反相处理(任务4:图像反相)。
同学们完成得不错!代码如图8所示。可见一个复杂的任务,只要找到其中的规律,将其分解成一个个简单的任务,运用循环语句就可以让计算机自动、快速完成。
设计意图:学生有信息编码的基础,很容易理解黑白位图反相的原理,即0、1数字的变换。而图像的本质是数字矩阵,所以本环节将图像处理与多重循环教学相结合,不仅让学生认识到反相功能是应用了多重循环来自动化实现更复杂的功能,而且培养了学生从具体问题中抽象出循环规律的能力,进而培养其计算思维。
5.探秘四:信息安全
师:我们用循环语句可以实现反转每一个0和1,请大家看这样一张反转后的图片(展示图片),你能看到什么吗?
生:看不出来。
师:请你运行老师发送的程序,把数字反转回来,看看会有什么结果?
生:(任务5:图像解密)我看到图片上有“你真厉害!”。
师:没错,你们真厉害!老师按照指定的规则,使用循环语句将某些数字打乱,就会得到刚才的图片,这样就保护了原始信息,实现了图像加密。而同学们按照同样的规则,使用循环语句反向转换回来,就可以得到原图,实现了图像解密!
师:其他形式的信息可以这样加密吗?
生:可以,因为计算机中存储信息都是使用二进制。
师:没错,我们用类似的、更复杂的方法实现更高级别的信息加密,保护信息安全。
设计意图:探秘四是在图像处理基础上的延伸,本环节将信息加密与循环语句相结合,学生不仅能更加深入地理解循环语句的应用,还能对信息加密算法有初步认识,新旧知识的融合既能促进学生计算思维的强化,又能树立他们在信息社会的安全意识。
教学反思
本课设计了四个探秘环节,通过五个有趣的小任务,由浅入深,涉及数据处理、文本处理、图像处理和信息安全多个领域,让学生在学习循环语句的同时,逐步建立并运用计算思维。第一个环节让学生掌握循环语句的基础知识,锻炼学生书写完整的程序代码,体验自动化解决问题的过程。后三个环节结合循环语句的具体应用,将侧重点集中在问题的分析、解决上,注重对学生思维的锻炼,学生在将复杂的问题简单化的过程中,能够强化分解、抽象的思维方式,最终以自动化的方式编程完成任务。计算思维使人们在不必理解每一个细节的情况下就能够安全地使用、调整和影响一个大型复杂系统,因此在后三个任务中教师提供程序框架,学生仅需关注与问题关联最密切的核心代码,这样既减轻了学生的代码书写负担,也为学生在有限时间内完成编程实践、培养计算思维提供了保障。
本课的四个探秘环节均与学生已习得的知识、技能相关,将新旧知识很好地串联在一起,不仅使学生掌握了新的编程技巧,还升华了其对旧知识的理解,有利于计算思维的培养。
点评
本课是一节市级公开课,教学内容为江苏凤凰科学技术出版社八年级信息技术教材第4章《算法与程序设计》第6节《初识Python》的第二课时,主要介绍循环语句。这一版教材的程序设计模块仍然以VB为基本教学内容,将Python放在了最后一节进行知识补充。学生在前五节中已经完成了程序设计的算法、语言等基本概念的知识学习,也使用VB进行了顺序、分支和循环结构程序设计的学习,对程序设计已经有一定的知识储备和技能基础。因此,授课教师结合教材中Python作为补充知识的定位,以及学生已有的程序设计经验,将这一课时的教学内容進行了全新的设计尝试,其最大的亮点就是通过学生自己的补充编写,模拟完成了七、八年级之前教学中的不同章节的模块简化版功能,包括数据处理章节的“填充柄”功能、文字处理章节的“查找替换”功能、图像处理章节的“反色”功能、信息安全章节的“加密”功能。一方面将应用的案例变得亲切有感,另一方面通过编程实现功能模块,可以进一步增强学生对解决更复杂问题的信心,继而提高学习的兴趣和动力。这种通过新知识深度“唤醒”旧应用的尝试,将信息技术学科的学习从应用的角度向学科内涵的角度转向,是有趣、有益也有研究价值的。需要说明的是,作为VB补充内容的教学,这样的呈现是合理的,但如果仅使用Python进行程序设计单元的整体教学,只用一节课作为循环结构的程序教学的开场可以,作为循环结构的完整教学还不够扎实与深入,需要后续课时的练习与补充,或者将本课的任务群分解到多个课时加以深化。