于清龙
(大连大学 信息工程学院, 辽宁 大连 116622)
Visual Basic(简称VB)[1]程序设计是高校非计算机专业学生的必修课。作为语言程序设计领域的前沿软件,VB的发展历史已经很久,相关的技术也比较成熟,由于其简单易学、功能强大、应用广泛,因此在很多院校都开设了这门课程。我校也在计算机信息与管理、计算机网络技术以及电子商务等相关专业开设了这门课程。笔者认为教师的主要教学目标,不仅是要使学生熟悉VB的基本概念,而且还要使学生能够熟练地掌握一些程序设计的相关技巧和方法,具有一定的程序编写思维能力。
VB语言比较枯燥、难以理解,学生没有相应的知识背景,导致学生对这门课有恐惧心理,缺乏兴趣。这就要求授课教师在教学中分析、摸索出一些行之有效的教学方法,才有可能培养学生程序设计能力,掌握技能,激发学生对程序设计的兴趣。在近几年的教学实践中笔者进行了如下改革探索,取得了良好的教学效果。
对于一项操作性很强的工作,我们是不能只讲理论的,正如当我们学习游泳的时候,如果教练只是告诉我们每个动作的名称,但不告诉我们这些动作怎么完成,我们是不可能学会游泳的。那么,我们在学习VB的过程中也必须结合大量的实例演示,让同学们真正体会到VB的可视化设计和它的实用性。目前有很多关于VB的实例教材及各种参考书,但是都比较散而且内容也不是很详细,所以,在讲解的时候,必须对实例进行慎重的选取和必要的修改。
现在的大部分教材,都是对VB语言[2]的基本语法进行讲述,然后再讲VB中对象的使用。笔者认为在讲授时不宜将语法和对象分开来讲,要把VB面向对象的程序设计方法,事件驱动的编程机制贯穿于整个教学过程中。VB中的对象主要用于构建界面,而具体程序功能的实现则要编写代码行,因此任何一个完整的应用程序都不可能只用对象或只用语法。这两块内容必须进行穿插讲解,这样就避免了让学生在毫无知识背景的情况下去理解抽象难懂的概念,挫伤他们编程的积极性。在教学过程中,要坚持以学生已有的知识程度为基础,打破原有的以课本知识的逻辑结构为顺序组织课堂教学的模式,也就是说先不讲基本概念,从简单的实例人手,通过让学生观看、模仿,在实际操作中去探究和领悟这些概念,并适时地加以归纳总结,让学生在轻松愉快的气氛中接受新知识。比如,在讲到循环结构中DO…LOOP语句和FOR…NEXT语句的用法时,用DO…LOOP语句[3]的4种形式和FOR…NEXT语句实现求解N!的过程,让学生去观察、领悟它们的异同。
笔者所收集的程序除了强调程序的可靠性以外,还要特别强调程序的结构性,即使是一个简单的实例,也需要做到程序结构的严谨化,使之符合大众的思维,但也要突出自己的特点。如在讲FOR…NEXT等循环语句的时候,一般的都是利用从1累加到另一个固定的数值,来完成我们的循环讲解,这样的语句由于方法是完全一样的,所以最后的效果也没有什么吸引力可说。因此,笔者采用另外一种方式,结合利用文本框输入,即在两个文本框中可以输入任何两个数,使之从小的数值累加到另一个较大的数值,这样程序的效果更具结构严谨的魅力,学生的感受也就会完全不同。
在讲解的过程中,力求采用最简单、最容易的方法完成每一个实例,尽量采用常规化的语句,避开一些不容易理解的概念、方法。比如,在利用文件操作对数据录入以及把录入的所有数据输出时,我们可以避开利用Type语句定义自己的数据类型的使用,因为采用Type语句定义[4],有多少个字段,就会产生多少个相关的成员,在这种情况下同学们就很难想得到这个成员代表的是什么,它的作用是什么,这样就把程序复杂化了,其实我们完全可以采用简单的文本框来进行输入,然后用Input函数输出就轻松完成了。在具体的教学实践中,除了采用传统的教学方法如小组讨论法、提问法外,还要采用以下教学方法。
1.2.1错例分析法
学生对变量、类型、运算符、表达式这些基本概念和语言规则的掌握需要一个过程,对算法和数据结构的知识需要不断积累。学习过程中,学生能听懂老师授课的内容,但自己编制的程序往往错误百出。课堂上,我经常将容易出错的概念以反例形式展示给学生,让他们找错误,使程序运行。比如错误使用逻辑运算符的例子。
假设a、b和c是三个变量。如果已知a 例 Option Explicit Private Sub Command1_Click() Dim a As Integer,b As Integer,c As Integer a = -3: b = -2: c = -1 Print a < b And b < c’显示True Print a < b < c ’显示False End Sub 为什么 a < b < c会False?因为,VB在计算这个表达式时,先计算“a < b”部分,得True;再计算“True 1.2.2 零散实例和核心实例结合 零散实例教学法,对每个知识点的运用和理解是非常行之有效的,但对前后知识的贯穿缺乏说服力。笔者在教学改革实践中体会到,除经典的零散实例外,将一个规模较大的、典型的、有实用价值的、学生感兴趣的核心实例贯穿于教学全过程,对提高学生的编程能力非常有帮助。所谓核心实例是指,实例从小到大、随章节的展开而逐步成长,呈现为逐步进化的多个版本。比如引入一个贯穿全书的问题:设计一个“图书管理系统”。首先,用最基本的概念和最简单的结构,给出该系统的第一个(也是最简单的)版本,以后的每一次课,都对该系统提出新的功能和结构上的要求,并用本次课介绍的新概念和新方法对它进行功能上的扩充和结构上的改进。每次得到该系统的一个增强的新版本。为达到设计目标,学生随着教学的进程,可以积极投入到对实例系统的调试、改进的实践中,逐渐掌握所学的基本知识,同时也可以提高编程能力。 VB是一门实践性很强的课程,如果纸上谈兵,不上机练习,是不可能真正掌握VB程序开发的[5]。实践教学要注意以下阶段: 1.3.1模仿阶段 对课堂核心实例系统的调试、改进。核心实例的每次增强版是全面反映教学内容的,学生通过模仿、知识再现达到在实践中领悟知识,开拓编程思路。 1.3.2分层次阶段 在教学过程实施的开始,和核心实例同步,选出几个类似核心实例的课程设计内容,供学生选择。对核心实例的调试比较成功的,可以同步实施自己所学的课程设计内容,达到培养学生分析问题和解决问题的能力。对掌握核心实例有困难的学生,针对教学内容重新布置实验,强化知识巩固。课程设计[6]内容课后上机完成。 要掌握上面两个阶段的具体情况,教师应亲自指导,与学生一起上机实验,随时监控学生实验过程。对学生提出的问题及时予以指导,而发现学生常出现的共性错误,可在理论课上进行点评。 在VB程序设计[7]过程中,使用标准编码可以避免一些不必要的错误。在授课过程中使用标准编码的实例,在讲解实例过程中对学生进行适当地引导、启发,可以让学生养成一个良好的编程习惯。 程序书写规范是非常重要的,不仅书写格式应该结构层次分明,而且程序里面应添加必要的注释。不按照标准书写程序会增加别人查看程序的难度,同时也不利于再次上机调试修改。强调学生避免使用VB中的隐式操作,养成显式编码的习惯。比如使用Option Explicit[8],严格执行变量先定义后使用的原则,避免使用缺省属性,明确指出是在引用对象还是在引用对象属性。 总之,教学有法,教无定法,只要教学得法。程序设计教学的主要目标是为了使学生了解编程的基本思想,培养分析问题、解决问题的基本能力。围绕着这个目标,在保证学习积极性高的前提下,按照他们的认知规律组织教学,一切有效的教学方法都可以在我们的教学过程中加以运用,进而使学生综合素质得到整体提高,这是VB程序设计课程教学的最终目标。 [参考文献] [1] 王栋.Visual Basic程序设计实用教程[M].3版.北京:清华大学出版社,2007, 24(11):231-245. [2] 袁锋谈.《VB程序设计》教学方法改革的五个转变[J].中国成人教育,2005,35(2):131-135. [3] 刘卫国.Visual Basic程序设计教程[M].北京:北京邮电大学出版社,2003:145-150. [4] 高培志.Fortran77程序设计[M].南京:南京理工大学出版社,1996:78-80. [5] 刘瑞新.Visual Basic程序设计教程[M].北京:电子工业出版社,2000:134-141. [6] 陈华生.Visual Basic程序设计教程[M].苏州:苏州大学出版社,1999:90-94. [7] 崔彦峰,徐小荣.VB网络与远程控制编程实例教程[M].北京:北京希望电子出版社,2002:254-263. [8] 袁帅,郭月强,焦祝军.Visual Basic编程实例教程[M].北京:北京希望电子出版社,2002:276-281.1.3 重视实践教学和学生综合应用程序开发能力的培养
1.4 培养学生养成良好编程习惯
2 结束语