我在进行 VB 程序设计教学过程中的几点尝试
摘要:在程序设计教学过程中,如何解决程序设计本身枯燥、难懂这个问题,找到一条比
较新颖的教学方式,一直是广大计算机教师颇感兴趣的课题。本文结合实例展示了体悟教
学法、问题教学法和条件迁移教学法在程序设计教学过程中的一些具体运用,并对在程序
设计过程中如何培养同学们的逻辑思维能力和抽象思维能力给予了适当的关注。
关键词:程序设计 对象 教学法 能力
国家新的《基础教育课程改革纲要(试行)》指出:“改变课程过于注重知识的传授
的倾向,强调形成积极主动的学习态度,使获得基础知识和基本技能的过程同时成为学会
学习和形成正确价值观的过程。”。我们从整体上来理解这段话,它强调课程的功能要从
单纯注重知识的传授转变为体现引导学生学会学习、学会做人、学会生存;对学生的关注
要从更多的关注学习结果转变为也要关注学生学习的过程和方法。根据这个原则我在对本
界高一年级同学组织有关 VB 程序设计方面的课堂教学时,做了以下几点尝试:
一、打破课本原有以知识的逻辑结构体系为顺序组织课堂教学的方式,以学生的已有
知识为基础,按照学生的认知规律,遵循先易后难、先具体后抽象的原则,通过观看、模
仿、理解、总结、提高五个阶段进行教学。我校高中《信息技术课》课本中有关 VB 程序
设计方面的教学内容,象大多数教授程序设计的课本一样,一开始介绍诸如算法、流程图
的画法、对象、对象的属性、方法和事件等等一系列的在程序设计中比较抽象难懂的概念
,然后介绍程序的建立和运行,最后介绍 VB 语言基础、分支结构、循环结构和数组。从
知识的逻辑结构体系考察,这样安排无可非议,但从学生的认知规律考量,我认为把一些
难懂的、晦湿的抽象的东西放在开始来学习有两点弊端,(1)学生在毫无知识背景的前
提下,要完全理解这些概念比较困难;(2)容易伤害同学们学习编程的积极性。受到一
些语言知识书籍从介绍一个小实例开始来引入的启发,我决定对本界高一学生开始不讲基
本概念,而是和我一起做,在做中由同学们自己在直观上先去体悟这些概念,然后在时机
成熟时再和同学们一起归纳总结。所以在组织本章课堂教学时,我采用了自然过渡、类比
等方法,和同学们首先一起探讨了 VB 软件的打开、程序的建立和保存、软件界面等方面
的知识,由同学们自己探索着找出 VB 操作和以前所学软件的异同点。由于同学们已经学
过 Word 应用软件,对这些相似的操作已非常熟悉,所以操作起来得心应手。然后,我给
出一个求任意两个整数的加法实例,让同学们和我一起做:(1)在当前窗体内添加了三
个标签、三个文本框和两个命令按钮;(2)按照如下表格设计各对象的属性:
缺省的对象名 设置的对象名 属性名 设置值
Form1
frmadd
Caption 求和
Label1
lbla
Caption 输入被加数
Label2
lblb
Caption 输入加数
Label3
lblc
Caption 和为:
Text1 txta Text (空白)
Text2 txtb Text (空白)
Text3 txtc Text (空白)
Command1 cmdadd Caption 计算
Command2 cmdend Caption 结束
(3)在命令按钮“cmdadd”上双击鼠标左键,输入如下程序:
=val()+val()
关闭程序编辑窗口,回到界面设计界面,在命令按钮“cmdend”上双击鼠标左键,输
入如下语句:
end
关闭程序编辑窗口,按 F5 键运行程序。
在操作的过程当中,教师不用讲解每件事的含义,同学通过完成任务很自然的就会体
会出什么是对象,什么是对象的属性和方法,如何在界面内添加对象、设置事件等等。在
此基础上,教师适当的引导同学归纳总结一下,一切都迎刃而解。
按照学生的认知规律组织教学和重视同学们的知识结构体系的建立并不是相互对立的
,相反,最终同学们能否在头脑中建立完整的学科体系对于其本身能否对所学的内容有比
较深刻的理解起着极为关键的作用,问题的关键在于这种学科结构体系的建立是通过外部
手段强加给他们的,还是在同学学习的过程中自然形成的。
二、注意通过一系列问题的引动,来激发学生的学习主动性和加深对一些概念的理解
。有一些概念之间的差别和程序的设计步骤如果只通过教师讲述,同学们在字面上可以接
受,但在理解深度上往往难以达到令人满意的效果,如果能设计出一系列问题,让同学们
在实践和解决问题的过程中自己去体验,情况将完全是另一个样子。比如,为了让同学切
身感受整型变量、单精度变量、双精度变量所能保存数据范围的不同,我为同学们设计了
一个如下的实验过程,首先让同学们模仿求 1 到 50 之间所有自然数的方法,在窗体的
Click 事件中编写一段程序,求 5!,通过实验,同学们很快编写好如下程序:
dim I as integer
dim x as integer
x=1
for I=1 to 5
x=x*I
next I
print “x=”;x
按 F5 键运行,得出 5!的正确结果。然后我让同学们把程序少许做一下修改,求 10
!,这时很多同学认为这还不是小菜一碟,迅速将程序修改为如下形式:
dim I as integer
dim x as integer
x=1
for I=1 to 10
x=x*I
next I
print “x=”;x
按 F5 键运行,结果同学们发现屏幕上并没有如预期想象的那样给出正确结果,而是
显示出一个错误对话框,含义为“数据溢出”,同学们百思不得其解。这时教师提示同学们
将程序做一点修改,把变量 X 定义为单精度,试试看运行情况如何:
dim I as integer
dim x as single
x=1
for I=1 to 10
x=x*I
next I
print “x=”;x
再按 F5 键运行,计算机给出正确结果,不过结果的表达方式发生了变化。教师要求
同学们再对程序做少许修改,求 100!:
dim I as integer
dim x as single
x=1
for I=1 to 100
x=x*I
next I
print “x=”;x
按 F5 键运行,同学们发现计算机又显示“数据溢出”。这时大家都猜测到问题可能又是
出在变量所定义的数据类型上,纷纷要求老师给出办法。教师要求同学们对程序再做一点
修改,把 X 定义为双精度变量:
dim I as integer
dim x as double
x=1
for I=1 to 100
x=x*I
next I
print “x=”;x
再按 F5 键运行,计算机给出正确结果,问题解决。到此为止,教师的教学目标已基
本达到。但为了进一步使同学们认识到计算机所能处理数据的范围和理论上我们所能处理
数据范围的区别,可以要求同学们试着用计算机求 10000!,此时大家发现 PC 计算机已
无计可施。在本例中,程序整体变化不大,占用时间也不多,但通过如此一个操作过程,
同学们对整型数据、单精度实型数据和双精度实型数据之间的区别一目了然。另外,由于
一切都要求同学们自己动手动脑设计,他们在操作过程中探究和解决问题的积极性、学习
的主观能动性得到了调动。
三、在教学过程中,注意通过在书本原有程序的基础上逐渐改变和增加条件的方法来
提高同学的综合编程能力。例如,同学们在学习 FOR……NEXT 循环时,书本内给出了一
段求前 100 项自然数和的程序。这段程序在同学们弄懂 FOR……NEXT 循环之后,理解起
来是并不困难的,为了提高同学们的编程能力,我要求同学们对原程序做如下几种变化:
(1)求 1 到 100 之间所有偶数的和,要求跳数为 2。
(2)求 1 到 100 之间所有偶数的和,要求跳数为 1。
(3)在程序运行过程中任意输入一个自然数 n,求 1 到 n 之间所有偶数的和。
这里第一小题和书本原程序相比难度不大,只要将循环的跳数改为 2 即可,在模仿的
前提下同学们就可以完成。第二小题增加了难度,在编程过程中,需要做两点变化,一要
将循环变量的变化范围变为从 1 到 50,二要修改循环语句中的通项,将循环语句变为
S=S+2*I。要做到这些变化,需要同学们对 for……next 有比较深刻的理解。第三小题在
第二小题的基础上又增加了一点要求,即循环变量的终止值需用变量 n 来表示,二需要在
程序的前面增加一条定义变量 n 的语句,三需要使用 InputBox 语句在程序运行的过程中
将终止值输入给变量 n,这三点要求同学们能够把以前所学的知识综合起来运用,对刚刚
学习编程的高一同学来说这还是有一定难度的,但通过练习同学们的综合编程能力可以得
到训练提高。
四、引导同学们在学习编程的过程中养成运用动态思维判断程序是否正确的习惯,这
种习惯的养成,对培养学生的逻辑思维能力和抽象思维能力有非常重要的作用。为了达到
这个目的,在程序设计教学中可以有意识的在以下几个方面给予比较多的关注:(1)对
于一些比较简单的程序要求同学们直接写出结果;(2)对于有循环或判断结构的程序,
要求同学们根据条件一步步向前走,把循环过程写下来;(3)故意给出一些错误的程序
,给同学们设计一些陷阱,让同学们自己去发现;(4)让同学们把书本中程序编写错了
的地方改正过来。
总之,教学有法,教无定法,只要教学得法。高中程序设计教学的主要目标是为了使
同学们了解现代程序设计理论中的面向对象编程和结构化程序设计等基本思想,培养现代
程序设计过程中所需要的一些基本能力。围绕着这个目标,在保护同学学习积极性的前提
下,按照同学们的认知规律组织教学,一切可行的教学方法都可以在我们的教学过程中加
以运用。
参考文献:
1、董南萍 《关于学生程序设计能力的培养》 《辽宁教育学院学报》 1999 年 9 月
16
卷 5 期。
2、李春香 《高级语言程序设计课教法浅探》 《河北广播电视大学学报》 2000 年
3
月 5 卷 1 期。
3、罗小平 《高级语言程序设计中若干重要细节的设施》 《广东农工商管理干部学
院
学报》 2000 年 11 月 16 卷 4 期。