思维可视化工具:让学生的算法思维过程可见
2021-12-29商永明
一、思维可视化工具的分类
2017年8月,笔者参加了“如何运用思维可视化技术提升中小学自主学习能力”的专题学习,了解了思维可视化技术在中小学教学应用领域的分类、特点等。笔者根据所学理论,结合自身教学实践,总结出三种思维可视化方式,分别简称为图形法、图表法和动画法。
图形法指利用简单的图形符号、字符标识、箭头指向等表示算法执行的步骤、过程和方法的思路,并最终获得解题结果的方法,它是分析算法与程序问题的常用方法。图表法指利用表格示意的方式清晰地将算法过程和规律推算出来,可以将繁杂的程序过程、庞大的数据运算程式化、清晰化,并帮助操作者获得正确的结论。动画法指采用动态图形与图像的处理技术,借助相应的动画制作软件生成一系列的景物画面,并将复杂、快速、动态的算法运行过程,转化成直观的、形象的、清晰可见的模拟画面或情境,从而解决算法与程序问题。
二、思维可视化工具在算法教学中应用的有效途径
算法与程序设计课程教学的最终目的是培养具有信息素养的公民,使其能解决日常生活中的实际问题。下面,笔者谈谈应用思维可视化工具巧解算法问题的有效途径。
(一)用图形法进行算法推理
在解析排序问题时,笔者引导学生充分利用草稿纸,记录解题过程,标识代码中的变量表示含义,并联系前后文进行推理解题(切忌凭空想象),一步一个脚印推理得出算法规律和结论。例如,在解排序题时,如果学生只凭想象,很容易遗忘步骤,导致解题错误。
例1:表1列出了存放在数组d中的8名学生身高(单位:厘米)的数据,若采用冒泡排序法进行升序排列,并自右向左进行比较和交换,那么两轮排序后数据交换总次数为( )。
A.11 B.10 C.9 D.8
【解析】本题是典型的冒泡排序算法问题,题目落脚点为求“两轮排序后数据交换总次数”。因此,用图形法思维导图进行推算,对产生交换位置通过符号进行标注,两轮推算完成后可以通过标记符号的总数得到最终的结果(如图1),这样解题正确率可大大提高。本题答案为A。
例2:使用对分查找算法对22个有序数组成的序列进行查找,查找失败时关键字比较次数至少需要( )。
A.3次 B.4次 C.5次 D.6次
【解析】此题意在考查对分查找算法思想。关键问题是查找失败时关键字比较次数至少需要多少次。若使用公式int(log)+1解题就会出错,误选为C。利用图形法思维导图分析中间数的变化,将推算过程利用图示法一一记录下来(如图2),容易得出正确答案为B,因为通过公式计算只能算出最多失败比较次数,而此题必须将解题过程描述出来,可以得出向前查找与向后查找结果不一样,这样才能得到正确答案。
(二)用图表法进行算法推理
表格可以整洁而又清晰地采集、汇总相关数据。在解析循环结构程序时,教师应培养学生利用图表的技能与习惯,联系程序的前后文一步一个脚印地推理,从而通过图表推算出算法的发展规律与结论,理清算法与程序问题。
例3:某算法的流程图如图3所示,依次输入值3,2,1,-1后,该算法的输出结果为( )。
A.3 B.4 C.5 D.6
【解析】此题主要考查循环程序及变量的赋值变化过程。根据题意“依次输入值3,2,1,-1”后,条件不成立时执行循环体,条件成立时退出循序,输出的值,结束程序。变量、、的值过程变化情况通过图表的方式进行列举(见表2),得出正确结果为A。
例4:小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序。程序功能如下。在列表框list1中显示排序前数据(存储在数组a中),在文本框text1中输入初始位置(即下标值),单击“排序”按钮command1后,在标签label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框list2中。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Dim a(1 To 8) As Integer
Dim As Integer
Private Sub Form_Load()
a(1) = 30: a(2) = 47: a(3) = 30: a(4) = 72
a(5) = 70: a(6) = 23: a(7) = 99: a(8) = 24
= 8
For = 1 To 8
List1.AddItem str(a())
Next
End Sub
Private Sub Command1_Click()
Dim As Integer, As Integer, As Integer
Dim pos As Integer
Dim As String
= Text1.Text
pos = Val(Text1.Text)
For = 1 To - 1
For = To i + 1 Step -1
If a( ) < a( - 1) Then
k=a( )
a( - 1) = a( )
a( ) = k
‘如果pos位置的数据参与交换,则更新pos值,记录pos变化位置
If pos = Then
pos = - 1
= + "→" + Str(pos)
Else
pos =
= + "→" + Str(pos)
End If
End If
Next
Next
Label1.Caption = "位置变化情况:" +
For = 1 To
List2.AddItem Str(a())
Next
End Sub
【解析】此题考查冒泡排序,其算法核心结论是:个数排序就是寻找-1个最值的过程,寻找最值的过程是从最后一个位置开始,逐个往前,相邻的两个数依次比较,让最值自动冒上来。比较规则就是,如果后面的数小就交换两者的值。总结口诀就是:排序-1趟,每趟从后往前比,相邻两个比,前大后小就交换。第一趟排序原理的过程如图4所示。
至此,第一趟排序结束。从图4可见,最小值23已经位于第一个位置了,同时经过第一趟排序,pos的值被更新为6。其他排序趟,可对照进行。程序错误第二处,因为else是除pos= 的所有情况都包括进来,每次变化(即每次比较)都重新将pos赋值为,显然违背题意。故应该改进elseif pos= -1 then
应用图表法并结合任务驱动教学法,可以将繁杂的程序过程和庞大的数据运算程式化、清晰化,让学生由被动地接受知识转变为主动地寻求知识,由原来“要我学”转变为“我要学”,改变学生传统的学习观,使其在完成“任务”的过程中不断地获得成就感,从而增强学习的自信心,激发学习算法与程序设计的热情和兴趣。
(三)用动画法进行算法推理
动画法应用于信息技术的教学具有独特的优势,因为信息技术教师具备信息处理的先决条件和技术优势。笔者在分析复杂的、抽象的算法问题时就是采用此途径加以解决。
例5:在进行冒泡排序新课教学中,有5个数组元素:序号1,数据9;序号2,数据28;序号3,数据6;序号4,数据17;序号5,数据12。通过冒泡排序的完整过程,得出排序后的正确结果。
【解析】此题考查学生对冒泡排序的理解能力。通过给定的5个数据,根据冒泡排序的算法规则,从第5个数开始,依次与第4个数进行比较,若比前面的数小,则交换顺序,依次类推。整个过程笔者利用PowerPoint 2010的自定义动画功能,完成冒泡排序的模拟过程。
算法与程序设计中的很多算法思想,原理是类似的。教师可用动画法思维可视化方式进行算法推理,分析总结,方便学生理解和比较,提高学生的学习效率。
例6:冒泡排序的程序实现问题,代码为:
for =1 to -1 ‘记录加工的遍数,由1变到-1
for = to +1 step -1 ‘记录一遍加工中数组下标由变到+1
if a( )<a( -1) then ‘如果a( )比a( -1)小,d( )与d( -1)互换
t=a( ): a( )=a( -1): a( -1)=t
endif
next
next
教学过程中笔者首先要求学生掌握这种冒泡算法过程,让学生明确冒泡的过程和特点。在考查过程中可能出现其他冒泡形式。例如:
For = To 2 Step -1
For = 1 To - 1
If a( ) > a( + 1) Then
= a( ):a( ) = a( + 1):a( + 1) =
End If
Next
Next
这就是从上往下冒泡的过程。学生在掌握基本冒泡后可以对比分析算法的区别,加深印象,并在这个基础上再引出冒泡两两比较结束后,如不发生交换,则表示排序完成的算法。
=1
Flag=true ‘表示有互换
Do while < = - 1 and flag
flag=false
for = to + 1 step -1
if a( ) < a( -1) then
k=a( ):a( ) = a( -1):a( -1) =
flag =true ‘表示有互换
end if
next
=+1
loop
通过flag标记是否发生交换,如没有交换则退出循环,在学生理解冒泡的基本原理后增大难度,这样易于总结、理解。
此外,两两比较不一定是两个连续数值比较,也可以是不连续的数值比较。代码如下:
For = 1 To - 1
For = + 1 To
If h()> h( ) Then
t = h():h() = h( ):h( ) = t
End If
Next
Next
每趟中数值比较过程都是与当前要排序的位置上的数值比较,通过比较也可以实现一趟比较后将所有数值比较一次,得到排序结果。这种排序与基本的冒泡有很大不同,如果学生单独碰到类似的题目可能会混淆概念。笔者将它归类整理,并用动画法加以验证,以加深学生的印象,提高学生的理解能力。
三、教学反思
思维可视化是目前中小学教学中广泛应用的一种有效的信息与知识整理工具,一种激发思维增长的可视化工具。思维可视化的价值体现植根于人的思考力、思想、文化内涵和创造力,同时也反作用力于思维素养的提升。教师可以将多种类型的思维可视化方式综合应用于信息技术教学,但绝不能滥用,要处理好以下问题。
其一,思维可视化只是一个工具,它不一定适合所有人。其应用效能高低取决于使用者的思维深广度、悟性、坚持实践的态度和最终的习惯养成。如果还没有使用过,请不要无视它;当获得一些经验和收获时,也不要过分拔高它。
其二,学习思维可视化技术必须遵循科学规律。学习过程为:明晰原理—掌握绘制方法(发散性思维)—掌握绘制技巧(关键词提炼、布局、修饰)—体现个人特色—扩大各个领域应用—体现思考过程—全局化过程。
其三,思维可视化的应用精髓在于提升使用者思维能力。科学应用思维可视化工具可以让使用者思路更清晰、阅读更方便、知识体系更结构化、重点更突出,并结合颜色、文字修饰、图片、标记等元素凸显关键点和视觉效果,充分发挥信息的大聚合功能优势,促进信息和知识的有效记忆与理解。
(作者系浙江省杭州市富阳区教育发展研究中心高级教师)
责任编辑:祝元志