高校非计算机专业VFP程序设计语言教学探讨
2011-01-27代小红王光利
代小红,王光利
(1重庆工商大学学术期刊社,重庆400067;2重庆邮电大学生物信息学院,重庆400065)
Visual FoxPro程序设计(VFP)是一个可视化的面向对象的数据库管理系统。它具有结构简单、使用方便、易于安装、对硬件要求不高等特点。通过对此课程的学习,可以使学生在较短的时间内掌握面向对象程序设计的基本方法和技能,加深对数据库概念的理解,培养学生利用一种软件开发环境解决实际问题的能力,为进一步学习其他相关的计算机基础知识及使用或开发数据库奠定了基础[1]。根据教育部高教司颁发的普通高校本科学生管理办法,要求学生掌握一至二种高级语言,鉴于此VFP已成为各高校非计算机专业开设的一门主干课程。尽管各考试中心将VFP同VB及C语言划为二级考试的范畴,但是VFP以其独特的数据管理又不同于其他高级语言[2,3]。因此,在VFP的教学过程中,不能简单地套用其他语言的教学方法和手段,在此针对VFP程序设计教学的特点,探索一套行之有效的方法和措施,以供同行作为教学的参考和借鉴。
1 VFP程序设计教学中存在的问题
由于VFP程序设计课程的知识点多且知识体系较为松散,大量的命令和函数使初学者望而生畏,学习过程中学生只能是单个地记忆各知识点,缺乏知识点间的串联比较,导致了综合应用能力较差,这就需要老师深入地分析研究教学内容,既要讲清楚教材中的每一个概念和原理,而且要通过精选例题,在理论讲解后立即分析,体现了知识点间的内在联系,在课堂上老师用典型案例法将分散的知识点贯穿起来,形成一条本课程的教学主线。目前VFP程序教学中存在一些问题,一是学生的学习目的不明确,不知道为什么要学习这门课程。二是学生重视理论学习而不重视实践环节,学习效果受到影响[4-6]。学生沿用其他课程的学习方式来学习VFP程序设计,课后不善于实践操作,导致了学习效果难以实现事半功倍。三是学习过程中,常常与高级语言程序设计相混淆,习惯性地把每节课的内容进行分散记忆,而不是将知识进行前后关联,形成整体的概念[7]。四是课程学时数少、教学任务重。VFP程序设计这一课程知识点较多,而非计算机专业学生的授课学时数经调整后,却不断被压缩,要求我们的教师既要有效地完成本学期的教学任务,又要让学生精通程序设计,达到教学的目的,真不是一件容易之事;再加上学生语言基础薄弱,这也加大了学生学习此课程的难度。
2 紧抓课堂教学,提高教学质量
2.1 网络环境下的任务驱动模式教学
任务驱动模式是指利用计算机网络,通过网络向学生提出要掌握的内容和学习任务,老师通过网络进行在线的任务驱动,学生通过网络实现在线人机交互等,在不断探索中完成本次学习的任务。任务驱动式教学的前身就是“范例教学法”。它是以实用主义为哲学基础的一种教学方法。其特点是通过网络采取小组讨论和协作学习的模式,达到培养学生解决问题的能力。在教学的过程中,教师的主要任务是如何引导学生获取必要的信息去解决要完成的任务,课堂上教师可以将所学习的任务分解成若干个小问题,让学生带着问题去思考解决问题的方式和方法,从多角度地找出解决所要完成任务的答案。此方法的根本是以学生为主体,教师为辅助,要在实践中应用旧知识去发现新知识,让学生在独立完成项目的过程中解决新问题,最后达到提高应用的技能为目的,它在实际的教学过程中取得了一定的效果[8,10]。
教师充分利用网络开展课堂教学,能有效地冲破课本现有知识的束缚,给学生提供了广阔的学习空间环境,从而激发学生的学习兴趣,提高他们的学习效率。学生通过老师提出的问题,通过动手操作以及必要的信息技术帮助系统进行自主探索,在完成特定任务的过程中形成了一定的创造欲望和创造能力,在充分发挥他们自主能动性的同时提高他们分析问题和解决问题的能力。这样,不仅激发了学生作为学习主体的积极性与主动性,而且也充分发挥了教师在教学过程中的主导地位和作用。
2.2 面向过程与面向对象的程序设计
程序设计是VFP编程的核心和和灵魂,在搞清楚语法规则和函数的基础进行程序设计,而程序设计本身的目的是解决实际问题,我们就应用而编程,为应用而进行程序设计。课堂上老师要从简单易理解的程序入手进行讲解,引导学生在编程上入门,要让其感受到程序设计并非想象那么难。在结构化程序设计讲解时,结构是重点,要同学们在结构上分清顺序结构、选择结构、循环结构;顺序结构和选择结构容易理解和掌握,而循环结构在理解上较为困难,特别是多重循环[9]。为了使学生更好地掌握和理解循环的算法和特点,教学中要使用一些典型例题作为分析和讲解的重点,例如累加器在求和上的应用,累积器在阶乘计算上的应用等。对于每一种结构,都由数据输入、数据处理、数据输出3个部分组成,程序设计时主要是数据处理部分。
面向过程是结构化程序设计思想的体现,而面向对象是以模块化思想为基础,过程与结构相对应,对象与模块对应。数据库技术与面向对象技术的有机结合是数据库管理系统发展的方向,面向对象的讲解时以表单为重点,以模块为中心,课堂上要让学生将编程转化为模块的代码实现,并为用户提供了友好的人机界面。在讲解面向过程与面向对象的程序设计的区别时,为了让学生快速理解并掌握,可对同一问题采用两种方法进行程序设计,以此来区分面向过程与面向对象的程序设计思想。例如:求圆的周长和面积,用两种方法设计与实现。
面向过程的程序设计方法:
Clear
INPUT“请输入圆半径:”TO R
S=PI()*R*R
L=2*PI()*R
?“圆的面积为:”,S
?“圆的周长为:”,L
RETURN
面向对象的程序设计方法(图1),“计算”按钮的代码如下:
R=THISFORM.TEXT1.TEXT
THISFORM.LABEL4.Caption=PI()*VAL(R)*VAL(R)
THISFORM.LABEL5.Caption=2*PI()*VAL(R)
图1 面向对象方法求圆的周长和面积图
2.3 讲解形象生动,化抽象为具体
2.3.1 变量互换的抽象化
程序设计的难点在于概念的理解,特别是一些非常抽象的概念,课堂上老师讲解时要形象与生动,把抽象的概念具体化,形象化的思维教学法引导学生来思考程序设计的理念是非常重要的[10]。不仅在于课堂上的理解,同时也加深了学生的记忆,从而有效地避免了死记硬背的现象。讲述过程中要多以图例或实际演示来描述问题和算法,这样学生不仅对学习编程感兴趣,也容易理解和掌握。例如讲解两变量进行交换,有的同学误解为:A=B,B=A,实现了两变量的交换,而这是一种错误的理解,要形象化地描述,课堂上演示时,用一个实例进行赋值:A=2,B=3,按上述方法执行后,结果显示为:A=3,B=3,两变量并未互换。此时,为了化抽象为具体,两个变量可以形象化地比喻为两个容器,容器中盛满了水,要让容器A的水倒入容器B,必须找一个空的容器,这一空容器就相当于中间变量T,从而实现了变量的交换。同时也给出图2所示,也可以形象地表示两个变量的互换。那么在VFP程序设计时,采用以下方法完成变量间的交换:T=A,A=B,B=T。
图2 两变量互换示意图
2.3.2 =与==比较的具体化
精确比较与非精确比较是VFP程序设计的难点,不少同学在理解时,经常不知如何进行,老师在讲解时,要讲述比较的规则:数值型和货币型数据根据其代数值的大小进行比较;逻辑型数据比较时,.T.比.F.大;日期型和日期时间型数据进行比较时,越新的日期或时间越大;当运算对象为字符型时,可用命令SET EXACT ON/OFF来设置“=”是否为精确比较。在非精确比较时,在关系表达式的格式中,只要后一个表达式是前一个表达式的前缀,其结果便为真。此时的难点在于字符比较,具体比较时按下述方法阐述:
SET EXACTOFF:只要右边的字符串与左边字符串的前面部分内容相匹配,即为真;也就是说字符串的比较以右边的字符串为目标,右字符串结束即终止比较。
SET EXACTON:比较到两个字符串全部结束,在较短字符串的尾部加上若干个空格,使两个字符串的长度相等,然后进行比较。
最后归纳总结时,两者的相同点是当运算的两个表达式的数据类型是数值型或日期型时,精确比较与非精确比较的结果完全相同。两者之间的区别是当两个表达式的数据类型是字符串型时,=与==对字符串进行比较时,返回的结果就有所不同了。当两个字符串进行比较时,==表示“等同于”,此时用于精确比较,只有当两个字符串完全一样时(包括空格以及各字符的位置完全相同),运算结果为逻辑真.T.,否则结果为逻辑假.F.。
例:store‘XYZ’to a
Store‘XYZ’to b
a==b,trim(a)==b&&trim()函数的功能是删除尾部空格
比较的结果为:.F.,.T.。
用单等号“=”比较两个字符串时,运算结果与VFP系统的设置有关。字符串是否精确匹配可以在命令窗口中执行“set exact on|off”命令进行设置,也可从系统的菜单“工具”“选项”“数据”选项卡进行设置。
(1)默认的系统设置是off状态。此时“=”表示“左相等”。如果<表达式2>与<表达式1>的左边部分内容能够匹配,即结果为.T.。字符串的比较以<表达式2>字符串为目标,<表达式2>字符串比较结束即终止。
例:store‘XYZ’to a
Store‘XYZ’to b
Store“”to c
a=b,b=a,a=c,b=c,a==b,b==a
结果为:.T.,.F.,.T.,.T.,.F.,.F.。
(2)当系统处于“set exact on”状态时,要比较到两个字符串全部结束才终止,如果两字符串长度不相等时,首先在较短字符串的尾部加上若干个空格,使两个字符串的长度相同,然后再进行字符串的精确比较。
例:store‘XYZ’to a
Store‘XYZ’to b
a=b,b=a,a==b,b==a
结果为:.T.,.T.,.F.,.F.。
2.4 加强实践教学,重视动手能力培养
VFP程序设计是一门操作性较强的课程,只有通过实践操作,才能让学生真正消化、理解并掌握课堂上的教学内容,以提高他们运用编程的手段来解决实际问题的能力,因此,教师应重视和加强实践教学环节,实践教学不仅是验证课堂内容的一个环节,同时也是加强学生学习编程兴趣的手段[11,12]。VFP程序设计这门课程的命令较多,如果通过死记硬背去完成记忆是相当困难的,只有在实践中加强练习,通过理解去执行记忆。实验中老师要精心选择实验内容,把每一次实验的任务分解成多个小目标,让学生一步一个目标地实践操作,在完成分目标的同时,达到了实践教学的目的。比如让学生做一个学生成绩管理系统,或者一个人事档案管理系统等等,这不但锻炼了学生的应用编程能力,更重要的是锻炼了程序设计的能力。在学习的过程中要求学生学会运用MSDN Library帮助系统,来解决和提高学生的自学编程能力和解决问题能力。对于实践教学中学生提出的问题,老师要及时解答,以了解实践教学中存在的问题,对于普遍存在的问题,在课堂上集中解答。
3 结束语
VFP程序设计是一门理论和实践相互关联的课程,教师要构建旨在培养学生创新精神和实践能力的学习方式和教学方式,注重并加强培养学生良好的思维能力。要想在课堂上提高VFP程序设计这一门课程的教学质量,教学过程中需要正确的教学指导思想、完善的理论与实践相结合的教学理念、先进的教学方法和现代化的教学手段以及科学合理的考核办法。VFP程序设计教学必须以提高学生的编程的积极性和培养学生的编程应用能力和创新能力为目标,既要改革和完善创新课堂教学方法又要加强实践环节教学,还需要建立方便学生学习和教师教学的网络课程教学平台,从而保证了课程的教学质量。通过VFP程序设计的教学改革,虽然取得了较大的成效,但教与学要进行良好地互动,让每一个参与者都能有所收获,以取得更好的成绩,仍需要我们的教育工作者在今后的教学中不断加强实践和努力探索。
[1]程学先,李振立,王莉,等.Visual FoxPro程序设计[M].北京:清华大学出版社,2006.
[2]王桂红.非计算机专业VFP程序设计语言教学实践与探索[J].农业网络信息,2005,(7):45-47.
[3]梁洁.VisualFoxpro程序设计基础[M].北京:高等教育出版社,2007.
[4]赵忠孝.数据库及Visual Foxpro应用[M].北京:高等教育出版社,2004.
[5]李尊朝.中文版Visual Foxpro编程指南[M].西安:西安交通大学出版社,1997.
[6]陈荣春,薛立新.VFP程序设计课程案例教学设计及实施[J].职业技术教育,2007,(23):79-80.
[7]施佺,陈建平.“VFP程序设计”课堂教学的实践与探索[J].电气电子教学学报,2005,(3):33-36.
[8]宁伟,于永春,杜明.任务驱动教学法在计算机教学中的探索与实践[J].能源技术与管理,2006,(1):62-65.
[9]丁玉萍,王艳.独立学院经管类VFP课程教学改革的实践与探索[J].计算机教育,2007,(10):88-89.
[10]李盛瑜,张小莉.基于网络环境的《大学计算机基础》分级教学改革与实践[J].重庆工商大学学报:自然科学版:2011,(1):94-98.
[11]王应解.在本科教学中引入项目开发的探索与实践[J].高等教育研究,2007,24(3):47-50.