您的当前位置:首页正文

VFP的基本运算

来源:步旅网
VFP的基本数据运算

本节内容简介

VFP程序设计或数据库操作中经常要进行数据的运算。本节介绍VFP的算术、字符、日期、关系及逻辑运算符,各种运算符的优先级。利用常量、变量、函数通过运算符组成的各种表达式的运算。 学习目标:

1、学会各种运算符的意义、运算规则 2、掌握运算符的优先级顺序

3、理解判断表达式的合法性及运算结果 4、会将一般的数学表达式转换成VFP表达式 学习重点与难点: 1、运算符的优先级 2、表达式的运算

运算符及优先级

VFP

提供了 五类运算符,在运算符两边参加运算的对象,必须有相同的类型。

各种运算符都有不同的优先级,与普通的数学一样,可以通过“( )”来改变优先级顺序。

(1)数值运算符:

运算符 **或^ *或/ % +或- 含义 乘方 乘或除 取余 加或减 实例 2**3=8 2*4=8 10 % 3=1 6-5=1 优先级 经数值运算后的结果仍为数值

1

举例:?14/7+3^2-abs(-5) && 显示6.00 ?(4-3)*(12/exp(2)) && 显示1.6240 ?15%4+1 && 显示4

(2)字符运算符

字符运算符有如下3种:

+ : 字符串完全连接。将两个字符串首尾相接连成一个新字符串。

- : 字符串不完全连接。将运算符前的字符串尾部空格移到运算符后的字符串尾部,再连成一 个新的字符串。

$ : 字符串包含运算。若运算符前的字符串包含在运算符后的字符串中,运算结果为逻辑真;否则,运算结果为逻辑假。(注意其运算结果为逻辑值,而不是字符串)

$运算的优先级在字符运算中最高,+运算与-运算同级。

(3)关系运算符

关系表达式用于对同类型的数据进行比较,其运算结果为逻辑值。

运算符 < > = <>或#或= <= >= ==

含义 小于 大于等于 等于 不等于 小于等于 大于等于 精确等于 实例 3<4=.f. \"BA\">\"A\"=.t. \"ABC\"=\"AB\"=.T. \"上海\"<>\"上饶\"=.T. 3<=3=.T. \"BA\">=\"A\"=.t. \"ABC\"==\"AB\"=.F. 进行关系运算时,参与比较的数据类型必须相同。数值型数据按其数值大小进行比较;字符型数据按字符的ASCII码值或汉字机内码进行比较;日期和时间型数据按日期时间的前(小)后(大)进行比较。

==与=两种运算符在用于字符串比较时是有区别的,==要求参与比较的两个字符串必须完全相同,才返回.T.,否则返回.F.;而=则不然,它以右边的字符串为基准,从第一个字符起进行比较,只要左边前几个字符与比较符右边的字符串相同,就返回.T.。所以,=通常称为模糊比较;而==称为精确比较。

2

(4)逻辑运算符

逻辑运算通常与关系运算相结合,以构成复杂的条件运算。逻辑运算符有3种,按优先级别从高到低排列如下:

.NOT.或! 非运算(对.NOT. 后的逻辑值进行取反)

.AND. 与运算(仅当运算符两边的值全为逻辑真时,运算结果才为真) .OR. 或运算(仅当运算符两边的值全为逻辑假时,运算结果才为假)

各种逻辑运算的规则如下表所示:

.NOT. A .T. .T. .F. .F. A .F. .F. .T. .T. B .F. .T. .F. .T. A .AND. B .F. .F. .F. .T. A .OR. B .F. .T. .T. .T. 以上几类运算符是可以综合使用的,其之间同样也存在优先顺序。

优先级别从高到低依次为:算术运算符(或字符运算符)、关系运算符、逻辑运算符。

(5)日期和时间运算符

日期和时间运算符只有两种:

+:一个日期类数据加上一个数值常量,其结果仍为日期

-:两个日期类数据相减(结果为数值)或日期类数据减去数值常量(结果仍为日期)

表达式

表达式是变量、操作符、常量、函数、字段名、控件以及属性的组合,求值结果为单个值。可以使用表达式对属性进行设置,为查询设置条件或定义计算结果字段。按 表达式的类型:

数值表达式:由算术操作符和数值型数据构成的表达式,其运算结果仍为数值型。 举例: ?14/7+3^2-abs(-5) && 显示6.00 ?(4-3)*(12/exp(2)) && 显示1.6240 ?15%4+1 && 显示4

字符表达式:由字符操作符和字符型数据构成的表达式,其运算结果一般为字符型,但$运算为逻辑值。

举例: ? 'Good ' + ' morning' && 显示 Good morning

3

? 'Good ' - ' morning' + ' Teacher' && 显示Good morning Teacher ? 'father' $ 'grandfather' && 显示.T. ? 'fer' $ 'grandfather' && 显示.F.

关系表达式:由关系运算符与相同类型的数据构成的表达式,其运算结果为逻辑型,比较成立返回.T.,否则返回.F.。 举例:nJsjcj=80

?nJsjcj>=60 && 显示.T. ?{01/01/92}>{01/01/95} && 显示.F ?\"opening\"==\"open\" && 显示.F. ?\"opening\"=\"open\" && 显示.T.

逻辑表达式:由逻辑操作符和逻辑型数据构成的表达式,其运算结果为逻辑型。 举例:?.NOT. (50>20) && 显示.F. ?(10>20) .AND. (3+1>2) && 显示.F. XSXB=\"女\" JSJCJ=80

?XSXB=\"男\" .OR. JSJCJ>60 && 显示.T.

日期表达式:由日期操作符和日期、时间型数据构成的表达式。 举例:SET STRICTDATE TO 0 && 关闭严格日期格式 dDate1={01/10/99}

?dDate1+4 && 显示01/14/99 ?dDate1-10 && 显示12/31/98 ?dDate1-dDate2 && 显示9

说明:Visual FoxPro将一个无效日期视为空日期。

本节总结

数据库操作与程序设计都不能离开数据的运算。VFP中可以进行各种类型的运算如数值运算、字符运算、日期时间运算、关系运算以及逻辑运算等等。每一类运算都有对应的运算符,不同的运算符有不同的运算规则。与数学运算类似,VFP的运算符也有优先级顺序。

数据运算是依靠表达式来实现的,VFP有数值表达式、字符表达式、关系表达式、日期与时间表达式和逻辑表达式。不同的表达式有不同的运算结果,不同类型的表达式通过关系运算与逻辑运算可以构成复杂的运算。

4

本节练习

第一题 在Visual FoxPro中,下面4个关于日期或日期时间的表达式中,错误的是_____。

A.{^2002.09.01

11:10:10:AM}-{^2001.09.01 11:10:10AM}

C.{^2002.02.01}+{^2001.02.01}

B.{^01/01/2002}+20

D.{^2002/02/01}-{^2001/02/01}

第二题 表达式 'abc>bc'的值是__________。

A..NULL. C. .f.

B.0 D..t.

第三题 表达式{06/18/99}-{06/15/99} 的值是__________。

A.3 C.0

B.4 D.不能计算

第四题 算术、关系、逻辑运算的优先顺序为_____。

A.关系、算术、逻辑 C.逻辑、关系、算术

第五题 表达式25%5的值是__________。

A.5 C.出错

B.0 D.125

B.算术、关系、逻辑 D.算术、逻辑、关系

第六题 设XB为某表中的字符型字段,其宽度为2,则与XB=\"男\".OR.XB=\"女\"等价的表达式为__________。

A.XB$\"男女\"

C.AT(XB,\"男\女\")

B.IN(XB, \"男\女\") D.ATC(XB,\"男\女\")

第七题 在.NOT.(SQR(B)>A+B .AND. B-A = 4) 表达式中,最后运算的是_____。

A.SQR

C.AND

B.+ D.NOT

第七题 已知n=\"1\则表达式x&n&m的值为__________。 A.X12 C.good

1B 2C 3A 4B 5B 6A 7D 8C

5

B.12

D.good12

因篇幅问题不能全部显示,请点此查看更多更全内容