项鑫
温州市洞头区技工学校
摘要:VB程序设计是中职计算机专业学生学习程序语言的一门必修课程,枯燥乏味且逻辑性强,而算法更是程序设计学习中的难点,本文介绍了学生在学习算法过程中遇到的困难;结合教学实际,分析困难产生的原因;提出了使用图解法解决问题的策略,并结合VisuAlgo网站的辅助资源,把促进程序算法的教学效果作为本文的研究重点。
关键词:VB程序设计;算法;图解法;VisuAlgo网站;教学效果
一、现状分析
1.教学内容枯燥难学
程序设计对于学生来说是一门全新的课程,不同于其它的专业课程,只需要掌握软件的功能,会使用工具完成特定效果。程序设计不但需要学习Microsoft Visual Basic 6.0 编程软件的使用,更重要的是学习编程思维和方法,为了让编程软件理解人的意图,编程者需将解决问题的思路、方法和手段通过代码的形式告诉编程软件,使它根据人的指令去完成某种特定的功能。对于VB程序设计中的抽象概念,在学生看来,和平时的理解是完全不同的,如:对象,属性,事件等,更别提让人“难以捉摸”的程序算法。就比如经典的冒泡排序算法,它的核心代码如图1所示,学生要从这些字符中,分析每句代码的意义、If语句的判断内容、For循环的作用,这种枯燥的代码,以及其中的逻辑思维,让我们的学生不由的产生畏难情绪,从而失去学习的信心。
2.学生基础“先天不足”
职高学生的生源质量差,是中职学校普遍存在的问题,更何况是海岛职校,大多数学生都存在着数学基础薄弱,英语能力差等问题。而程序设计的核心是算法和数据结构,在学习算法的过程中,需要较强的逻辑思维能力,还要掌握一定量的英语词汇,这就直接击中了我们学生的“要害”。如果在教学过程中,教师还是使用高等院校或普通高中的简单教学形式,必然会造成教学效果差,课堂效率低等问题,最终使学生在学习程序算法时,畏难而逃退。
3.学习习惯“后天不良”
在平常的教学中,很容易就会发现,很多学生都是被动地学习,遇到问题不会主动思考,课堂上如果没有老师的监督,他们不会自觉的做任务,甚至有些学生还会讲话、睡觉、玩游戏等。课后也不会认真去完成作业,更多的是敷衍的态度。学生不良的学习习惯,也使得原本就复杂的算法教学更加举步维艰。
二、策略研究
以往的教学过程中,往往忽视算法核心思想的分析,学生的学习只留在程序的代码端,甚至有部分学生直接对代码进行记忆,学习效果并不理想。利用图解法,把枯燥难学的算法代码转变成图形的方式,使原本静态的算法变成动态过程式的图例演示,然后,更多地由学生自己来发现问题、分析问题、解决问题,让学生在观图、填图、画图的过程中理解算法的核心思想,找到学习的前进方向。在具体的教学实践中,是如何进行图解的,笔者进行了有益的探索。
1.观看动图—感知算法
VisuAlgo是一款可视化学习算法的网站,里面包含了许多经典的算法,用于帮助学生更好地学习算法,学生可以按自己的步骤来学习。VisuAlgo不仅支持暂停、单步、回退等功能,演示算法的时候,还可查看算法的执行过程。
在VisuAlgo平台,首先要选择学习的算法,然后构建自己想要的数据元素,最后点击开始,网站就会自动演示算法的动态过程,在动图演示中,还会出现算法的解释过程,配合学生理解。通过观看算法的动态演示过程,学生能很快的感知算法的思路,理解它的运行机制。就比如冒泡排序,一看动图演示过程,就能知道,它的算法思路就是:从头到尾,依次比较两个相邻的元素,如果顺序(如从小到大)错误就相互交换,直到最大(小)的数沉底,再多次循环到数列有序。
这能充分发挥学生的学习主动性、积极性,使学生成为学习的主动者,达到良好的教学效果。
2.画图填表—理解算法
(1)画图表
通过观看动图后,学生对算法有了初步的概念,但是,他们不能只根据动图演示,就写出算法的代码,需要循序渐进的过程,而画图填表就可以起到承上启下的作用。学生自己动手画图,将每一次排序的过程都画出来,这样,就能实际的感受到算法的核心思想,以及数据的变化过程。完成数据图的绘制之后,再归纳总结每一次排序后,数组的各位置元素,以及在本次排序中,发生两两比较的次数。
(2)推代码
完成图表的绘制后,接下来就是如何由图表推敲算法的代码。因为有图表的存在,学生就能比较容易的推敲各个变量的作用,用变量i代表排序的次数,用变量j代表每次排序比较的次数(j=元素个数-i),在每次比较的过程中,判断数据是否有序,如无序,实现数据的两两交换。由图表到代码的推演,让学生真正的理解算法,而不是死记硬背。只要理解算法的核心思想,即使忘记了代码的编写,也可以通过画图表,推敲出代码。
3.归纳推理—掌握算法
上述讲到的都是特殊的案例呈现,算法的编写,不可能只针对某一特定的数据元素,这里就需要将算法做出归纳,从特殊到一般,真正让学生掌握算法。
在通过数据图表到代码的推演,实际上学生已经理解算法的核心,从特殊到一般的归纳过程,就显得轻松很多,而且学生也可以在此基础上,对算法做出变化,比如更改符号实现从大到小的排序,真正的掌握算法。
三、效果思考
围绕“图解算法”这一实践思路,通过观动图感知算法、画图表理解算法、归纳推理掌握算法三个环节,经过笔者一个学期的教学实践与研究,我们的算法教学和课堂发生了变化:内容变得简单了,学生变得积极了,课堂变得有效了。
内容变得简单了。以前学习算法时,大部分的老师或同学仍旧采取敲代码学算法的方式。这种方式的课堂,对于中职学生来说,是困难且煎熬的。枯燥的代码,静态的文本,毫无学习乐趣。经过图解法分析的算法,化难为易,使算法变成动态演示的过程,让学生在画图填表的过程中学习算法的核心思想。
学生变得积极了。利用图解法学习算法,学生不用直面代码的“尴尬”,激发了学习积极性。以前的课堂只有老师一人会讲,现在的课堂大家都能说一说,学生学习时有了更多自己的思考,真正体现了学生的主体地位。
课堂变得有效了。通过对比,可以发现,原先在学习选择排序时,没有使用图解法,仅仅通过讲解代码学习算法,学生普遍都是一头雾水,更不能说出它的核心思想,做的比较好的同学,也只是通过死记硬背学习,无法灵活运用。而使用图解法学习冒泡排序时,绝大多数同学能掌握它的核心思想,会说出算法的运行思路,画图填表更是他们的“拿手好戏”,算法编程的思路也比之前要清晰明了,有效促进了课堂的教学效果。
参考文献
[1]郭煜丹.关于中职程序设计语言教学的思考[J].电脑与电信,2018(09):67-69.
[2]陈雪梅.走出中职VB程序设计教学困境方法摭谈[J].福建电脑术,2013,(06)
[3]邵梅,马彦.使中医药高职VB程序设计教学中遇到的问题及教学对策[N].辽宁中医药大学学报.2008(07)
[4]向光培.中职VB课堂激发学生学习主动性的教学策略研究[J].职教创新,2016,(29):79-80.