本节内容简介
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
因篇幅问题不能全部显示,请点此查看更多更全内容