教/改/纵/横
| 计算机教育 2007.9 |
104 “Visual Basic 程序设计”课堂
教学模式改革
谢红霞  孟学多
(浙江大学城市学院,浙江 杭州  310015)
摘  要:本文分析了“Visual Basic 程序设计课程”的教学模式改革实践,探讨了直观教学法、推理教学法、演示教学法、案例教学法在教学中的应用。实践证明,这些方法对于提高教学质量起到了积极的作用。 关键词:Visual Basic 程序设计;教学方法;教学改革 中图分类号:G642    文献标识码:A 文章编号:1672-5913  (2007)  18-0104-03
1  引言
Visual Basic 程序设计课程教学模式改革试点,经过一学期的具体实践,取得了阶段性的成果。教学模
式改革从课程的总体规划、教学内容、教学重点、成绩评定到一系列课程规范的制定,都进行了积极的改革尝试。
传统的教学方法是按照给出语法、解释语法规则、举例说明的三步曲。这样的学习步骤很难让学生对VB 产生兴趣。通过教学模式改革开始了新的教学方法的探索。在课堂讲解中尝试运用直观教学法,推理教学法,演示教学法,案例教学法等各种教学方法。
2  直观教学法
在VB 语言程序设计中,有些内容比较抽象,学
生不容易接受。作为教师不仅要把深奥的理论讲得通俗易懂,还要巧用生活中的例子,运用形象直观的比喻使学生容易理解。比如,原来讲for 循环语句的顺序是:先给出for 语句的语法格式,讲解其含义及注意点,进而举例说明。这样的教学方法对初学者来说是很难理解的。本学期尝试用以下的方法讲这个知识
点:先请学生做个游戏,从第1级石阶开始向着第
100级石阶往上爬,石阶一级级地爬,在第1级石阶时捡1个鸡蛋,在第2级石阶时捡2个鸡蛋,……请问到第100级石阶时篮子里的鸡蛋有几个?怎么求?分析这个问题可以知道,在这个事件中重复做一件
事情,即捡鸡蛋共100次,这就是个循环问题。循环的初值是1,终值是100,步长为1 (对应的程序是for k=1 to 100 step 1) ;每一级石阶上做同一件事,即捡k 个鸡蛋到篮子里 (对应的程序是:s=s+k) ,这就是循环体;捡了鸡蛋后再上一个台阶,即k 递增1(对应的程序是:next  k)。很形象地写出了如下的程序:
for k=1 to 100 step 1  s=s+k next k
针对这个问题可以不断展开,捡完鸡蛋后人站在哪个石阶上?这就是循环结束后循环变量k 的值是多少?捡鸡蛋还可以有多种形式,从100级石阶开始向着第1级石阶往下爬捡鸡蛋,程序该怎么写?捡鸡蛋时两级石阶并作一步跨又怎么样?若篮子只能装500个鸡蛋,问篮子满时人站在了哪个石阶上?这些问题既直观易懂又很好地把for 循环语句的几个要点讲明白。所以讲课从学生的角度看问题,拿日常生活中的例子打比方,使得学生积极地参与到课堂讨论中来,课堂气氛非常活跃,能够吸引学生的注意力。在VB 程序中有很多类似的例子,如选择结构、数组、过程等,凡是学生比较难懂的内容,都可以到这样熟悉的例子。
教/改/纵/横
| 计算机教育 2007.9 | 105
3  推理教学法
排序是计算机程序设计中最经典的算法,当讲完一维数组的概念并对一维数组有了经验性认识之后,讲排序算法就水到渠成了。但在讲课时不直接讲排序而是从已学的内容出发,引导学生层层深入,最终引出排序的问题,这样既复习了旧课,又降低了新课内容的难度。
比如,我们可以从最小数入手:产生10个二位随机数,出最小数。这个问题学生比较容易解决,很快就能写出源代码。
下一步引伸这个问题,我们不仅要知道最小数是多少,还要知道最小数是第几个数,也就是它的下标是多少?
学生自然会想到用一个变量pos 记录最小值的位置,程序如下:
Private Sub Form_click()  ……
min = a(1) : pos=1 For j = 2 To 10
If min > a(j) Then min = a(j) : pos=j Next j
Print min , pos  End Sub
这时启发学生思考,既然知道了最小数的位置是pos ,要知道最小数是多少,还不是很容易的事,就是a(pos) ,所以去掉变量min 。程序改为:
Private Sub Form_click()  …… pos=1
For j = 2 To 10
If a(pos) > a(j) Then  pos=j Next j
Print a(pos ) , pos End Sub
继续深入,我们把到的最小数与第一个数相交换,也就是把最小数放在第一个位置上。
Private Sub Form_click()  ……
pos = 1
For j = 2 To 10
If a(pos) > a(j) Then pos = j Next j
t = a(1): a(1) = a(pos): a(pos) = t End Sub
继续引伸,在留下的9个数(即从第2个到第10个数)中再次最小数,把到的最小数与第二个数相交换。也就是第二遍最小数,在仿照第一遍最小数的基础上很容易写出来:
第1遍最小数: Private Sub Form_click()
…… pos=1
For j=2 To 10 If a(pos) > a(j) Then pos=j
Next j
t=a(1): a(1) = a(pos): a(pos)=t End Sub
第2遍最小数: Private Sub
Form_click()
…… pos = 2
visual basic pdfFor j = 3 To 10  If a(pos) > a(j) Then pos = j
Next j t=a(2):
a(2)=a(pos):a(pos)=t End Sub
依次类推,第3遍,第4遍,……,直到第9
遍,即在留下的最后两个数中最小数放在第9个位置上,留下最大的数在最后位置上。
可以看到,第i 次查最小数并把他交换到第i 个位置的源代码可以写成:
pos = i
For j = i+1 To 10
If a(pos) > a(j) Then pos = j Next j
t = a(i): a(i) = a(pos): a(pos) = t
那么,10个数共计需查9遍,所以外加一层循环:
Private Sub Form_click()  ……
for i=1 to 9 pos = i
For j = i+1 To 10
If a(pos) > a(j) Then pos = j Next j
t = a(i): a(i) = a(pos): a(pos) = t next i End Sub
这就是我们的结论:选择分类法。继而引出选择分类法的基本思想:每次选出未排序数中的最小者,把它放在未排序数的最前面。对n 个数据,需经过
教/改/纵/横
| 计算机教育 2007.9 |
106 n-1次选择。引导学生进一步思考,教材中选择分类法的源程序是这样写的:
For i = 1 To n-1    pos = i
For j = i + 1 To n
If a(pos) > a(j) Then pos = j    Next j
if  pos<>i  then  t = a(pos): a(i) = a(pos): a(pos) = t
Next i
问为何要用if  pos<>i  then  t = a(pos): a(i) = a(pos): a(pos) = t ,这其中的变量pos 具体有什么含义。若去掉变量pos ,把算法改为:
假如在第i 遍最小数的过程中,设 a(i)为最小数,将 a(i) 与 它后面的所有数a(i+1), a(i+2), …, a(n) 逐个比较,若 a(i)>a(j) ( j=i+1, i+2, …, n ),则交换a(i) 与a(j) ,这就是直接选择排序。给出源代码并要求比较优化选择排序法和直接选择排序法的优缺点。
4  演示教学法
在教学过程中,为了提高学生的学习兴趣和讲清楚教学内容,利用一些与教学有关的软件和素材可以取得比较好的效果,如flash 动画。也可以运用单步跟踪、插入断点、监视等程序调试方法使得程序的执行流程一目了然。由于程序调试有一定难度,可以尝试在讲课时把内容分解为几次来讲,且一开始讲程序就伴随着讲程序调试。如第一次接触VB 编程,就提示认识上机过程中的错误,这是最初的经验积累;到讲选择结构时,补充单步跟踪调试的方法;到循环时就讲监视窗口的使用,断点的设置等,把难点拆散,逐个掌握。
5  案例教学法
精选与实际生活关系密切的问题作为案例, 通过对案例的运行,有效地激发学生的好奇心和求知欲;然后分析案例的设计思路和实现方法, 进而引出该案例中用到的知识点;再举一反三,启发学生对案例进一步讨论、归纳,对案例完善和扩展;最后达到知识的快速掌握和能力的快速培养[1]。
函数和过程这一章是学生最为难懂的内容,概念多且相互交叉。通过案例教学法,先引入一个大家都
会做的题目,如求表达式sin(2)+sin(5)+sin(6) 的值,学生一下子就说出来了:
private sub form_click()  print sin(2)+sin(5) +sin(6) End sub
然后做一题很相似的题目2!+5!+6!,而且提示有一个叫阶乘的函数fact 可以用。学生只要在上一题中把函数名改一下就行了:
private sub form_click()
print fact(2)+fact(5) +fact(6) End sub
一运行,发现有错误,系统提示fact 函数未定义。大家查附录果然没有这个函数,这怎么办?这时教师引导,解释这个fact 函数,写出function 函数过程,问题一下子解决了。
private function fact(n as integer)  s=1
for I=1 to n s=s*I next I fact=s
End function
然后引入相应的知识点,即function 函数的语法,再对自定义的fact 函数进一步扩展和运用。如从键盘输入变量m 和n 的值,求表达式m!/(n!+m!)的值。最后总结引入函数的作用和意义。
6  结论
结合学生特点,从认知的角度出发,如何在有限的课时中讲好这门课,引导学生进入VB 编程的有趣世界,这是我们教学模式改革的出发点。通过改革试点,学生对VB 的学习由开始时的害怕、排斥到觉得VB 有意思,乐于去学。课堂上教与学良好的互动,使课堂气氛非常活跃,提高了教学效果。
参考文献
[1] 龚沛曾,杨志强. “Visual Basic 程序设计”国家精品课程建设[J]. 中国大学教育,2004 ,(9).
作者简介:谢红霞,女,浙江大学城市学院计算机与计算科学学院讲师,:xiehx@zucc.edu

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。