闵慜
高中信息技术新教材的编程和算法教学注重培养学生的计算思维,强调让学生从生活出发,利用所学编程知识来解决生活中的实际问题。因此,教师在创设教学任务时,需考虑学生认知的实际情况,创设情境,引发学生兴趣,从生活数据出发,注重任务与任务之间的联系与拓展,引导学生主动思考,不断分析探究,进一步优化学生计算思维,创设高效课堂教学模式。下面,笔者以教科版信息技术必修1《数据与计算》中的《周而复始的循环》一课为例,从生活中的数据出发,优化课本中的项目案例,探究课堂项目式案例布局与设计,探寻学生信息技术学科素养的培养。
● 分析探究生活数据,优化项目案例设计
在《周而复始的循环》这节课中,如何通过典型的项目式案例让学生体验Python语言中循环的意义以及两种循环结构的区别,从而使学生在面对不同实际问题时选择合适的编程语言结构体系,是需要突破的一个难点。怎样既能吸引学生的兴趣,引发学生对同一种项目不同问题的思考与总结,又能更好地融合信息技术学科素养呢?笔者认为,课堂项目式地引入案例尤为重要。
在计算机程序中,某些代码的反复执行称为循环。Python中既有重复一定次数的计数循环,也有重复到某种情况结束的条件循环。本节课主要围绕“别小看循环的魅力”项目展开学习,分成子项目一“别小看一张纸的高度”和子项目二“别小看0.01的作用”。两个项目的案例均来源于学生能接触到的生活案例。子项目一主要通过不断折纸的方式,探究能达到怎样的高度;子项目二主要以网络中的鸡汤公式1.01365=37.8和0.99365=0.03为基础进行变式,探究人的成长依据网红公式的计算方式,多久能达到梦想的高度。
笔者通过子项目一帮助学生复习for循环,并设立条件,引入while循环的使用。问题如下:假设现有一张白纸的厚度大约是0.1毫米,对折一次,厚度变为0.2毫米,再对折一次,厚度变为0.4毫米……每对折一次,其厚度均变为对折前的2倍。假设这张纸有足够大,可对折任意次,那么把它折叠20次,求出折叠20次后的厚度h(米)。学生利用Python中for循环的语法结构求出厚度后,教师再提出疑问:折叠多少次,纸的厚度能超过珠穆朗玛峰的高程?学生已有的知识无法解决该问题,因此笔者自然引入新的知识要点——while循环语句的语法结构,学生获得新知后再进一步解决项目问题。
项目中设立对立的条件让学生思考新旧知识的联系与异同,同时扩充生活中的实时数据,让学生进一步感受利用编程语句解决实际生活问题的过程,初步融入信息技术核心素养的培养。
● 总结提炼,突破编程语言难点
本节课中,通过子项目一突破了区分计数循环和条件循环的不同之处,学生对两种循环的使用及程序编写有了一定认知,但仍停留于教师引导下的被动思维与被动的程序编写。如何更好地引导学生运用新知解决新的问题,从而实现新知识的迁移?项目案例的设计需要提升难度,同时又要与子项目一的思维方式有一定的联系,在联系的基础上进行拓展,进一步促进学生的思维迁移,强化编程语言的难点内容。
基于此,本节课中引入了子项目二“别小看0.01的作用”。该项目中以网络中的鸡汤公式1.01365=37.8和0.99365=0.03为基础进行变式,把学生分成100组和0.01组,分别利用Python程序去探究,按照网络中的鸡汤公式的计算方法:如果你每天比原来多做一点点(+0.01),每天以原来的1.01倍成长,多久之后,你就达到你原来水平的100倍?(100组研究内容)如果你每天比原来少做一点点(-0.01),每天以原来的0.99倍成长,多久之后,你达到了原来水平的0.01?(0.01组研究内容)
笔者与学生共同总结提炼出了项目中的核心要素:①判断循环执行的条件是什么?②重复执行的语句又是什么?学生在新知学习的基础上进一步思考如何将新知进行迁移,融合新知难点,解决新项目中的相关问题。例如,100组要解决如何通过Python语句实现“達到原来水平的100倍”“每天以原来的1.01倍成长”“天数增加”?0.01组要解决如何通过Python语句实现“达到原来水平的0.01”“每天以原来的0.99倍成长”“天数增加”?看似两组内容相似,其实不然。对比两组程序语句,学生要思考增长与负增长对应的编程语句和运算符号的正确使用,需要在总结中合理迁移,突破编程语言难点。
● 融合升华,拓展学生计算思维
Python编程语言的使用能帮助学生更好地进行数据的计算,但在计算的过程中,需要学生对现实生活中的项目数据进行论证,辨别数据的真伪,这也是学生计算思维的体现。本节课中,在学生解决子项目二的基础上,教师结合100组和0.01组的编程语句,升华提炼,优化成一个小程序,让学生输入每天努力或退步的因素以及梦想达到的倍数,程序系统给出答案:多少天后能达到梦想的高度。让学生测试运行程序,同时让学生思考:人的努力或成长用这种计算方式是否可行?学生通过测试发现,指数级别的成长速度是不可取的。网络中的鸡汤公式只能是表面上的激励,通过程序语句深思推敲后,可能就会漏洞百出。教师给出案例,让学生进一步思考:1.01365=37.8,1.02365=1377.4和0.01*365=3.65,0.02*365=7.3两组计算方式,让学生发现计算的方式不一样,编写程序的算法不一样,得到的结果往往是千差万别的。当然,不论是累乘指数级的上升还是累加一点一滴的进步,它都是人不断进步、积少成多的综合体现。
笔者设计子项目二的目的,不仅是让学生掌握while循环的基本使用,更是让学生体验循环结构的魅力。每天积累一点点,日积月累,就能有不一样的收获,这是人生的阅历,也是循环带给学生的启示。编程不仅是更好地实现计算,更要注重算法的设计以及算法在实际生活中的真实运用,这也是信息技术核心素养的体现。
本节课是基于循环结构课例的尝试,通过优化课本中的项目案例帮助学生更好地感受Python编程语句中循环的意义及使用方法,同时希望通过案例的设计及优化,进一步帮助学生感受发掘生活数据的魅力,更好地培养学生的信息技术素养。在信息技术教学中,教师应结合项目案例带领学生激发学习的主动性,主动地对知识进行深入挖掘,引导学生独立思考。项目任务的设计要结合学生的认知能力,合理制订学习目标,合理设计每个项目的意义,确保项目内容的趣味性和深刻性,让学生掌握知识内涵,使其能够自主学习,提升计算思维能力。