胡承丰
摘要:针对浙教版必修1《数据与计算》“算法的程序实现”模块的教学,很多教师花了大量时间让学生理解数据关系与逻辑推理,但多数学生仍然难以理解,更无法使用程序语言实现算法。此问题表象原因是学生无法建立算法的动态数据处理過程与静态程序代码之间的联系,深层原因是缺乏从形象思维到逻辑思维之间的跨越桥梁。因此,作者结合所在学校学生的实际情况,创设特定的数字化学习环境,融入实物演示法、动画演示法、列表演示法、流程图演示法等方法,将抽象思维形象化、直观化,体现形象思维显性化的特点,帮助学生开启算法学习之门,习得算法与程序奥秘。
关键词:算法;形象思维;计算思维
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2021)14-0040-03
● 形象思维的引入
形象思维能够把抽象的、难懂的概念或问题转变为直观的、形象的描述,使这些概念或问题更符合人们对客观事物的认知规律,变得通俗易懂。钱学森认为,“科学工作源于形象思维,终于逻辑思维。形象思维源于艺术,所以科学工作是先艺术,后才是科学”。从教学规律来看,学生的思维发展过程是从具体形象思维到抽象逻辑思维。高中生具备了一定的抽象逻辑思维能力,但计算机算法的独特性要求学生先要构造符合问题情境的数据模型,才能通过逻辑分析解决实际问题。逻辑思维能力强的学生能快速分析并找到解决问题的算法,而对逻辑思维能力不强的学生,教师则需要将抽象的问题直观化、形象化,通过搭建思维转换的脚手架,回归抽象,帮助学生更轻松地理解问题的实质和内涵,从而提升学生的计算思维。
基于这种思维现象以及教学内容特点,笔者创设了问题提出、算法描述、算法设计、代码实现及问题迁移的“算法五步教学法”的课堂教学模式(如图1),尝试将实物演示法、动画演示法、列表演示法、流程图演示法引入算法描述教学环节中,形象地展示算法在解决问题过程中的具体步骤,通过形象思维启发抽象思维,降低思维难度,帮助学生更轻松地理解、掌握教学内容,激发学生学习程序与算法的兴趣,促进学生计算思维的进一步发展及信息素养的提升。
● 形象思维的教学实践
下面,笔者以冒泡排序算法为例,谈谈如何在“算法五步教学法”模式中的“算法描述”环节展开形象思维应用。
算法概念:冒泡排序是一种简单的排序算法。它从后往前(或从前往后)遍历要排序的数列,依次比较相邻两个元素,如果它们的顺序颠倒就把它们交换过来。遍历数列的工作重复进行,直到没有再需要交换的,说明该数列已经完成排序。
算法描述:①从后往前依次比较相邻的元素,如果前数比后数大就交换;②从最后一对到开头的第一对,对每一对相邻元素做同样的工作,这样在第1位的元素是最小的数;③重复步骤①和②,直到排序完成。
1.实物演示法
实物演示法是指教师采用有关实物、教具或游戏将教学内容生动形象地展示出来,学生通过观察、思考获得知识的一种教学方法,这样的演示方法更贴近学生的生活实际。在冒泡排序的教学过程中,笔者设计了“交换号牌”游戏来模拟排序过程,由10位学生每人随机拿一张号码牌排成一队,游戏规则是每人只可以和相邻的两位同学进行号码牌的比较和交换,要求用最快的速度完成号牌从小到大的排序。游戏的引入极大地提升了学生的学习热情,生动地展示了冒泡排序的算法思想,缩短了学生掌握算法的认识过程,促进了学生思维的发展,取得了良好的教学效果,游戏演示如图2所示。
2.动画演示法
动画演示法是利用动态图像来呈现算法执行的过程,以及执行过程中数据在时间和空间上的变化关系,在此基础上进行分析思考,寻求解决问题的方法。动画可以将抽象的算法形象化、直观化,将数量关系具体化,将复杂的抽象思维转化为形象思维,帮助学生理解算法的本质与内涵。笔者在讲授冒泡排序算法时,通过动画演示,不仅能够将排序中的“趟数”“相邻”等关键概念清楚地呈现出来,而且能使“比较”“移动”的过程一目了然。学生有了非常形象直观的感受,理解起来要容易得多,而且可以通过重复观看,加深算法理解。冒泡排序的动画演示如图3所示。
3.列表演示法
列表演示法可以把被感知的问题从背景中分离出来,使数据的呈现更直观、数据间的关系更清楚,学生更容易分析得出问题的一般规律。当数据量较大时,如果能够将数据用列表的方式表示出来,学生就可以通过观察和比较,总结出算法思想。
计算机解决问题的方式与人类熟悉的思维习惯是有差异的,程序中变量的变化与算法流程之间的对应关系是学生理解算法的难点。在教学实践中,笔者采用列表法作为突破难点的方式,通过列表直观呈现数据与变量的变化关系,直观显示问题的解决过程,帮助学生由表及里逐步深入理解冒泡算法的思想。列表演示法描述冒泡排序算法如下页表所示(以5个数升序为例)。
4.流程图演示法
在教学过程中,笔者发现有不少软件能将流程图动态呈现和展示。Raptor软件就是一个基于流程图的可视化程序设计环境,它专门用于帮助学生可视化他们的算法,并避免语法上的包袱。Raptor程序是可视化创建,并通过跟踪流程图中的执行情况来可视化地执行,所需的语法保持在最低限度。它将抽象的算法变得直观形象,将复杂的逻辑思维降阶为学生更擅长、更容易理解的形象思维,让学生更喜欢使用流程图来表达他们的算法,并且,使用Raptor比使用传统语言更容易成功地创建算法。使用Raptor为程序和算法的初学者铺就了一条平缓、自然的学习阶梯。
使用Raptor绘制流程图克服了传统流程图无法直观体验算法运行实现效果的缺陷,将程序结构算法动态、直观、真实地展现在了学生面前,帮助学生绕过思维的屏障,使他们能边看边思考,真正地理解程序的控制结构和算法思想,更轻松地学习程序设计。在具体教学过程中,笔者通过Raptor帮助学生理解冒泡排序算法。图4为冒泡排序流程图部分截图。
● 结束语
实物演示法、动画演示法、列表演示法、流程图演示法四种方法在算法描述上存在功能递进关系,不断将形象思维向算法思维靠拢,使得解决方案变得条理化,算法的模型不断清晰,教学中可以根据算法的特点选择使用。
将抽象思维转化为学生更易接受的形象思维,遵循了思维发展的过程,能够帮助学生更轻松、更准确地理解程序和算法中的概念、规则以及数量属性变化关系,从而提高学生的抽象思维能力,发展学生的程序思维,促进学生信息素养的提升,让学生在算法与程序的知识海洋里尽情徜徉。
参考文献:
[1]卢汉辉,杨琼洲.浅谈列表法在高中数学教学中的应用[J].中学数学研究,2016(03):8-10.
[2]涂元季.钱学森书信:第2卷[M].北京:国防工业出版社,2007.