
实验二 常量、变量和表达式
【实验目的】
1.掌握Visual FoxPro常量的表示形式。
2.掌握Visual FoxPro运算符的运算规则。
3.掌握Visual FoxPro的变量的赋值、显示。
4.掌握如何使用表达式来表示条件。
【实验内容】
1.判断下列表达式的正误
如果是正确的表达式则写出表达式的值,如果是错误的则指出错误的原因。
(1)123+456
(2)123+'456'
(3)"123"+"456"
(4)'abc'+'def' (abc后面有空格)
(5)'abc'-'def' (abc后面有空格)
(6){^2014-10-1}+{^2014-5-1}
(7){^2014-10-1}-{^2014-5-1}
(8){^2014-10-1 8:30:0 }+10000
(9)3>2>1
(10)'abc' $'a' and 5^2>5*2 or 'abc'>'acb'
(11){^2014-6-1}<{^2013-8-1} or 'abc'='a' and '张三'>'李四'
2.写出下列对应的VFP命令
(1)定义两个数组A(10)、B(2,3)。
(2)将数组B中各元素的值均赋值为数值0。
(3)将数组变量A(1)赋值为10。
(4)将数组变量A(2)赋值为以A(1)的值为半径的圆面积。
(5)将数组变量A(3)赋值为2014年6月1日。
(6)将数组变量A(4)赋值为字符串湖南长沙。
(7)将数组变量A(5)赋值为逻辑真值。
(8)将数组变量A(6)赋值为分式,分子为10*5+4,分母为1+22。
(9)将数组变量A(7)赋值为中国连接上A(4)。
(10)将数组变量A(8)赋值为A(3)与2014年元旦相差的天数。
(11)将数组变量A(9)赋值为A(3)过100天后的日期。
(12)将以上定义的各个变量显示在屏幕上。
3.写出下列VFP的逻辑表达式
判断以下条件是否成立。
(1)A(1)是小于100的非负数。
(2)A(3)是2014年下半年的日期。
(3)A(4)包含湖南或者湖北。
(4)A(5)为逻辑假值。
【实验步骤】
1.启动VFP,在命令窗口中写出?命令和表达式,按回车键执行该命令。
若是正确的表达式,在主窗口中将显示表达式的值。若是错误的表达式,系统会弹出提示窗口,如图2.1所示。

图2.1 执行显示表达式的值的命令
2.在命令窗口中首先执行Dimension命令定义数组,然后使用赋值语句对数组元素赋值。
赋值后可通过?数组元素列表命令或display memory like数组名命令查看数组元素的值。
注意
在输入完一条命令后,必须按回车键,该命令才能执行。不能在输入多条命令后再按回车键,此时执行的是光标所在行的命令。
3.在命令窗口中输入?命令和逻辑表达式,按回车键执行。
若条件成立,则表达式的结果为逻辑真。
【答案解析】
1.判断下列表达式的正误
如果是正确的表达式则写出表达式的值,如果是错误的则指出错误的原因。
(1)123+456 &&数值型数据相加,表达式的值为579
(2)123+'456' &&错误 数值型与字符型不能执行+操作
(3)"123"+"456" &&字符串连接,表达式的值为123456
(4)'abc'+'def' (abc后面有空格) &&字符串连接,表达式的值为abc def
(5)'abc'-'def' (abc后面有空格) &&字符串连接,表达式的值为abcdef,空格移到f的后面
(6){^2014-10-1}+{^2014-5-1} &&错误,日期型不能相加
(7){^2014-10-1}-{^2014-5-1} &&两个日期之间相差的天数,表达式的值为153
(8){^2014-10-1 8:30:0 }+10000 &&时间加上秒数,表达式的值为2014/10/1 11:16:40
(9)3>2>1 &&错误 3>2为.t.,逻辑型.t.与数值型1不能比较
(10)'abc' $'a' and 5^2>5*2 or 'abc'>'acb'&& .f. and .t. or .f. 表达式的值为.f.
(11){^2014-6-1}<{^2013-8-1} or 'abc'='a' and '张三'>'李四'&& .f. or .t. and .t.表达式的值为.t.
2.写出下列对应的VFP命令
(1)定义两个数组A(10)、B(2,3)。
Dimension A(10),B(2,3)
(2)将数组B中各元素的值均赋值为数值0。
B=0
(3)将数组变量A(1)赋值为10。
A(1)=10
(4)将数组变量A(2)赋值为以A(1)的值为半径的圆面积。
A(2)=A(1)**2*3.14
(5)将数组变量A(3)赋值为2014年6月1日。
A(3)={^2014-6-1}
(6)将数组变量A(4)赋值为字符串湖南长沙。
A(4)='湖南长沙'
(7)将数组变量A(5)赋值为逻辑真值。
A(5)=.T.
(8)将数组变量A(6)赋值为分式,分子为10*5+4,分母为1+22。
A(6)=(10*5+4)/(1+22)
(9)将数组变量A(7)赋值为中国连接上A(4)。
A(7)='中国'+A(4)
(10)将数组变量A(8)赋值为A(3)与2014年元旦相差的天数。
A(8)=A(3)-{^2014-1-1}
(11)将数组变量A(9)赋值为比A(3)晚100天的日期。
A(9)=A(3)+100
(12)将以上定义的各个变量显示在屏幕上。
DISPLAY MEMORY LIKE *
3.写出下列VFP的逻辑表达式
判断以下条件是否成立。
(1)A(1)是小于100的非负数。
A(1)<100 and A(1)>0 表达式结果为.t.
(2)A(3)是2014年下半年的日期。
A(3)>={^2014/7/1} AND A(3)<={^2014/12/31} 表达式结果为.f.
(3)A(4)包含湖南或者湖北。
‘湖南’$A(4) or ‘湖北’$A(4) 表达式结果为.t.
(4)A(5)为逻辑假值。
A(5)=.f. 表达式结果为.f.
(注意:在命令? A(5)=.f.中,=为关系运算符,由于A(5)为真值,所以表达式的结果为假。而在命令A(5)=.f.中,=为赋值语句,将变量A(5)赋值为逻辑假值。)
【实验作业】
1.定义数组m(4),对m数组的各个元素进行赋值。
(1)m(1)赋值为字符串201221120108。
(2)m(2)赋值为数值10。
(3)m(3)赋值为日期2014年10月1日。
(4)m(4)赋值为日期时间2014年10月1日上午10点半。
2.计算出下列VFP的表达式(设目前exact状态为off)。
(1)m(1)='2012'
(2)'2012' =m(1)
(3)m(1) =='2012'
(4)'2012' $ m(1)
(5)m(1) $ '2012'
(6)m(1)>= '2011' and m(1)<= '2013'
(7)'学号'+m(1) (学号前后各有一空格)
(8)'学号'-m(1)
(9)5*m(2)**3/(m(2)+10)
(10)m(2)%3+m(2)/3
(11)m(3)-{^2014-1-1}
(12)m(4)-36000
(13)m(3)>m(4)
(14).t. or notm(5) and m(5)
(15)(.t. or notm(5)) and m(5)
3.写出下列VFP的逻辑表达式。
(1)m(1)的起始字符是否为2011或2012。
(2)m(2)是否大于等于1且小于等于10。
(3)比m(3)前100天的日期是否属于2014年。
(4)m(4)与2014年10月31日午夜12时相差的小时数。