基于逻辑思维能力的高中算法教学模式探索与实践
——以《冒泡排序算法》教学为例
2022-11-19陈莹吉林省四平市第一中学
陈莹 吉林省四平市第一中学
在普通高中信息技术学科的核心素养中,逻辑思维是其中的一个重要素养,如果学生的逻辑思维能力较强,则能较好地实现编程实践的目的。而大多数学生对编程存在好奇心理[1],所以,编程学习是学生逻辑思维提升的重要途径。
● 逻辑框架的要素及其含义
林玉慈提到的高中生逻辑思维素养的三维框架是本文的理论支撑[2],该框架结合了义务教育阶段与高中学习阶段对演绎推理与归纳推理的要求,更加适应本文的研究背景(如图1)。
笔者根据图1中对水平层次的划分,结合编程教学的特点,设计了如表1所示的教学流程:第一阶段,教师对学生需要学习的命题进行定义,完成演绎与推理。第二阶段,促进学生自主实现对算法的封装。本阶段在三个阶段中所消耗的时间最多。第三阶段,学生总结在实际操作过程中形成的经验,并基于封装好的算法结构解决,提出命题的类比命题。
表1
● 基于逻辑思维框架与能力驱动的编程教学模式实施
下面,笔者以《冒泡排序法》为例对上述教学方案进行详细阐述。
任务一:演绎阶段。
基于比较的方式设计的冒泡排序算法,依次将较大或较小的数据向一个方向递推地排序。
下页图2表示了算法执行第一次冒泡的流程,用箭头表示数据的交换。在冒泡算法的应用过程中需要实现n个数据的排序,要求程序执行n(n-1)/2次,这种算法的时间复杂度称为O(n^2),这种时间复杂度并没有较大程度降低排序的最高耗时,但这样的基本原理讲解能为学生后续进行自主创新打下基础。
之后以背景带入的方式将问题引入应用题中,如经典的车厢重组[3]问题:在一个旧式的火车站旁有一座桥,其桥面可以绕河中心的桥墩水平旋转。桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。车站的一个职工负责用这种方法将进站的车厢按车厢号从小到大排列。这个职工退休后,火车站决定将这一工作自动化,其中一项重要的工作是编程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。
该应用题的关键信息是考察冒泡排序的应用,但教学进入该阶段时学生仅仅实现了对冒泡算法的理解,并不具备设计与产出的能力。因此,在此环节主要教会学生如何独立实现算法的移植,将技巧进行教授。
任务二:算法的移植与封装阶段。
在编程的教学过程中,学生常常会遇到无从下手的问题,因此这一阶段的主要目的是培养学生自主学习与敢于动手操作的勇气。这一阶段要求学生将算法进行模块化的封装,其解决方案如3图所示。
在上述案例解决方案中,将最基本的冒泡算法进行了封装,该函数的输入仅有一个被排序的数组,通过这样的封装使得冒泡算法转换为易于移植的排序函数。学生在解决问题的过程中,在不考虑运算的时间复杂度情况下,只要程序的逻辑没有问题,便可以利用该函数解决部分问题,从而锻炼了动手能力。但是,这样的算法不能解决所有的冒泡排序问题,这就需要教学进入第三阶段。
任务三:创新输出阶段。
为了能够实现基于逻辑思维框架与能力驱动的编程教学目的,在第三阶段主要锻炼学生的类比能力与创新能力。一个排序算法的时间复杂度为O(n^2),这说明该算法并没有任何优化存在,故在这一阶段的教学中主要以降低时间复杂度为目标展开教学。冒泡排序中存在两种级别的优化方案:其一,每一趟的比较中减少一位数据的比较(如上页图4)。其二,在优化过程中结合贪心的算法,在每一趟的比较中减少一次数据的比较(如上页图5)。
经过上述两种优化处理,在最优情况下能够将时间复杂度降低至O(n)。上述两种基本引导方式,能促进学生的创新思维能力。
● 教学模式对比实验
笔者选择四个班级以实验课的方式进行对比教学实验,对上述理论进行验证,教学内容都选择冒泡排序法,四个班级分为两组,A1、A2两个班级运用传统教学模式完成教学,B1、B2两个班级运用基于逻辑思维能力的教学模式完成教学。在传统教学模式中,讲授课程后学生完成简单应用题(T1)、移植(T2)、拓展(T3)作业。基于逻辑思维能力的教学模式通过本文上述的三阶段进行。在两种教学模式中都存在教师讲述环节,故在初始讲述完成后学生独立完成题目的完成率为C1,在经过一段教学后学生完成率为C2。在使用传统教学模式和基于逻辑思维能力的教学模式两种方法下,四个班级学生的初始完成率C1和最终完成率C2统计如表2所示。
表2
在进行任务一的教学时,四个班的学生的接受能力差不多,同样可以看出,对于第一次学习排序算法的学生而言该算法的难度较大。由于任务一主要是对概念进行讲解,且应用题的题面容易理解,因此学生在学习后完成率相差不大。在进入任务二的学习中时,题目的难度有所提升,经过实际观察发现,逻辑思维有所提高的学生大多能独立完成相关解题。当进入任务三时,由于题目难度较大,可以发现,经过基于逻辑思维能力教学模式培训的学生完成度明显更高。
● 结束语
通过上述分析可以看出,经过基于逻辑思维能力的教学模式培训的学生,其逻辑思维相较于传统教学模式培训的学生有明显提高,实际观察发现,学生的实际操作能力、解题的速度也均有提高。因此,编程学中应注重培养学生的逻辑思维能力,引导他们积极参与思考探究,以实现学生能力与教学质量的双丰收。