首页 > 范文大全 > 正文

VFP语言学习难点初探

开篇:润墨网以专业的文秘视角,为您筛选了一篇VFP语言学习难点初探范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:结合自身教学实践,对vfp学习过程的所遇到的几个学习难点进行分析。以便能更好地提高学生学习语言程序设计课程的能力;也可为从事计算机技术基础教学与研究的教师提供参考。

关键词:Visual FoxPro;教学;难点

中图分类号:TP311 文献标识码:A文章编号:1009-3044(2009)33-9479-03

On the Analysis of Learning Difficulties of Visual FoxPro

ZHENG Zong-liang1, CHENG Xin-wen2

(puter and Information Technology Institute of Liaoning Normal University, Dalian 116029, China; 2.Liaoning College of Foreign Trade & Economic Relations, Dalian 116052, China)

Abstract: On the basis of teaching practice of the author, this paper focuses upon the detailed analysis of some learning difficulties of Visual FoxPro so as to improve the students' capacity for learning program design and provide a reference for the teachers who are engaged in the teaching practice and studying of computer science.

Key words: visual foxPro; teaching practice; learning difficulties

对于新时代的大学生来说,掌握一门计算机程序设计语言是必备的一项基本技能。目前在各高校的非计算机专业都普遍开设了计算程序设计语言作为一门必修的公共课程。我院文科”高级语言程序设计”课程是以VFP语言作为指定语言的。但在VFP课程教学中,许多学生都认为它涉及的概念多较复杂、规则繁多、使用灵活、容易出错,且程序设计语言课程逻辑性又很强,学生不能很好地理解算法,编写程序也很困难,教师教学和学生学习都感到困难,并在不同程度上产生畏难心理。因此如何解决VFP课程在学习过程中所设及到的知识难点,进一步提高学习效果是非常必要的。

1 VFP知识几个难点

1.1 字符串比较

1.1.1 VFP中字符型数据进行比较

系统对字符串中的字符按从左到右的序对应进行比较,一旦发现两个对应字不同,则按它们的排序序列比较出两个符串的大小。在VFP中字符的排序序列有三种:1) machine(机器):西文字符按ASC值排序,中文的一级汉字按拼音次序排。2) PinYin(拼音):中文按拼音次序序,西文字符大写字母大于小写字母。3) Stroke(笔画):中、西文都按笔画多少排序。在中文VFP中,字符默认的排序序列为PinYin(拼音)。而其它许多高级语言按ASCII码来比较的。故在VF中默认情况下大写字母大于小小字母。“A”是大于“a”字符,要改变字符排序序列,可选用工具菜单/选项命令进行设置。

1.1.2 字符串精确比较

字符比较结果还受精确比较开关影响,可用SET EXCACT ON/OFF命令来打开或关闭。在默认情况下,比较两个字符串是否相等,VFP采用的不精确比较。当在不精确比较状态时,只要两个字符串满足下面两个条件结果就相等:一是两个字符串最左边的字符相同;二是第一个字符串长度大于或等于第二个的长度。根据规则可知:?"郑老师"="郑老",结果为.T.;而?"郑老"="郑老师",结果为.F.。同时要注意特别情况:空串“ ”包含于任何字符串中,且长度为0,所以?"ab"=" "结果为.T.;?" "="ab"结果为.F.。

1.1.3 字符串的模糊比较问题

字符串的模糊比较可用like()函数、$运算符、AT()函数等方法来解决。如姓名中含有“小”可以写成:“小”$姓名或AT(“小”,姓名)>0来实现。而LIKE函的格式LIKE(cExpression1, cExpression2),其中 cExpression1 中可以包含通配符*和?。问号 (?) 可与任何单个字符相匹配,星号(*) 可与任意数目的字符相匹配。只有在 cExpression1 与 cExpression2 中的字符逐个匹配的情况下,LIKE() 函数才返回“真”(.T.)。如?like(“郑*”,姓名)是判断是否姓郑。但在SQL语句中的like运算符不能用在一般命令的for条件中,而通配符变为_和%,判断是否姓郑可写成:姓名 like “郑%”。

1.2 变量的作用域问题

在VFP程序设计中,同一个变量名由于作用域不同变量有不同的作用域和生存期,因涉及的知识点比较多,使用的环境和场合也比较复杂,这对于初学者往往是一个不容易理解。的作用归纳起来,大致有三个方面:

1.2.1 变量的作用域

变量的作用域可用变LOCAL、PRIVATE、PUBUC命令强制规定作用域。LOCAL用于定义局部变量,局部变量只在本模块中有效;当建立它的模块程序运行结束时,局部变量自动释放。全局变量和局部变量初值为逻辑假。局部变量要先建立后使用。PRIVATE用于定义私有变量,变量的作用域为本模块中以及下级模块中有效; PUBUC用于定义全局变量,在本次程序运行期间,变量在所有模块中都有效。当大范围变量和小范围变量同名时,在小范围内,小范围变量优先。没经过申明的变量,约定为私有变量。下面的例子是来说明它们之间的关系。

Main.PRG

K1=10

K2=20

DO SuB

?K1,K2

RETURN

PRECEDUER SUB &&过程sub

PRIV K1

K1=K2+10

K2=K1+10

?K1,K2

RETURN

在主程序中,k1,k2没经过说明,那么它是私有类型变量,在本模块及下级模块中有效,所以在子过程SUB中有效,但在SUB过程中重新显示定义K1,那么相当于定义了一个作用范围更小的小范围变量,它将屏蔽主程序中的K1的值,所以在SUB过程中输出为:30,40;而回到主程序输出为:10,40。

1.2.2 参数传递

考试中要求学生掌握的过程主要有Sub过程和Function过程。Sub过程不返回值,Function过程必须由函数名返回一个值。在调用过程时,主调过程的实参以一定的形式传递给被调过程的形参,完成实参与形参的结合,然后执行被调过程体。经过被调过程的处理,又将所得结果返回给主调过程。在VFP中,参数的传递有传值和传址两种形式。

1) 传值方式

当调用一个过程时,将实参的值复制给形参,实参与形参断开联系。过程调用结束时,形参占用的存储单元被释放,因此对形参的任何操作都不会影响到实参。传值方式是“单向”的,形参的值不能返回给实参。

2) 传地址方式

如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们赋值给相应的形参变量。这种情形称为按值传递。如果实参是变量,那么传递的将不是变量的值,而是变量的地址。在模块程序中对形参变量值的改变,同样是对实参变量值的改变。这叫按引用传递。下面的例子是来说明它们之间的关系。

A=3

B=5

DO PP WITH(A), B

?A,B

RETURN

* PP.PRG

PARAMETER X,Y

Y=X*Y

X=X+5

RETURN

这个例子在主过程调用过程中的两个实参(A)和B,由于B是简单变量时,VFP在分配形参Y时和实参B共用内存单元(传地址),所以在子过程PP的变化将影响实参变量B,而形参X,由于实参不是简单变量,在分配形参时另外分配内存单元,所以A和X只是单向传值,没有关联,因此在主程序中输出为3,15。

1.2.3 内存变量和字段变量同名时

字段变量的类型是在建立表文件的结构时确定的,一旦定义了字段变量的类型,那么赋值的数据类与变量类型一致,由于改变时不能用运算"="和store 语句直接赋值。内存变量是用内存单元存储的变量,它的类型与之比较就有一定的随意性,它只能保存最后一次更新的值。当内存变量和字段变量同名是,字段变量优先。但用"="和store 语句改变的变量例外,如下例子:

设职员表已在当前工作区打开,当前记录的“姓名”字段值为“张三”;字段宽度为4,执行如下命令:

姓名=姓名+"你好"

?姓名

结果:“张三”,并不是“张三你好”因为当存在字段变量“姓名”时,字段变量优选,所以输出的是字段变量“姓名”的值,而字段变量不能使用“=”来改变其值,所以,姓名=姓名+“你好”语句改变的是内存变量“姓名”为字段变量姓名的值“张三"+"你好”,结果是“张三你好”,可用?m.姓名来输出内存变量的值。

2 结束语

VFP在学习过程中所遇到的难点不仅仅涉及到这些。本文的目的是通过对上述知识点难点的介绍,起到举一反三的效果,从而提高同学们学习这门语言的信心,增强在学习过程中解决问题的方法。

参考文献:

[1] 匡松,刘容.余平.Visual FoxPro面向对象程序设计[M].成都:西南交通大学出版社,2006.

[2] 王瑛.数据库管理系统VFP的教学探索[J].天水师范学院学报,2005,(5).

[3] 鲁俊生.VFP程序设计简明教程[M].北京:电子科技大学出版社,2006.