APP下载

四步进阶 启迪思维:小学阶段“算法”学习能力进阶

2023-08-10高艳

中国信息技术教育 2023年15期
关键词:计算思维算法

高艳

摘要:如何在教学过程中渗透计算思维的培养是信息技术教学的一个重要命题。本文以“冒泡排序”为例,将算法游戏化、具象化,再分解具体步骤,设计相应的算法模型,并尝试验证算法的正确性,反思优化算法,以期达到“算法”模块的有效教学。

关键词:计算思维;算法;冒泡排序

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2023)15-0056-03

惑中求解,初探课堂四步走

在信息技术教学中,图形化编程及代码语言编程的使用需要根据学生不同阶段的特点来选择。在低年段使用图形化编程,直观形象,有利于维持学生的兴趣。而到了中高年级,随着思维和数学能力的发展,图形化编程难以拓展,不利于发展学生的发散思维、逻辑思维,长期使用,会造成学生过度依赖图形化界面,缺乏优化脚本意识,无法做好向Python语言过渡的准备,从而使得算法教学的效率大打折扣。因此,笔者在教学中尝试以排序算法中的“冒泡排序”为主要内容,设计小学阶段“算法”学习能力进阶模式,具体内容如表1所示。

课堂游戏,层层分解算法

在教學中,教师可以利用生活中的情境,或者通过直观的、参与互动性强的游戏,将算法具体化、直观化,体现算法的趣味性,把解决问题的难度控制在学生能力范围内。笔者的具体设计如下。

游戏一:如何将班级内的同学按照从高到矮的顺序排列

玩法:找5~6位学生按照身高从高到矮的顺序排列。比较最后两位学生的身高,身高较高的往前,再和前一位学生比较,直到身高最高的学生排在第一个。接着,再从最后两位学生开始比较,剩下的学生中最高的就会排到第二个……这样一轮轮地比较,最后实现从高到矮的顺序排列。

扩展玩法:每位学生取5张牌面数字小于10的扑克牌,并将5张牌打乱顺序后使用冒泡排序的方法进行排序。

游戏与程序设计的算法差异性:在游戏中,两个学生交换位置是直接发生的,但在程序中,并不会直接交换位置。

游戏二:两杯水交换容器

玩法:准备三个不同的透明容器,分别做好编号,其中两个装了水,分别滴入红色和蓝色色素。先出示两杯水,请学生交换两个容器中的水。从生活中的例子可以明确无法直接交换,需要借助第三个容器c来完成。学生动手操作,理解容器内的水的移动路径。

第一步,将容器a中的水倒入第三个容器c;

第二步,把容器b中的水倒入容器a;

第三步,把容器c中的水倒入容器b。

这样就完成了容器a、b内液体的交换。

游戏与程序设计的算法差异性:当把变量a赋值给变量b后,变量a的值不变,不会像游戏中这样值变为0。

游戏三:传话游戏

玩法:请甲、乙、丙三位学生上来玩游戏,请学生甲、乙每人心中想一个整数,为了便于看到游戏过程中的变化,请这两位学生把心中所想的数字记录到纸上,每次听到新的数字时划去之前写下的数字。学生甲把数字告诉学生丙,目前甲、丙所记录的数字是相同的。然后请学生乙把数字告诉学生甲,现在甲、乙记录的数字相同。最后,请学生丙把数字告诉学生乙。请学生甲、乙说出最后听到的数字,会发现他们两个之前所想的数字从对方的口中听到了。

游戏与程序设计的算法关联性:这个传递的过程可以让学生直观地看到赋值的过程。作为中间人的丙,在把数字告诉乙后,并不意味着就不记得这个数字了,变量在新的数值覆盖之前仍是原来的值。

笔者发现,通过三轮游戏,学生初步理解了冒泡排序的算法结构是将冒泡排序分解成两个值的大小比较,并按序交换两个值的多次循环。

抽象解构,画出算法模型

冒泡排序的实现原理是数组中有N个数,假设需要将数据从小到大排列,就要依次比较相邻两个数的值,如果前者大于后者,就把两个数交换位置,这样第一轮遍历所有数后,会选出一个最大的数放在最后面。经过N-1轮,就能完成所有数从小到大的有序排列。

在学生充分理解冒泡排序的算法的基础上,教师进一步分解,将嵌套的双循环结构通过流程图进行分解,如表2所示。

由图入码,铺设学习缓冲区

《义务教育信息科技课程标准(2022年版)》弱化了对小学阶段程序语言的学习要求,不要求系统学习某种程序设计语言,也不要求机械记忆函数、参数,强化了解决问题的策略和方法。因此在教学中,要给学生铺设一定的学习缓冲区,做好由具象思维向抽象思维的过渡,避免学生因学习过程遇到困难而退缩,降低学习兴趣。具体做法如下。

(1)学习使用易操作的流程图绘制软件,绘制出算法模型,并由流程图得出用自然语言描述的伪代码;如果数组中的第i项大于第i+1项,就使用临时变量交换数组中第i项和第i+1项;当循环次数大于N-1(数组的个数-1)次时,就停止这一轮冒泡排序。

(2)使用具有图形化语言和代码语言双模式编程软件,将伪代码通过图形化编程语言编写出来,再通过程序编译功能,转换成代码语言。学生通过阅读代码,理解代码语言的含义,进而建立起图形化语言与代码语言转换的缓冲地带。

(3)提供缺少某句关键语言的半成品程序并执行验证,降低学生写代码的难度。

优化算法,展现问题解决新思路

不同的排序算法拥有不同的时间复杂度和稳定性,冒泡排序只是众多排序方法中的一种。教师要引导学生思考如何在排序中寻求空间优化、时间优化,在程序迭代进阶的过程中寻找更快、交换次数更少的算法。具体方法如下。

优化内层循环:以从小到大排序为例,经过第一轮循环已经把最大值排到最后一位,因此在下一次遍历过程中就应该减少最大值的比较。每一轮内层循环都已经让最后一次交换位置之后的数有序排列,因此比较两数大小,并不需要遍历到数组的最后一个数,从而减少相应的比较次数。

优化外层循环:若在某次排序中,数组经过冒泡循环后已形成有序排列,那么无需再执行代码运行。在算法中,增加一个数值交换的判断,将该变量初始值设为0,每交换一次,数值增加1,若本轮没有数值交换,该变量值仍为0,则认为数值是有序排列的,无需再执行程序。

迁移运用:把冒泡排序作为学习蓝本,引导学生学习插入排序、选择排序等常见排序方式,先将这些排序方式具象化,再通过抽象分解具体步骤,设计相应的算法模型,尝试验证算法的正确性,反思、比较不同的排序算法特点,得出不同的应用方案。

结语

在“算法”模块的教学中,由于受限于学生的数学理解力和英文水平,教师在内容设计上要以学生能力发展及学习需求为目标,选择学生熟悉的事物作为支架,完成自然语言、流程图、程序语言的过渡。在算法中,解决同一个问题常有很多不同的解决方案,教学亦然。

参考文献:

[1]中华人民共和国教育部.义务教育信息科技课程标准(2022年版)[S].北京:北京师范大学出版社,2022.

[2]李锋.新版课程标准解析与教学指导 小学信息科技2022年版[M].北京:北京师范大学出版社,2022.

[3]熊璋.“科”“技”并重:义务教育信息科技课程标准解读——访义教信息科技课标组组长熊璋教授[J].中国信息技术教育,2022(09):4-7.

[4]薛敏.小学信息技术教学中进行Python编程语言教学的策略[J].科幻画报,2022(07):238.

[5]谢声涛.从Scratch到Python轻松学[M].北京:中国青年出版社,2020.

猜你喜欢

计算思维算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
算法初步两点追踪
基于增强随机搜索的OECI-ELM算法
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析