中职VB课程中递归算法教学探索和思考

时间:2022-09-15 04:14:24

中职VB课程中递归算法教学探索和思考

摘要:递归算法是VB程序设计中的常用算法之一,也是一种重要的编程方法。掌握递归方法十分重要,但递归算法是较难理解和掌握的。因此,有必要对如何讲好递归算法做一些探讨。对提高递归算法在VB教学中的地位和递归教学中存在的一些问题,给出了自己的教学探索和思考。

关键词:递归;例子;形象思维;抽象思维

中图分类号TP312.1 文献标识码:A文章编号:1007-9599 (2011) 09-0000-02

Teaching Exploration and Reflection of Recursive Algorithm in VB Courses

Lin Dongfeng

(Fujian Pingnan Vocational and Technical Institute,Pingnan352300,China)

Abstract:The recursive algorithm is used in VB programming algorithm,is also an important programming.grasp the recursive method is very important,but the recursive algorithm is difficult to understand and grasp.Therefore,it is necessary to speak well to do some of the recursive algorithm.recursive algorithm to improve the status of teaching in the VB and recursive teaching in some of the problems,given their teaching exploration and reflection.

Keywords:Recursion;Example;Image thinking;Abstract thinking

笔者多年在中职学校的担任VB授课任务,中职学生基础差,理解力差,仅仅照本宣科是无法提起学生的兴趣,如何教好VB课程成了一件头痛的事。下面以我在递归教学为例,谈谈我在教学中的一些探索和思考。VB课程中递归的教学既是重点又是难点,虽然递归算法比较简捷,但由于在执行递归算法时又会调用该递归算法,因此初学者普遍感到难以入门。中职学生对递归调用的理解以及递归算法的阅读和编写更是普遍感到比较困难。为此,教师必须在开始进行递归算法的教学时,让学生了解递归调用的实现原理并学会描述递归算法的执行过程,在以后的教学中,让学生读多写递归算法。我经过多次VB教学,经过几轮教学实践,对递归教学有了重新认识。

一、首先我们要重新认识到递归教学在VB中的地位,重要性

递归的教学难度从所周知,正是因为这样,面对的又是中职学生,所以大部分老师通常只把递归当作过程知识点的延升一带而过。经过几年的教学,我认为应该改变对递归教学的认识,要提高递归章节的在VB中的教学地位,具体就是不能再只是用一两节课时来教学,而是要用一个专题,一个系列来学习和讨论。经过教学实践,发现这样不仅能巩固前面基础知识,还能提高学生利用算法解决问题的能力,教学效果更好。具体教学过程,我是分三个阶段来完成教学的。首先,趣味化递归概念引入,其次,多样化分析递归过程,最后,强化深化递归应用。为了切实完成上面过程,一定要保证充足的教学课时,不一定要安排在一起,时间上可以有间隔。

二、一定要创设情景,诱发学生的主动性

往往我们在教学程序语言就不注意重视创设情景,相对于一些操作性强的计算机其它专业课,程序语言的教学更显得枯燥。课堂教学是教师给学生传授知识和技能的全过程,如何让学激发学生的学习兴趣,培养学生学习的主动性非常重要。心理学研究表明,“兴趣是学生最好的老师”,兴趣能使学生在愉悦的气氛中学习,唤起学生强烈的求知欲望,是教学成功的关键。目前递归教学中常见的教学过程是这样:以斐波那契的兔子问题引人,导出递归算法,从而自定义了一个以递归方式解决的函数过程。然后利用子过程解决汉诺塔的经典问题。教学过程中我发现虽然斐波那契的兔子问题也挺吸引人,但真正解释分析起来还是比较费口舌,并不那么直观易懂。我用更加通俗易懂的日常生活例子来创设递归导入情境。如《老和尚讲故事》、生活中的排队报数等例子,让学生轻松愉快的接受递归基本概念。

三、几个典型例子应用再认识

递归教学中有些经典的例子,大家都在用,而且很好用,但我发现这几个例子在什么时候说,讲解的先后顺序还是有讲究的。以下是我对常用例子作分析,并根据例子在教学中所起的作用,按三个阶段来使用这些例子。

(一)趣味化递归概念引入

以下例子侧重让学生初步建立递归过程概念,当学生发现在常见的生活例子和故事中能找到递归的影子,就降低学生学习递归的恐惧心理。讲授例子时要体现先后顺序的。

1.排队报数。让一排数量不清学生排队,教师要求学生通过报数得到学生的总数。一般情况是正常报数(从1报到最后一个,最后得到学生总数),然后教师告诉学生还可以用逆序报数(每前面学生都询问其后面一个学生的号数,逆序依次询问,当问到最后一个学生时,最后的学生报数为1,其他学生加上1后依次回报,最后一开始的学生所报的数就是总数)。此例形象具体表现的递推和递归两过程,极易学生接受。

2.照镜子。当你往镜子前面一站,镜子里面就有一个你的像。但你试过两面镜子一起照吗?如果甲、乙两面镜子相互面对面放着,你往中间一站,两面镜子里都有你的千百个“化身”!为什么会有这么奇妙的现象呢?原来,甲镜子里有乙镜子的像,乙镜子里也有甲镜子的像,而且这样反反复复,就会产生一连串的“像中像”。这是一种递归现象。此例还可以扩展,让同学们在大自然中找到更多的递归现象。

3.《老和尚讲故事》故事。从前有座山,山里有个庙,庙里有个老和尚会讲故事,讲什么呢?从前有座山,山里有个庙,庙里有个老和尚会讲故事……。这个故事大家再熟悉不过,此时用起来让同学们还能找到生活哲理的感觉,寓教于乐。

4.讲汉诺塔故事和玩汉诺塔游戏。通过以上例子,可以让由同学们方便地总结出递归算法的概念。

(二)多样化分析递归过程

以下例子侧重学生结合数学知识,先对递归过程进行数学化思维,然后通过计算机思维转化为程序设计形式,最终完成形象思维到抽象思维的转化。

1.小猴吃桃。有一天小猴子摘若干个桃子,当即吃了一半还觉得不过瘾,又多吃了一个。第二天接着吃剩下桃子中的一个,仍觉得不过瘾又多吃了一个,以后小猴子都是吃尚存桃子一半多一个。到第10天早上小猴子再去吃桃子的时候,看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃子?

此例刚好衔接上面排队的引入,教学过程可以利用数学知识用顺推和倒推来求解。

2.通过典型数学习题体会递归算法。有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁;问第4个人多少岁,他说比第3个人大2岁;问第3个人多少岁,他说比第2个人大2岁;问第2个人多少岁,他说比第1个人大2岁;最后问第一个人多少岁,他说是10岁,请问第5个人多少岁?此例可简单通过数学知识演算。

(三)强化深化递归应用

针对中职学生,一般还是偏向比较基本的应用,通常我就用书上必用的两个典型例子,让学生综合分析得到递归程序书写的一般形式。很经典的例子,我就不展开了。

1.斐波那契数列。

2.汉诺塔。

四、最后的教学环节还要完成递归算法的精简化

要让学生切实理解并能应用,一定要将知识点精简化,我着重强调以下几点。

(一)递归的概念

若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的;在程序设计中,若一个过程直接地或间接地调用自己,则称这个过程是递归的过程。

(二)递归算法的本质

递归算法的本质是把一个大型复杂的问题层层转化为若干与原问题相似的规模较小的问题来处理,当规模小到一定程度时,可以直接得出它的解,这样通过递推就可得到原来问题的解。递归调用的次数必须是有限的,必须有递归结束的条件。

(三)递归算法的设计

サ莨樗惴ǖ纳杓疲通常有以下3个步骤:

1.分析问题,设计递归公式,将一个问题化解为一个或多个子问题求解,且子问题和原问题具有相同的解法。

2.设计递归结束条件,控制递归,递归最后一级的调用必须不能再进行递归

3.确定参数,设计递归函数,递归过程或递归函数的参数值在递归过程中必须是按规律变化的,且参数值的增/减方向应与递归终止条件相匹配,这样才能控制递归调用。

五、递归教学的再思考

经过几轮的教学实践过程,我终于认识到程序设计的教学过程在思维的本质就是在引导学生进行形象思维向抽象思维转换。如果我们教师意识到这一本质,将会更积极主动地丰富和完善这一过程。形象思维是依靠形象材料的意识领会得到的理解。它以表象、直感和想象为其基本形式,以观察p联想p猜想等形象方法为其基本方法的思维方式。形象思维是计算机思维的先导。在获取计算机知识与解决计算机问题的过程中,形象思维是形成表征的重要思想方式。因此,在计算机教学中,培养学生的形象思维能力是思维训练的基本任务之一。抽象思维是一种以语言过程为媒介进行表达,以概念p判断p推理为其基本形式,以比较与分类p抽象与概括p分析与综合p归纳与演绎等逻辑方法为其基本方法的思维方式。抽象思维是计算机思维方式的核心。思维转换是思维从一种状态转为另一种状态的复杂的心理过程,抽象思维和形象思维的相互转换是思维的最基本转换之一。学生的思维特点是以具体的形象思维为主要形式向抽象的逻辑思维过渡。具体形象的东西容易理解和接受,对于需要进行判断和推理的原理和概念,就难以接受和领悟。要充分地利用各种直观的教具使一些抽象的概念变得形象具体,指导他们对事物进行有目的的细致观察,让他们从复杂的现象中区分出主要和次要,找出它们之间的内在联系,用形象生动的语言启发他们对同一属性的不同事物进行比较、分析和判断,找出它们之间的共同点和不同点,综合归纳出它们共同的本质属性,逐步培养学生的抽象思维能力。在递归教学上,我们就是通过展示各种不同的例子,指导学生对不同例子的过程进行细致的观察和思考,找出它们之间的相同点,通过变与不变的结合,让学生充分地理解和领悟递归过程中的不同概念,启发诱导他们进行分析和判断,找出它们之间的内在联系和规律,让学生形象思维平稳地过渡到抽象思维。

参考文献:

[1]王方杰.VB教学方法探索[J].电脑知识与技术,2007

[2]杨树莲.以学生为主体的VB探究式实验教学模式研究[J].科技情报开发与经济,2009

[3]朱智贤.思维发展心理学[M].北京:北京大学出版社,1986

[4]施羽尧.青少年思维创造浅说[M].北京:中国展望出版社,1985

[作者简介]林东峰(1971-),讲师,大学,主要研究方向:信息技术。

上一篇:探寻Java反射机制的奥秘 下一篇:如何上好VB程序设计这门课