VFP的基本运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VFP的基本数据运算
本节内容简介
VFP程序设计或数据库操作中经常要进行数据的运算。
本节介绍VFP的算术、
字符、日期、关系及逻辑运算符,各种运算符的优先级。
利用常量、变量、函数通过运算符组成的各种表达式的运算。
学习目标:
1、学会各种运算符的意义、运算规则
2、掌握运算符的优先级顺序
3、理解判断表达式的合法性及运算结果
4、会将一般的数学表达式转换成VFP表达式
学习重点与难点:
1、运算符的优先级
2、表达式的运算
运算符及优先级
VFP提供了五类运算符,在运算符两边参加运算的对象,必须有相同的类型。
各种运算符都有不同的优先级,与普通的数学一样,可以通过“( )”来改变优先级顺序。
(1)数值运算符:
经数值运算后的结果仍为数值
举例:?14/7+3^2-abs(-5) && 显示6.00
?(4-3)*(12/exp(2)) && 显示1.6240
?15%4+1 && 显示4
(2)字符运算符
字符运算符有如下3种:
+ :字符串完全连接。
将两个字符串首尾相接连成一个新字符串。
- :字符串不完全连接。
将运算符前的字符串尾部空格移到运算符后的字符串尾部,再连成一个新的字符串。
$ :字符串包含运算。
若运算符前的字符串包含在运算符后的字符串中,运算结果为逻辑真;否则,运算结果为逻辑假。
(注意其运算结果为逻辑值,而不是字符串)
$运算的优先级在字符运算中最高,+运算与-运算同级。
(3)关系运算符
进行关系运算时,参与比较的数据类型必须相同。
数值型数据按其数值大小进行比较;字符型数据按字符的ASCII码值或汉字机内码进行比较;日期和时间型数据按日期时间的前(小)后(大)进行比较。
==与=两种运算符在用于字符串比较时是有区别的,==要求参与比较的两个字符串必须完全相同,才返回.T.,否则返回.F.;而=则不然,它以右边的字符串为基准,从第一个字符起进行比较,只要左边前几个字符与比较符右边的字符串相同,就返回.T.。
所以,=通常称为模糊比较;而==称为精确比较。
(4)逻辑运算符
逻辑运算通常与关系运算相结合,以构成复杂的条件运算。
逻辑运算符有3种,按优先级别从高到低排列如下:
.NOT.或!非运算(对.NOT. 后的逻辑值进行取反)
.AND. 与运算(仅当运算符两边的值全为逻辑真时,运算结果才为真).OR. 或运算(仅当运算符两边的值全为逻辑假时,运算结果才为假)
各种逻辑运算的规则如下表所示:
以上几类运算符是可以综合使用的,其之间同样也存在优先顺序。
优先级别从高到低依次为:算术运算符(或字符运算符)、关系运算符、逻辑运算符。
(5)日期和时间运算符
日期和时间运算符只有两种:
+:一个日期类数据加上一个数值常量,其结果仍为日期
-:两个日期类数据相减(结果为数值)或日期类数据减去数值常量(结果仍为日期)
表达式
表达式是变量、操作符、常量、函数、字段名、控件以及属性的组合,求值结果为单个值。
可以使用表达式对属性进行设置,为查询设置条件或定义计算结果字段。
按表达式的类型:
数值表达式:由算术操作符和数值型数据构成的表达式,其运算结果仍为数值型。
举例: ?14/7+3^2-abs(-5) && 显示6.00
?(4-3)*(12/exp(2)) && 显示1.6240
?15%4+1 && 显示4
字符表达式:由字符操作符和字符型数据构成的表达式,其运算结果一般为字符型,但$运算为逻辑值。
举例:? 'Good ' + ' morning' && 显示Good morning
? '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有数值表达式、字符表达式、关系表达式、
日期与时间表达式和逻辑表达式。
不同的表达式有不同的运算结果,不同类型的表
达式通过关系运算与逻辑运算可以构成复杂的运算。
本节练习
第一题在Visual FoxPro中,下面4个关于日期或日期时间的表达式中,错误的是_____。
A.{^2002.09.01
B.{^01/01/2002}+20
11:10:10:AM}-{^2001.09.01 11:10:10AM}
C.{^2002.02.01}+{^2001.02.01}
D.{^2002/02/01}-{^2001/02/01}
第二题表达式'abc>bc'的值是__________。
A..NULL.
B.0
C. .f.
D..t.
第三题表达式{06/18/99}-{06/15/99} 的值是__________。
A.3
B.4
C.0
D.不能计算
第四题算术、关系、逻辑运算的优先顺序为_____。
A.关系、算术、逻辑
B.算术、关系、逻辑
C.逻辑、关系、算术
D.算术、逻辑、关系
第五题表达式25%5的值是__________。
A.5
B.0
C.出错
D.125
第六题设XB为某表中的字符型字段,其宽度为2,则与XB="男".OR.XB="女"等价的表达式为__________。
A.XB$"男女"
B.IN(XB, "男","女")
C.AT(XB,"男","女")
D.ATC(XB,"男","女")
第七题在.NOT.(SQR(B)>A+B .AND. B-A = 4) 表达式中,最后运算的是_____。
A.SQR
B.+
C.AND
D.NOT
第七题已知n="1",m="2",x12="good",则表达式x&n&m的值为__________。
A.X12
B.12
C.good
D.good12
1B 2C 3A 4B 5B 6A 7D 8C。