• 教师论文
  • 您当前位置:首页 > 教师论文

浅谈VF中记录指针移动的教学方法

发布日期:2013-3-4 19:55:09    浏览:46438

湘北女子职业学校   谭雄

(此论文获省级论文竞赛一等奖)

 

[  ]

Visual FoxPro6.0的教学中记录指针位置的移动是一个重点,也是个难点,本文从记录定位命令和非记录定位命令引起记录指针位置移动这两个方面探讨了记录指针移动教学的方法,并对其作了相应的小结,希望能达到“抛砖引玉”的作用。

 

[关键词]

Visual FoxPro6.0 二维表   记录 指针 教学

 

[  ]

数据库Visual FoxPro6.0中有关.DBF文件的二维表操作,要求学生掌握的主要有三类,一类是表结构操作,另一类是表记录操作,以及两者结合的操作。Visual FoxPro6.0基本命令中的大部份命令都与表记录操作有关,而表记录的操作将必然带来记录指针位置的移动,由此可见记录指针位置移动的问题在整个Visual FoxPro6.0教学中占有非常重要的地位。不过学生在学习过程中,往往对记录指针在操作中产生的移动重视不够,容易造成操作失败或操作失误。笔者结合在Visual FoxPro6.0教学中的一些体会,谈谈在Visual FoxPro6.0教学中有关记录指针移动的教学方法。

 

一、二维表记录定位命令引起记录指针的移动

记录定位是指将记录指针指向二维表文件内的某个记录,记录指针的值等于该记录的记录号。实现记录定位有两类命今:

1.绝对定位命令

命令格式

命令含义

GO/GOTO  TOP

将记录指针指向文件的顶部

TOP(第一条记录)

GO/GOTO  BOTTOM

将记录指针指向文件的尾部

BOTTOM(最后一条记录)

GO/GOTO  <数学表达式>

将记录指针指向记录号等于

<数学表达式>的值的记录

<数学表达式>

将记录指针指向记录号等于

<数学表达式>的值的记录

 

2. 相对定位命令

命令格式

命令含义

skip <数学表达式>

将记录指针从当前位置向前或向后移动,移过的记录数为<数学表达式>的值。<数学表达式>为正数,则记录指针向后移动,<数学表达式>为负数,则记录指针向前移动

skip

等于skip 1,将记录指针从当前位置

向后移动1位(指向下一条记录)

 

二、二维表非记录定位命令引起记录指针的移动

一般说来,学生对二维表记录定位命令引起记录指针的移动,是能够理解和掌握的;但对不是由于定位命令而造成记录指针移动,却较难形成概念,尤其Visual FoxPro6.0 操作中的基本命令大部分由它的缺省形式出现,虽然显得比较简练实用,但学生对每条Visual FoxPro6.0命令范围的缺省值及引起的记录指针移动的学习感到较为困难,所以经常容易犯一些由于记录指针发生移动而产生的错误。

例如,要求在teacher(教师基本情况表)库文件中的尾部添入一条空记录,在该条空记录中相应的字段(月收入)中填入月收入的平均数,在姓名字段填入“平均收入”,有的学生根据题意一步步进行操作:

USE  TEACHER

APPEND  BLANK

average 月收入to ysr

replace 姓名 with平均收入, 月收入with ysr

但屏幕却显示:0 记录被替换。很明显操作失败了,这是为什么呢?仔细分析一下,原来执行到第三条命令后,记录定位在库底部(EOF)。因为第三条命令中缺省了范围子句,缺省的默认值为 ALL,指针自然要定位在库的底部(EOF)。要用第四条命令去替换不是记录的库底部,自然要失败。

同样上述四条命令,只要将第二条命令和第三条命令交换位置,操作就能成功。即:

use  teacher

average 月收入to ysr

APPEND  BLANK

replace  姓名 with“平均收入”, 月收入with ysr

这又是什么原因?因为虽然第二条命令同样要将记录指针移到库底部。但是第三条命令却正好定位在最后一条空记录上。接下来的替换,虽然替换的命令也是范围缺省的形式,它的默认值却是当前记录。替换是针对这条空记录,当然会获得成功。

在教学中可以指导学生重复上述两种不同操作程序,要求学生在命令执行过程当中要仔细注意观察命令行记录项中当前记录的变化,并仔细琢磨第一种程序和第二种程序的差异。为了使问题更进一步得到探讨,可继续提出问题,如用第一种程序要完成上述任务,可以办到吗?学生认真观察当前记录的变化并仔细琢磨后自然会想到,在执行命令. average 月收入to ysr后,再插入一条重新定位命令 go bottom 即可。

另外,学生往往误认为只有显示当前记录,才能知道记录指针位置。但每次用 display 显示当前记录或者用记录号函数来显示当前记录号,既没有必要,有时也不现实。为了克服这方面缺陷,教师可以指导学生在每次操作后,利用状态栏来观察,既不需要进行任何操作,又一目了然,同时可以培养学生的观察能力。但在一般教材当中,很少涉及状态栏的介绍,实际上状态栏中的记录项是观察记录指针移动最好位置,该项由两部份组成,分子代表记录指针位置。分母指示的是当前库总记录数,如2/30指整个库文件的记录总数为30条,当前记录指针指在第2条。

利用状态栏来观察记录指针,有它的优点,但也有它的局限性,例如在程序方式下一般就难使用。所以必须在观察状态栏的基础上,不断总结,找出不是由于定位命令而造成记录指针移动规律。笔者认为其规律如下:

1.范围子句一般有四种基本形式,每种形式造成记录指针移动是有规律的。可以列表如下:

范围

操作后记录指针位置

ALL

EOF(库底部)

RECORD  n

N

NEXT    N

RECNO()+N-1)(原记录+N-1条)

REST

EOF(库底部)

2. Visual FoxPro命令中常有范围子句缺省的情况发生,可以列表如下:

默认方式

常见命令

ALL

LISTCOUNTAVERAGESUMSORTCOPY

当前记录

DISPLAYREPLACEDELETERECALL

范围子句缺省的默认值,只有在不断操作中进行默记才能达到熟练的掌握。

3.条件子句也会影响记录指针移动。这主要是在范围子句缺省情况下,范围另有默认值,默认范围与条件命令选择有关。选 FOR 命令范围默认为 ALL,选 WHILE 则默认为REST,并且要注意使用WHILE时,一旦遇到不满足条件的情况操作就会停止。

4.个别命令在命令执行后,记录指针位置与范围子句的关系有点不同。如LOCATE命令执行后,如找到满足条件记录,则记录指针是停留在指定范围内满足条件的第一条记录上;如找不到则指向范围末。因此虽然LIST LOCATE的范围的缺省都是默认为 ALL,但是 LIST FOR ……和 LOCATE FOR ……这二条命令执行后记录指针的位置却是不一样。前者LIST FOR ……命令执行后记录指针的位置在 EOF LOCATE FOR ……在找到时,是记录指针指向满足条件的第一条记录上,找不到记录指针才指向 EOF

英国的斯宾赛在《教育记》中说“在教育中应该尽量鼓励个人发展的过程,应该引导学生自己进行探讨,自己去推论,给他们讲的要少些,而引导他们去发现则应该尽量多些。”;因此,教师必须要求学生通过多次操作后自行总结,可加以必要指导。“瓜熟蒂自落,水到渠必成”,学生总结出上述规律后,对Visual FoxPro6.0命令执行后记录指针产生的移动就会有一个比较清楚认识,因而也就不会再对记录指针移动感到不可捉摸,也就不易犯记录指针移动而造成的错误了。

有位心理学家说“我们体验到,在那些使人困惑的情境中,我们被引起的动机最为强烈。”因此,笔者认为在记录指针移动的教学中,可由发现的指针移动产生的问题开始,主要是通过积极引导学生进行观察、分析、比较,从中找到记录指针移动的规律并加以总结、归纳。这样不仅可使学生学好Visual FoxPro6.0 ,更重要是鼓励学生在学习中善于发现问题,善于思考,善于找到规律,不仅授人以鱼,而且还授人以渔! 

 

[参考文献]

1、王利.全国计算机等级考试二级教程---Visual FoxPro程序设计.高等教育出版社.2001

2、董世方. Visual FoxPro6.0数据库应用.中华工商联合出版社.2006

3、王高平、白丽嫒. VisualFoxpro数据库应用教程.黄河水利出版社.2003