您所在的位置:首页 > 课程教学研修中心 > 教学设计 > 中学 > 信息技术
发展计算思维 突破教学难点 ——计算思维在选择排序算法教学中的体现

发展计算思维  突破教学难点

——计算思维在选择排序算法教学中的体现

上海市南洋中学   陈敏

计算思维是高中信息技术学科四个核心素养之一,是指个体运用计算科学领域的思维方法,在形成问题解决方案的过程中产生的一系列思维活动。本课例从选择排序算法教学中,就如何培养学生计算思维能力,如何突破教学中的难点进行探讨与实践。

一、学生理解选择排序时遭遇的思维瓶颈

选择排序属于《高中信息科技》(第二册)中2.3节排序的内容。依照教学设计,我将选择排序分成了两个课时完成。在第一课时教学中,解决了数组中两个变量值的交换问题和用打擂法求最值问题,介绍了VB中的常用内置函数,并且让学生体验自定义函数min(),实现在数组中找到最小数所在的位置;在第二课时教学中,学生根据选择排序的算法思想,绘制流程图,推测计算机的执行过程,并尝试运用VB语言完成部分程序设计。

学生在学习选择排序过程中,对于理解选择排序的算法思想,并将此算法用流程图进行描述,以及用程序设计语言实现算法流程图,都存在一定程度的困难。

本课例主要就第二课时教学中通过发展学生计算思维,突破教学中的难点进行归纳与总结。

二、通过排队游戏理解选择排序算法思想

课程导入:生活中会碰到很多需要排序的操作,如网上购物、成绩排序、文件进行排序等。问题:网页或者软件背后,所运行的程序是如何实现排序操作的?实现排序的算法有很多,今天同学们将学习选择排序的算法。首先通过一个游戏来了解一下选择排序。

排队游戏:四位同学演示,依据选择排序思想实现四人身高从矮到高排序(排队游戏规则、变量说明,如图1所示)。

                                             

图1  教师在PPT上演示游戏规则、变量说明

学生在三轮排序演示结束后,师生间进行了如下的对话:

【情境再现】

1.  第一轮排序

学生在第一轮排序演示结束后

师:让我们一起来归纳一下第一轮排序的过程,在第一轮加工过程中,在什么范围中找到最小数的位置k?(教师在白板上贴纸演示,如图2所示)

1622427937354392.png

图2  教师在白板上贴纸演示

生:在d(1)-d(4)中找最小数的位置k。

师:接下来做了什么事情?

生:交换。

师:交换了哪两个数?提示:擂主是谁?

生:d(1)和d(k)做了交换。

(教师在白板上贴纸演示,如图3所示)

1622427937394527.png

图3  教师在白板上演示的第二步贴纸

师:这样就完成了第一轮排序。

2. 第二轮排序

学生在第二轮排序演示结束后

师:下面我们将第二轮排序进行归纳。在第二轮加工中,做了两件事,第一件事是在什么?(教师在白板上贴纸演示,如图4所示)

1622427937904289.png

图4  教师在白板上贴纸演示

生:在d(2)-d(4)中找最小数的位置k。

师:第二件事情是什么?

生:交换d(2)和d(k)的值。

(教师在白板上贴纸演示,如图5所示)

1622427937699720.png

图5  教师在白板上贴纸演示

3. 第三轮排序

学生在第三轮排序演示结束后

师:接下来我们将第三轮排序进行归纳。在第三轮加工中,做了哪两件事?(教师在白板上贴纸演示,如图6所示)

1622427937935414.jpg

图6  教师在白板上贴纸演示

生:在d(3)-d(4)中找最小数的位置k。

师:第二件事是什么?

生:交换d(3)和d(k)的值。

(教师在白板上贴纸演示,如图7所示)

图7  教师在白板上贴纸演示

【课例分析】

发展学生计算思维:针对较复杂的任务,能运用形式化方法描述问题,并采用模块化设计解决问题的方案。[1]

由于选择排序算法较复杂,学生难以理解。在教学设计中,我将求最值问题和交换两个变量值的问题,放在第一课时中进行解决。因此在第二课时中,归纳出每一轮排序过程就是在完成“在d(i)-d(4)中找最小数的位置k”和“交换d(i)和d(k)的值”这两件事,将这两个问题进行了模块化的设计,以此帮助学生更好地理解选择排序的算法思想。

三、通过画流程图描述选择排序算法思想

【情境再现】

学生完成身高排序游戏之后

师:重复操作的语句,我们可以使用哪种更加简洁的算法结构来实现?

生:循环结构。

师:我把贴在白板上归纳出来的三轮加工的关键信息用表格进行提炼:i的值为1、2、3,分别表示了三轮加工;接下来每一轮加工过程中完成的两件事情是“在d(i)-d(4)中寻找最小数的位置”和“交换d(i)和d(k)的值”。问题:为了实现三轮加工,需要循环几次才能做到?

(教师在PPT上显示循环结构的空白流程图,将学生回答的语句写在流程图相应的空格中,如图8所示)

1622427938800990.png

图8  教师演示PPT

生:循环3次。

师:如何用现成的变量,做到3次循环?

生:用i变量。

师:怎么使用i变量实现3次循环?i变量初值如何设定?

生:i变量初值等于1。

师:条件怎样写?

生:i小于等于3。

师:在循环体中必须改变i变量的值,这条语句怎么写?

生:i=i+1。

师:这样就能做到3次循环实现3轮加工。每次循环中,做了两件事:第一件事是在某个范围中找最小数的位置赋值给变量k,第二件事是交换d(i)和d(k)的值。

(教师演示PPT ,如图9所示)

图9  教师演示PPT

师:刚才完成了部分流程图,现在PPT上显示的是相对完整的流程图,有赋值和输出语句。……请同学们将老师下发电子版学案上的流程图填写完整。

(电子版学案上的所需完成的流程图,如图10所示)

1622427938294893.png

图10  电子版学案

【课例分析】

发展学生计算思维:针对给定的任务,能够识别主要特征,并用流程图画出完成任务的关键过程。[2]

在学生理解选择排序算法思想之后,接下来的任务是实现将此算法思想转化为流程图表示。为了帮助学生完成这个任务,我提炼了排序中的关键信息放在表格中,由此学生就能识别出循环变量的初值与终值,继而完成循环条件和循环语句的设定,这样就可以搭建出流程图中循环结构的基本框架。接下来,通过引导学生理解流程图中两个模块,让学生将选择排序的算法流程图中剩余的部分填写完整。

四、通过编写程序实现选择排序算法思想

【情境再现】

学生完成流程图之后

师:在发给大家的VB文件中,老师已经把部分的代码写好了,包含自定义函数min()代码的编写。前一节课中我们已经学会如何在循环语句中调用min()函数。接下来请大家将代码编写完整,最后实现的效果是将所给的4个数进行升序排序。

(教师事先编写的VB代码,如图11所示)

1622427938646643.png

11  教师事先编写的VB代码

学生活动5分钟后

师:已经有部分同学完成了代码的编写。让我们先来看36号同学的代码。他使用了Do While语句来实现循环,但是他在运行后发现没法得到正确的结果。请同学们帮助他修正代码。(同学编写的错误代码,如图12所示)

1622427938961186.png

图12  同学编写的错误代码

学生一:不需要Print d(k)语句。

学生二:n<=4应该改成n<=3。

学生三:应该将n变量改为i变量,将n=1改为i=1,将n<=4改成i<=3,将n=n+1改成i=i+1。

师:请36号同学将代码做一下修改,再运行一下代码,看一下结果是否正确。

【课例分析】

发展学生计算思维:针对不同模块,设计合适的算法,利用编程语言实现各模块的功能;允许学生“犯错”,在“尝试→验证→修正”的“试错”过程中,发展学生的计算思维。[3]

学生能够用流程图描述出这个算法之后,就可以尝试使用VB程序设计语言将此算法进行实现。为了降低编写代码的难度,我事先将部分代码写在文件中,学生只需要完成选择排序最核心的代码,也就是用循环语句实现几轮加工,并在循环语句中调取min()函数和实现两个变量值的交换。但是实际在课堂中,还是存在部分同学代码出现错误,无法运行出正确结果。通过让其他同学帮助他找到错误的代码,并让他修正代码,最终该同学能够运行得到正确的结果。

五、算法教学中渗透计算思维的点滴感悟

在选择排序算法教学过程中,时时体现出对学生计算思维能力的培养。为了突破教学难点,我使用了模块化的设计思想,将每一轮排序过程中的“在d(i)-d(4)中寻找最小数”和“交换d(i)和d(k)的值”进行了模块化设计,使学生能较好地理解选择排序的算法思想。在用流程图描述算法的过程中,通过引导学生思考变量的变化规律,让学生较好完成流程图算法中的循环部分。在用程序语言实现算法的过程中,通过自定义函数的调用,让学生对模块化的程序设计有更加深刻的体会。课堂上,学生基本理解了选择排序的算法思想,并能用流程图描述算法,部分学生能够用VB程序语言实现算法。此外,从课后作业的反馈中,发现学生能够使用选择排序的方法对数据进行排序。课程结束,基本实现了本课的教学目标与任务。

本节课结束后,我对计算思维有了一点粗浅的感悟:计算思维本质上来说,是一系列思维活动,更多地是要靠学生自己的体验及感悟,教师只是起到引导的作用。因此,要给学生更多的“思考”空间。这也给作为教师的我们带来了更大的挑战:让学生在知识的学习过程中培养计算思维,在计算思维的发展中带来知识的迁移与创新,让学生的能力随着计算思维的提升而提高。

 

 



[1] 摘自《普通高中信息技术课程标准》(2017年版)P.69

[2] 摘自《普通高中信息技术课程标准》(2017年版)P.68

[3] 摘自《普通高中信息技术课程标准》(2017年版)P.48