论文部分内容阅读
摘 要:Visual FoxPro提供了多种运算符,算术运算符用于对数值型数据进行算术运算。字符运算符用于连接两个字符型数据。关系运算符用于对字符型、数值型或日期型数据进行比较运算。逻辑运算符用于对逻辑型数据进行运算。用运算符把常量、变量和函数连接起来构成的有意义的式子称为表达式。表达式值的数据类型决定了表达式的类型。常用的表达式有数值型表达式、字符型表达式和逻辑型表达式。
关键词:运算符 表达式 优先级 数据类型匹配
表达式的概念
表达式是Visual FoxPro命令和函数的重要组成部分,是由常量、变量、函数用运算符连接而成的有意义的式子。
各种运算符及相关表达式
1.算术运算符:算术运算符用于进行算术运算,连接起来的表达式称为算术表达式,结果是一个数值。如下表:
例:将(55+9×5)÷2写成Visual FoxPro算术表达式。
我们在命令窗口输入并执行下列:
?(55+9*5)/2 &&结果可以口算,是50
例:计算2+5*3**2-15/5-2*17%5时,Visual FoxPro按如下顺序进行计算:
①先算乘方3**2,得到2+5*9-15/5-2*17%5
②再算乘、除,得到:2+45-3-34%5
③再算求余,得到:2+45-3-4
最后算加、减,得到表达式的值为40。
由上例可知,算术运符的优先级别和我们数学中的算术运算级别是相同的,优先级从高到低为:**、^→*、/、%→+、-,即先进乘方、乘与除、求余、加与减,同级运算从左到右依次运算。
2.字符运算符:用于字符串连接运算,结果是一个新的字符串,如下表:
例:在命令窗口输入执行以下:
a="abc " &&abc后面有两个空格
b="def " &&def后面有两个空格
c="ghi"
?a+b+c &&完全连接,下行是运行结果
abc def ghi
x=a-b- c ?x&&下行是结果
abcdefghi&&字符串后面有四个空格
?”am”$”I am a student”&&屏幕显示:.T.
? ”Am”$”I am a student”&&屏幕显示:.F.
3.日期运算符:用于进行日期运算,如下表
日期运行符无优先级
例1:计算香港回归距现在多少天。
?date()-{^1997-10-01} &&函数用于取得当前日期。
如要把上例中的-号改为+时,?date()+{^1997-10-01},会出现错误提示,说明两个日期值是不能相加的。
例2:计算距今天1000天的日期。
?date()+1000
?date()-1000
4.关系运算符:用于进行关系运算,结果是逻辑值,如下表:
例:输入并执行下列命令:
a=1234 &&定义数值常量
b=2345 &&定义数值常量
?a .T. &&关系成立取真值
?a>b &&数值比较
.F. &&关系不成立,取假值
x="a" &&定义字符常量
y="b" &&定义字符常量
?x>y &&比较a和b字符的ASCⅡ码
.F. &&a和b的ASCⅡ码分别是97和98,关系不成立取逻辑假值
?"bc"$"abcd" &&比较$左边的字符串是否是其右边的字符串的子串
.T. &&是其子串,取逻辑真值
?"ac"$"abcd" &&比较$左边的字符串是否是其右边的字符串的子串
.F. &&不是其子串,取逻辑假值
?"abcd"="abc" &&比较等号右邊字符串是否是其左边字符串从首字符起的子串
.T. &&是其子串,取逻辑真值
?"abcd"="bcd" &&比较等号右边字符串是否是其左边字符串从首字符起的子串
.F. &&不是其子串,取逻辑假值
?"abcd"=="abc" &&字符串等长并完全相同比较
.F. &&不等长取逻辑假值
5.逻辑运算符:用于作表达式之间的逻辑运算,参加运算的表达式应有逻辑值。运算的结果是逻辑值,如下表:
逻辑运算符的优先级:逻辑非→逻辑与→逻辑或
例:y=.F. &&y的值为逻辑假
?.Not.y
.T. &&对y值取反,结果为真
a=3
b=9
?a .T.
?a .T. &&两边都为真,结果为真
设计表达式
1.运算符的优先级
一个表达式中可以有多种运算符。Visual FoxPro默认算术运算符和字符运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符。例:3*(21-4)>9+15/5 AND “abck”=“abc”,先算算术运算,式子变为51>12 AND “abck”=”abc”,再算比较运算,式子变为.T.AND.T.,最后算逻辑运算,运算结果为.T.。
2.括号
在Visual FoxPro的表达式中,可以使用括号改变运处的先后次序。括号只能使用圆括号(),且括号可以嵌套,即括号内可以再用圆括号。如果表达式含有括号,就先算括号内的。越是内层的括号,其优先级越高。例如,表达式100-(5*(2+3)-15)/5中有括号,运算时先计算最里层的括号(2+3),再计算外层的括号,这与数学上的运算顺序是一致的。
3.数据类型匹配问题
在数值型表达式、字符型表达式和逻辑型表达中,运算符两边的数据类型必须一致。如果运算符两边的数据类型不相同,Visual FoxPro将显示出错信息。例如,执行命令:?“李明的英语成绩是”=100Visual FoxPro将显示出错信息。出现错误的原因是运算符“+”两边的数据类型不相同。一个字符型数据与一个数值数据是不能组成表达式的。
总之,在使用Visual FoxPro中的表达式时,一是要注意不同类型运算符的优先级;二是注意相同类型运算符的优先级;三是要注意表达式中数据类型的匹配。最后还应经过大量的上机调试练习,才能做到游刃有余。
参考文献:
[1] VFP基础教程 3.4 表达式和运算符 [EB/OL] . http://www.educity.cn/help/VF/200908031435131247.htm.2009-08-03.
[2] 周察金.数据库应用基础——Visual FoxPro [T].高等教育出版社.2006年. 5-6.
关键词:运算符 表达式 优先级 数据类型匹配
表达式的概念
表达式是Visual FoxPro命令和函数的重要组成部分,是由常量、变量、函数用运算符连接而成的有意义的式子。
各种运算符及相关表达式
1.算术运算符:算术运算符用于进行算术运算,连接起来的表达式称为算术表达式,结果是一个数值。如下表:
例:将(55+9×5)÷2写成Visual FoxPro算术表达式。
我们在命令窗口输入并执行下列:
?(55+9*5)/2 &&结果可以口算,是50
例:计算2+5*3**2-15/5-2*17%5时,Visual FoxPro按如下顺序进行计算:
①先算乘方3**2,得到2+5*9-15/5-2*17%5
②再算乘、除,得到:2+45-3-34%5
③再算求余,得到:2+45-3-4
最后算加、减,得到表达式的值为40。
由上例可知,算术运符的优先级别和我们数学中的算术运算级别是相同的,优先级从高到低为:**、^→*、/、%→+、-,即先进乘方、乘与除、求余、加与减,同级运算从左到右依次运算。
2.字符运算符:用于字符串连接运算,结果是一个新的字符串,如下表:
例:在命令窗口输入执行以下:
a="abc " &&abc后面有两个空格
b="def " &&def后面有两个空格
c="ghi"
?a+b+c &&完全连接,下行是运行结果
abc def ghi
x=a-b- c ?x&&下行是结果
abcdefghi&&字符串后面有四个空格
?”am”$”I am a student”&&屏幕显示:.T.
? ”Am”$”I am a student”&&屏幕显示:.F.
3.日期运算符:用于进行日期运算,如下表
日期运行符无优先级
例1:计算香港回归距现在多少天。
?date()-{^1997-10-01} &&函数用于取得当前日期。
如要把上例中的-号改为+时,?date()+{^1997-10-01},会出现错误提示,说明两个日期值是不能相加的。
例2:计算距今天1000天的日期。
?date()+1000
?date()-1000
4.关系运算符:用于进行关系运算,结果是逻辑值,如下表:
例:输入并执行下列命令:
a=1234 &&定义数值常量
b=2345 &&定义数值常量
?a .T. &&关系成立取真值
?a>b &&数值比较
.F. &&关系不成立,取假值
x="a" &&定义字符常量
y="b" &&定义字符常量
?x>y &&比较a和b字符的ASCⅡ码
.F. &&a和b的ASCⅡ码分别是97和98,关系不成立取逻辑假值
?"bc"$"abcd" &&比较$左边的字符串是否是其右边的字符串的子串
.T. &&是其子串,取逻辑真值
?"ac"$"abcd" &&比较$左边的字符串是否是其右边的字符串的子串
.F. &&不是其子串,取逻辑假值
?"abcd"="abc" &&比较等号右邊字符串是否是其左边字符串从首字符起的子串
.T. &&是其子串,取逻辑真值
?"abcd"="bcd" &&比较等号右边字符串是否是其左边字符串从首字符起的子串
.F. &&不是其子串,取逻辑假值
?"abcd"=="abc" &&字符串等长并完全相同比较
.F. &&不等长取逻辑假值
5.逻辑运算符:用于作表达式之间的逻辑运算,参加运算的表达式应有逻辑值。运算的结果是逻辑值,如下表:
逻辑运算符的优先级:逻辑非→逻辑与→逻辑或
例:y=.F. &&y的值为逻辑假
?.Not.y
.T. &&对y值取反,结果为真
a=3
b=9
?a .T.
?a
设计表达式
1.运算符的优先级
一个表达式中可以有多种运算符。Visual FoxPro默认算术运算符和字符运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符。例:3*(21-4)>9+15/5 AND “abck”=“abc”,先算算术运算,式子变为51>12 AND “abck”=”abc”,再算比较运算,式子变为.T.AND.T.,最后算逻辑运算,运算结果为.T.。
2.括号
在Visual FoxPro的表达式中,可以使用括号改变运处的先后次序。括号只能使用圆括号(),且括号可以嵌套,即括号内可以再用圆括号。如果表达式含有括号,就先算括号内的。越是内层的括号,其优先级越高。例如,表达式100-(5*(2+3)-15)/5中有括号,运算时先计算最里层的括号(2+3),再计算外层的括号,这与数学上的运算顺序是一致的。
3.数据类型匹配问题
在数值型表达式、字符型表达式和逻辑型表达中,运算符两边的数据类型必须一致。如果运算符两边的数据类型不相同,Visual FoxPro将显示出错信息。例如,执行命令:?“李明的英语成绩是”=100Visual FoxPro将显示出错信息。出现错误的原因是运算符“+”两边的数据类型不相同。一个字符型数据与一个数值数据是不能组成表达式的。
总之,在使用Visual FoxPro中的表达式时,一是要注意不同类型运算符的优先级;二是注意相同类型运算符的优先级;三是要注意表达式中数据类型的匹配。最后还应经过大量的上机调试练习,才能做到游刃有余。
参考文献:
[1] VFP基础教程 3.4 表达式和运算符 [EB/OL] . http://www.educity.cn/help/VF/200908031435131247.htm.2009-08-03.
[2] 周察金.数据库应用基础——Visual FoxPro [T].高等教育出版社.2006年. 5-6.