龙源期刊网 http://www.qikan.com.cn
三维可视化算法教学在程序设计课程中的应用研究
作者:王梅亮
来源:《电脑知识与技术》2014年第14期
摘要:算法是利用计算机解决问题的方法,是程序设计的灵魂和重要基础。但算法的抽象性使其一直为高校程序设计基础课程教学中的难点。利用三维动画技术和情景教学方法,将算法进行三维可视化,以三维动画的形式将算法思想和执行过程演示出来,可以帮助学生更好地理解和掌握算法,提高学生学习的积极性和学习效果。 关键词:三维可视化;算法教学;程序设计基础;三维动画
中图分类号:TP399 文献标识码:A 文章编号:1009-3044(2014)14-3355-03
Abstract: Algorithm is the method of using a computer to solve the problem and the soul of the program design and the important basis. But the abstractness of the algorithm makes it the difficulty of the program design foundation course teaching in colleges and universities. Using the three dimensional animation technology and situational teaching method, the algorithm for 3 d visualization will be in the form of the three dimensional animation algorithm thought and the implementation process, demonstration.They can help students better understand and grasp algorithm and improve the students' learning motivation and learning effect.
Key words: 3D visualization; algorithm teaching; Program design basis; three-dimensional animation 1 概述
程序设计基础是我国高校非计算机专业计算机基础教学体系中的重要组成课程之一。在教学实践中,这门课知识量大,理解层次深、实践性强 ,存在一定的教学难度[1],尤其是对于非计算机专业的学生,对算法的理解普遍感觉特别困难。而算法是计算机程序设计的灵魂,是人们利用计算机解决问题的方法。所以没有掌握算法,就设计不出真正能解决问题的程序;没有使用好的算法,也就不可能设计出好的程序。但是算法向来是计算机教学中的难点,这主要是由于算法描述的计算过程是抽象、动态的,一般算法教学方法很难解释这种过程。[2]特别是对于初次学习计算机程序设计的高校非计算机专业学生,利用传统的教学方法很难真正地理解算法思想,这直接影响学生对程序设计课程的学习兴趣和学习效果。
如果将算法过程通过三维可视化手段进行仿真 ,也就是用三维动画的形式形象地表现出来,帮助学生建立思维轨迹,加深理解和记忆[3],这将会在很大程度上提高学习效率。我们可以利用如3dmax或Maya等三维动画设计软件,将算法抽象的思想和原理用三维虚拟物体在
龙源期刊网 http://www.qikan.com.cn
有趣的场景中的运动逼真地模拟出来,直观和生动地将算法解决问题的方法和过程展现给学生,并配以文字和声音解说,就可以变抽象为具体,化枯燥乏味为生动形象,刺激学生的视觉和听觉,从而大大提高学生学习算法的效率和积极性,提高学生的学习程序设计的兴趣。 2 国内外三维可视化算法教学的研究现状
自1981年RonaldM.BaeCker在多伦多大学开发的第一个可视化的排序算法教学动画短片“Sorting OutSorting(SOS)”后,一系列的算法动画系统被连续的开发出来,有关算法动画和其在教学中的应用的研究在世界各地也逐步开展起来[4]。算法动画能有效的表达算法思想,有助于学生对算法的理解,在国内外的高校算法教学中取得了很好的效果。但是目前在国内的程序设计教学实践中使用的算法动画资源还十分缺乏,即使有个别老师偶尔采用动画来演示算法,其所用的动画也是普遍采用以FLASH制作的简单二维平面动画,其效果虽然比文字生动,但也还不能将动画的真正优势发挥出来。所以目前迫切需要设计和开发更加生动、形象和有趣的三维动画来演示算法。利用三维可视化资源进行算法教学,必将为“程序设计基础”课程的教学方式、方法改革带来巨大的促进作用。 3 三维可视化算法教学的意义
“一图胜千言”。如果能够将动画技术应用于我们程序设计的算法教学过程中,以动画的形式来表现各种算法思想,即算法动画,可以让学生在课堂上形象、直观地理解各种算法的思想和执行过程,而且学生在课后还可利用网络课程等根据这些可视化资源来学习和探索新的算法[5]。本研究以“程序设计基础(VB)”课程为例,以三维动画的方式开发出课程中常用的算法动画,并应用于教学实践中,其具有以下这几个方面的意义:
1) 为解决高校中非计算机专业学生学习程序设计基础教学过程中存在算法难教难学问题提供一种解决方案。
2) 有利于培养学生的学习兴趣和逻辑思维能力。算法动画能有效的表达算法思想,有助于学生对算法的理解,增强学生对算法的认识和兴趣, 有助于算法概念在学生长期记忆中的存储;其利用图标或其他可视化的方式,形象化的演示算法的执行过程,可以降低学生了解算法的难度;而且还可以有效的吸引学生的注意力;另外还可以培养学生的算法思维和逻辑思维能力, 促进学生的创新思维能力发展。
3) 为“程序设计基础”课堂教学观念的转变和教学方式、方法的改革提供了必要的条件。这种可视化的教学方法能生动形象的将原本枯燥抽象的算法内容展现给初学者 ,有助于学生对算法的认识,减少他们的畏难心理,提高教学效果。
4) 有利于丰富网络课程的资源,提高网络课程的质量,便于学生课后利用网络课程的资源来学习和探索算法的执行过程。
4 三维可视化算法教学资源的建设和教学实施
龙源期刊网 http://www.qikan.com.cn
本文主要在对国内外算法动画技术发展及其在可视化教学中的应用研究进行分析总结的基础上,根据程序设计基础课程(以VB程序设计为例)特点,结合认知科学、心理学和教育技术相关理论,利用三维动画技术,将“程序设计基础(VB)”课程中常用的算法以生动、形象的三维动画的形式展示出来,并且根据各算法的具体特点,设计出卡通人物、动物和其它的场景物体,并让这些角色在虚拟的场景中,模拟现实生活中或计算机环境下解决问题的具体方法,直观和形象地展示出整个算法的执行过程。然后将这些三维可视化的算法教学资源以恰当的方式应用于教学实践。具体研究的过程: 1) 三维可视化算法教学资源的建设。
在熟练掌握程序设计中常用的算法思想和执行过程的基础上,利用三维动画设计软件Maya开发和设计出逼真、形象的三维场景模型,并根据具体的算法设计出生动的动画,以表达该算法的思想和的执行过程,最后利用Premiere等后期处理软件对动画添加字幕等文字说明,并输出三维算法动画视频作品。比如VB程序设计中常用的“累加”算法(以
sum=1+2+3+4+…+10为例):采用的是用一个For…next 循环结构对用于存放累加结果的变量sum以sum+a重复执行10次运算,每次进行上述加运算后还要对用于存放每次累加值的变量 a加1,具体的程序代码如下: For i= 1 to 10 Sum=sum+a a=a+1 next i
为此,本人以一只鸟来回运送鲜花到一个大箱子来模拟上述的算法过程。这里鸟的来回飞翔代表一次次的循环,每次所叼的鲜花数就相当于上述用于累加的值即a 的值,而最终用于存放鲜花的大箱子(制作成透明,以便学生观察其中的鲜花数)则模拟用于存放累加结果的变量sum,通过观察鸟每次飞过来将所叼的鲜花放在这个箱子里的鲜花数就可以让学生非常清楚的了解累加的过程。动画部分截图如图1所示:
另外如“冒泡法排序”算法,是利用在水中设计一组用于模拟不同大小数值的大小气泡的冒泡过程的动画来演示:第一趟将每相邻两个气泡比较,小的移到上面(上浮一个位置),经n-1次两两相邻比较后,最大的气泡(代表最大的数)已“沉底”,小的气泡(代表小的数)上升“浮起”;第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的气泡(次大的数)排在最大的气泡上面;依次类推,最后得到按气泡从大到小依次从下往上整齐排列的动画来模拟“冒泡法排序”算法的排序过程。
其它如“选择法排序”、“折半查找法”法等也都通过设计一个卡通角色的排序和查找等的动画来模拟和演示相应的算法思想和过程,这里就不详细论述。