《VisualBasic程序设计》课程教学中应强化的四个方面

时间:2022-10-05 10:42:33

《VisualBasic程序设计》课程教学中应强化的四个方面

摘要:针对学生初学VB时难以独立编写出正确程序的问题,提出了从编码规范、程序阅读、程序调试、程序测试四个方面进行强化的教学思路,在教学实践中取得了良好的效果。

关键词:Visual Basic程序设计;教学研究;程序阅读;程序调试;程序测试

中图分类号:G642 文献标识码:A 文章编号:1009-5039(2013)23-5297-03

《Visual Basic程序设计》(下文简称VB)是许多高校为非计算机专业学生开设的一门计算机程序设计语言课程,也通常是他们学习的第一门程序设计语言课程。在依赖教师讲授、分析程序阶段问题还不一定显露,一旦学生自己动手解决新问题,缺乏思路,不知从何处入手编写程序的矛盾就显现出来,这是绝大多数学生初学VB时面临的难题。如何解决这一难题,使学生尽快做到自己动手独立编写出正确的程序,笔者认为在VB的教学中应着重强化以下四个方面:一是培养学生养成规范化编码的习惯,使代码结构清晰、美观、易读;二是教会学生正确阅读程序的方法,使学生在大量的程序阅读中循序渐进地过渡到自己独立动手编写程序;三是进行大量的程序调试训练,帮助学生积累程序调试经验,培养学生自主编程能力;四是在程序设计中引入基本的可靠性测试,在提高程序实用性的同时培养学生严密的逻辑思维能力。

1 培养学生养成规范化编写代码的习惯

笔者在指导学生进行VB上机实验中发现,他们在纠正程序中的编译(语法)错误和运行错误上花费了大量的时间,有时仅仅为了找出一个变量名的拼写错误甚至花去了大半节课的时间,对程序中可能出现的最难诊断的逻辑错误已无足够时间去测试,编程效率极其低下,错失了与老师、同学面对面交流解决问题的大好机会。出现这样的情况,笔者分析除了与学生对VB编程知识还不太熟悉外,也与学生还没有养成规范化编码的习惯密切相关。

如果学生在书写程序代码时遵从版式的基本规范,比如程序块采用缩进格式书写,同一层次的语句注意对齐,不但可以避免块结构的If语句缺少End If这样类似语法错误的出现,而且也使代码看起来结构清晰美观,易于阅读;如果学生在书写代码时遵从注释的基本规范,在代码的合适位置添加合理的注释,不但让别人更容易理解代码的功能和算法,与别人实现良好的代码交流和共享,而且也有利于学生本人理顺和展示自己的编程思路,为以后代码的修改奠定良好的基础;如果学生编程时坚持使用Option Explicit语句,养成变量先定义后使用的习惯,变量名的拼写错误再也不用学生花大量的时间人工查找,直接由VB将其视为语法错误自动快速地查找出来。

可见,养成规范的编码习惯何其必要。现在,VB在很多高校是非计算机专业学生接触的第一门程序设计语言,此时学生对于程序设计基本上还是一片空白,这时只要任课教师在代码编写的规范性方面给予更多的强调和明确的要求,学生是相对容易养成这一良好的编程习惯的。当然,由于按规范化要求编码,会增加学生代码书写的工作量,学生未必会主动去做,因此任课教师可以从以下两个方面入手进行有益尝试:1)要明确告诉学生规范化编码的好处,并通过具体实例的演示让学生切实感受到规范化编码的好处。应让学生明白程序设计的主要功能除了能够解决具体的问题以外,还有一个重要的功能就是交流和共享。一个好的程序不但要正确而且要让人能看懂,这就要求程序设计者应遵守一定的编码规范,这对于代码间的交流和共享以及程序本身的调试和错误的排查是极为有利的[1]。2)教师除了在课堂讲解示例程序时要按规范化要求当堂编写程序外,还应将VB编码的基本规范制作成文档(在文档中应对VB程序的版式规范、注释规范、标识符命名规范以及其他良好编程风格建议等进行明确说明)下发给学生,要求学生严格按照文档的指引书写代码。

2 教会学生正确的程序阅读方法

学生要想掌握程序设计方法,做到自己独立动手编写程序,大量的程序阅读是必不可少的。对于初学者来说,阅读别人编写好的程序应是学习编程的第一步。VB教师不但要给学生提供大量程序阅读的机会,还应教会学生正确的程序阅读方法,可以指导学生依据以下几个步骤来阅读程序。

第一步,以熟悉程序基本构成为目的的程序阅读。跟计算机硬件系统由输入设备、存储器、运算器、控制器、输出设备五大部件构成相类似,程序的构成中包括了输入成分、数据成分、运算成分、控制成分和输出成分这五个部分。如何给程序中的已知量提供值,这是程序的输入成分;常量、变量以及它们各自的数据类型,这是程序中数据成分,是程序处理的对象;对数据进行什么样的处理,这是程序中的运算成分(运算符、表达式);程序中的语句按什么顺序执行,这是程序中的控制成分(顺序结构、选择结构、循环结构);如何查看程序的运行结果,这是程序中的输出成分[2]。教师在指导学生阅读程序时,应引导学生识别出程序中相应的五种成分,这是学生认识和理解程序的第一步。

第二步,以熟悉程序执行流程为目的的逐语句程序阅读。这一步又可以分成两小步进行:1)让学生在计算机上利用VB提供的“逐语句”命令单步执行程序,查看程序的具体执行流程。2)让学生脱离计算机,人工用“逐语句”的方法阅读程序。为了让逐语句阅读程序落到实处,防止某些学生应付差事,教师在给学生指定要阅读的程序的同时,应附带提供相应的纸质表格,要求学生当堂在表格中填写程序运行过程中相关变量的取值。学生在阅读多分支选择结构的程序时,教师应向学生着重强调VB中多分支结构语句执行的两个特点:1)虽然有多个分支,但任何时候只执行其中的一个分支,执行完这个分支后不再执行其他的分支,直接执行End If或End Select后面的语句;2)要执行当前的分支语句,则该分支前面的所有分支条件必然都是不成立的。学生在阅读循环结构的程序时,应着重强调对循环结构三个要素的把握:初始状态(所有参与循环的变量在循环之前都必须有一个确定的值)、循环条件(控制循环体执行的次数)、循环体(每次循环要执行的语句,其中必须包括改变循环条件的语句)。

第三步,以识别程序功能为主的快速程序阅读。在学生熟悉了程序的执行流程后,再指导学生使用IPO(Input Process Output,即“输入处理输出”)的方法来阅读程序。IPO方法将程序清单看作是由“数据输入数据处理数据输出”三部分组成的。所谓数据输入就是给程序中事先某些值已知的变量提供数据;数据处理是根据已知变量的值,按照一定的方法进行计算,从而得到要求的未知变量的值;数据输出是将得到的未知变量的值在屏幕或打印机等设备上输出以便于查看或利用。数据输入输出的方法在VB中相对固定且比较简单,学生在阅读程序时可以先将这两部分剥离,重点阅读数据处理部分的代码,这是程序设计的精髓所在,它提供了解决某个问题的一种通用算法,学生应重点弄懂这部分代码的功能及其实现方法。弄懂了程序的功能,相对于逐语句的程序阅读,学生就可以更快地得到程序运行的结果。

对含有通用过程调用的较大程序,可以指导学生用“模块化”的方法来阅读程序。所谓“模块化”方法就是将程序清单看成是由多个模块按一定结构组合而成,每个模块实现一定的功能。阅读时学生只要弄懂每个模块的功能,以及上下文模块之间的关系,就可以读懂整个程序清单[3]。

第四步,引导学生在已读懂程序的基础上进行仿写、改写程序。在学生读懂给定的程序后,教师应引导学生多思考,别人为什么要这样设计,有没有其他的设计方法来实现同样的功能,能不能将程序修改以完成更多的功能。让学生在阅读程序的基础上,仿写、改写程序,最终达到独立编写程序,这是学生学习程序设计的一个循序渐进的过程。

3 对学生进行程序调试专项训练

学生初学VB时,对程序设计知识知之甚少,心理上存在畏惧感,因此一旦程序运行有错误,也不管是什么类型的错误,立马就询问老师,老师帮其解决问题时,较多学生也只求这个问题的解决之道,不去探究解决此类问题的一般方法,显然这不利于学生独立编程能力的培养。为了提高学生独立编程的能力,VB教师应重点教给学生VB中程序调试的一般方法(结合具体的实例),并对他们进行大量VB程序调试的专项训练,以帮助他们积累程序调试的经验。为此,VB教师除了引导学生对自编程序的错误用所学调试方法进行查找外,还应注重收集长期授课过程中学生编写VB程序的典型错误,并将其汇编成错误案例集下发给当前授课的学生,要求他们借助VB的调试工具找出错误。

对于编译错误和运行错误,程序运行时VB会通过消息框给出错误提示,出错处会显示为红色字体(部分编译错误)或加上黄色底纹高亮度显示,教师只要鼓励学生克服对程序出错的畏惧心理,仔细查看并读懂错误提示信息,就可以轻松地解决这类错误。因此教师教学的重点应放在指导学生利用VB提供的调试工具解决程序中出现的逻辑错误。

为了发现程序中的逻辑错误,VB提供了许多有力的调试工具,包括程序中断(设置断点和使用Stop语句)、程序跟踪(利用“逐语句”和“逐过程”命令单步执行代码)、设置监视点和监视表达式、利用调试窗口(包括立即窗口、本地窗口、监视窗口)等机制帮助程序员调试程序[4]。除了让学生掌握VB中这些调试工具的用法外,笔者认为还应教给学生程序功能测试用例设计的基本方法,比如对于多分支的选择结构,测试数据的个数至少要与分支个数相同,要让每个分支都有机会运行一次;一般除了要取边界值作为测试数据外,还要选取刚刚大于和刚刚小于边界值的数据作为测试数据等。此外,还应教给学生程序调试的一些技巧,比如调试时可将复杂程序先简单化,减少循环的次数,减少数据量,降低难度,待调试通过后再改成题目要求的形式。

4 指导学生对程序进行可靠性测试

程序可以处理的错误情况越多,说明它的“鲁棒性”越强。程序是否可以预见可能发生的问题,并对这些问题做出预先处理,直接决定其实用价值[4]。为此,在学生编写程序实现基本的功能后,VB教师应引导学生对程序进行可靠性测试,让学生以用户的身份来使用程序,随意对程序进行操作,将出现的问题记录下来,然后修改程序,对这些可能出现的问题采取应对措施。通过这样的训练,不仅可以提高学生所编程序的实用性,而且锻炼了学生的思维能力,使学生的思维更加严谨,考虑问题更加全面。

上面的程序比较简单,学生已按要求实现了规定的功能,但对于这个简单的程序,也只有在用户按题目要求输入正确的数据、按正确的顺序单击命令按钮时,程序运行过程中才不会出现错误,得出正确的结果,因此这个程序的实用性和可靠性并不强。教师可以通过下面的思考题,引导学生对该程序进行可靠性测试:

1)在InputBox函数生成的对话框中如果用户没有单击“确定”按钮,而是直接单击“取消”按钮,程序会出现什么问题?如何应对这一问题?

2)在InputBox函数生成的对话框中如果用户没有按要求输入数值型数据,而是输入其他类型的数据,程序会出现什么问题?如何应对这一问题?

3)在InputBox函数生成的对话框中如果用户输入了数值,但没有按要求输入一个两位正整数,程序会出现什么问题?如何应对这一问题?

刚开始时,由于学生缺乏程序测试方面的经验,教师可以像上面的题目那样通过给出思考题的方式引导学生进行可靠性测试,然后逐渐过渡到要求学生自己或请同学对程序进行测试,在程序运行过程中随意输入数据,按任意顺序操作控件,观察并记录程序出现的问题,然后对程序修改完善,直到消除测试过程中出现的问题。

对初次接触VB程序设计的非计算机专业学生,不要求他们对程序做非常全面的可靠性测试,但一般应要求他们做两个基本的可靠性测试:1)输入数据测试——如何保证用户只有录入了正确的数据,程序才进行正确的处理,对错误的数据应限制录入或给出错误提示;2)界面操作测试——如何保证用户按照正确的操作顺序来使用界面,从而使程序做出正确的处理,对错误的界面操作应预先禁止或给出错误提示。

5 结束语

笔者的教学实践证明,在VB的教学过程中对上述四个方面进行强化,不仅使学生更好地掌握了VB程序设计语言的语法规则,而且提高了学生运用VB语言编程解决实际问题的能力,有效克服了学生编写出正确程序对教师的过度依赖,使学生从面对新问题没有编程思路、不知如何下手的状态顺利过渡到自己动手独立编写程序的状态,学生体验到了自我编程成功所带来的成就感,他们的学习兴趣和学习热情高涨,自我探究欲望大大增强,教学效果良好。

参考文献:

[1] 李志辉. Visual Basic程序设计实验、实训与题解[M].北京:高等教育出版社,广州:中山大学出版社,2008.

[2] 黄刚.非计算机专业《Visual Basic程序设计》教学方法研究与改革[J].福建电脑,2011(1):214-215.

[3] 肖捷,肖海容.Visual Basic程序设计教学方法研究与实践[J].东莞理工学院学报, 2010,17(1):108-112.

[4] 孙俏.Visual Basic程序设计[M].2版.北京:中国铁道出版社,2009.

上一篇:高中信息技术课教学策略之我见 下一篇:政法院校面向专业的计算机课程体系探讨