伪代码在课程讲授与上机操作中的作用
2018-07-25陈芳
摘要:本文介绍了伪代码的教学方式在数值分析课程实验教学中的重要性。一方面从教学角度分析了数值分析课程中算法设计的重要性,另一方面从实验教学中分析了伪代码在实现这些算法中的方便性。通过加入伪代码的教学,使得学生更加理解算法的设计,并使得学生更容易把算法编程程序实现。本文针对本校学生在Matlab为零基础的实际情况下,论证了伪代码在运用软件Matlab实现数值分析中算法的必要性。
关键词:数值分析;伪代码;Matlab
中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2018)26-0268-02
一、数值分析中算法的重要性
数值分析课程的内容主要包含线性插值、数值积分、方程求根和解线性方程组的直接法和迭代法。这些都是处理数学模型和离散数据的有力工具,也是处理利息理论中未知利率的有力手段。因此数值分析是信息与计算科学专业的必修课程,也是很多高校中工科专业的选修课。
在大学的第一年中,学生已经学习过线性代数、高等数学等基础知识,这都为学习数值分析这门课程打下了坚实的基础。中学阶段的数学学习方式和大一基础数学课学习方式一样。学生学习数学主要靠一张纸和一支笔,通过题海战术来得到关于定理的理解和应用。这样使得很多学生对于深入学习数学没有太大兴趣,觉得比较枯燥。更多的学生愿意通过自己多动手和多操练来增加自己的实践能力。数值分析课程中就有很多算法的讲解。这使得学生对于倾向于学些数值分析这门课程。作者当年在学习数值分析这类课程的时候,是在2000年左右,当时的计算机本身就不算多,算法的实现不够成熟。2000年左右的计算机是新生事物,是刚冒出嫩芽的阶段,所以不可能让学生在电脑上实现。但是基于计算机的普及以及高校学习环境的改善,算法的实现就变得简单多了。从软件方面来讲,软件Matlab早由美国Mathworks公司发布,它将数值分析、矩阵计算、可视化等诸多功能集成在环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案。
二、算法的设计
基于现实的情况,我们在数值分析这门课程中就需要加入上机实践环节,让学生通过上机来完成这些算法。尽管要编程实现这些算法就需要付出很多努力。但是如有对算法有了好的理解,对编程的算法的流程一目了然,在这基础上实现起来就容易的多。以前对于算法的优点只是从理论分析入手,现在结合算法真正实现,可以更加清楚地看到算法的优点、精度等。目前针对算法的讲解主要有三种方式——自然语言、框图法、伪语言。一般来讲,自然语言描述算法的方法让学生从表述的方式更加容易接受,因此相对比较容易掌握,可是这种方式也存在很大的缺陷。比如,当算法中包含多个分支或循环操作时文字语言就很难表述清楚。另一方面,使用自然语言描述算法也容易对一些问题造成歧义。例如,“武松打死老虎”既可以理解为“武松/打死/老虎”,又可以理解为“武松/打/死老虎”。在自然语言中的表述中,语气和停顿对相同的一句话产生不同的理解。特别是对较复杂的问题,用自然语言难以表达准确。综上,无论是通过自然语言还是框图法来描述算法,它们仅仅可以表述算法设计的理解和一种思路,但是都无法直接被计算机接受并进行直接识别和执行。
三、伪代码嵌入的时机
伪代码是一种算法描述语言。我们使用伪代码的目的在于使学生更好地理解和实现算法。所以伪代码在被用来描述算法的时候,必须以一种很容易地让任何一种编程语言都可以实现的方式。所以一方面伪代码需要表述清楚,让人容易理解。另一方面从计算机语言的角度讲,必须结构清晰、代码简单、可读性好。所以伪代码有点类似自然语言,又有点类似编程语言。这样伪代码就需要将整个算法运行过程的结构或者流程用接近自然语言的形式描述出来并且容易编程计算机语言。这种形式可以使用大家熟悉的文字,但关键是可以把程序中的意思表达清楚。这样伪代码可以帮助写出程序流程,也让算法的实现变得更加方便,还可使得不同的编程人员方便的交流。比如:
If 8点以前 then
do 读英语;
if 8点到20点 then
学习+吃饭;
else
回家睡觉;
end if
从上面的结构中我们可以看出,这种形式一方面节约了时间,另一方面使结构比较清晰,表达方式更加直观。在接触了伪代码的方便之处后,我们有必要把伪代码在教学过程中介绍出来。在数值分析的教材中,针对算法设计的描述,自然语言和框图法的使用具有广泛性。但是在数值分析的教学中,在已定本课程所采取的计算机高级语言确定的情况下,可以使用伪代码的教学手段。例如,经常在讲解数值分析的课程中,教师确定使用Matlab作为实现的工具,因此在课堂教学中可以使用伪代码的教学手段,其中计算机高级语言采用Matlab的控制结构来描述算法的步骤。目前经常采用的手段是采取框图法让学生理解,可是在学生真正编程实现的时候还是遇到了很大的困难,特别是针对Matlab语言为0基础的情况下,学生应用起来就很费劲。在培养学生过程中,把算法的设计思路和实现在课堂教学中展示出来,能够增加学生的兴趣,增强算法设计的理念和加强算法理解。
四、从算法入手渗透伪代码应注意的问题
实际中,当学生上机时,课本中的关于算法设计的自然语言描述或者框架图,也从某个方面让学生理解了算法,但是伪代码的出现让学生更快更好地让算法实现。因为我们知道从框架图和自然语言仍是很难把算法转化计算机可执行语言,因此在课堂教学中,采用伪代码的描述手段对于算法重新进行叙述就有很好的作用。我们针对数值分析中算法的设计,在教学中,不仅仅通过自然语言或框架图讲解,并且增加伪代码的描述。对于没有Matlab基础的学生,通过课堂教学中算法伪代码讲解,首先课堂中展示把具体的算法通过伪代码来用Matlab软件实现,并在上机操作中提高学生把算法用Matlab实现的能力,更好地让学生掌握把自然语言转化为伪代码的能力,并提高伪代码转化为Matlab语言的能力。进一步让学生喜欢并且爱上伪代码。这样在课堂教学中加入伪代码的描述,使得学生对于算法设计和执行都能起到促进作用。通过使用教材中的算法设计的框架图或自然语言在课堂教学中都增加伪代码描述部分,从而加强学生对算法设计的思路和上机实验的操作。
五、算法的实现
确定在教学中采用Matlab语言进行编程实现的首选,因为Matlab相对0基础的学生入门简单。在教学中第一次讲解算法的设计时,首先通过自然语言或框架图让学生對于算法有一定认识,在此基础上,把算法的伪代码描述出来。并通过计算机把伪代码变成可执行语句,进一步实现。从各个角度让学生对于算法和算法的上机操作有深刻的体会。针对数值分析教学中采用Matlab进行上机实习的算法,写出相应的伪语言。学生通过伪语言进行上机实习加强了学生对于算法设计转化为应用的能力,使学生对于上机实习能更加从容,并加强了学生对算法设计和算法实现的实行能力。
参考文献:
[1]陈芳,黄静静.Matlab在《数值分析》课程教学中的应用[J].考试周刊,2014,(49):118.
[2]姚祖喜.《数学分析》教学中若干问题的思考与实践[J].中央民族大学学报,2003,(12):254-258.