实验1 Visual FoxPro中的数据与运算
一、实验目的
1.熟悉Visual FoxPro 6.0主窗口。
2.掌握内存变量的赋值和显示方法。
3.熟悉数组的定义和赋值。
4.掌握表达式的计算方法。
5.掌握常用函数的使用方法。
二、实验内容
实验1.1 启动Visual FoxPro 6.0
单击“开始”菜单,选择“程序”|“Microsoft Visual FoxPro 6.0”“| Microsoft Visual FoxPro 6.0”命令。
问题1:如何关闭和显现命令窗口?
实验1.2 内存变量
1.赋值与显示内存变量
在命令窗口输入下列命令。
STORE 15 TO a1,a2 &&将数值15赋值给2个内存变量
xm="李强" &&将字符型数据赋值给内存变量xm
rq={^2015-06-05} &&将日期型数据值赋值给内存变量rq
团员否=.F. &&将逻辑型数据赋值给内存变量团员否
a2=a1+1 &&a1加1后再赋值给a2
?a1,a2 &&换行显示a1,a2的值
?xm &&换行显示xm
??rq,团员否 &&不换行显示rq和团员否的值
LIST MEMO LIKE a? &&显示以a开头的内存变量信息
显示结果参见图1-1。
问题2:在初次赋值之后,哪些内存变量的值又发生了变化?
2.清除内存变量
在命令窗口输入下列命令。
CLEAR &&清屏幕
RELEASE ALL LIKE a* &&清除以a开头的所有内存变量
DISPLAY MEMO LIKE * &&显示全部内存变量
图1-1 内存变量的赋值、显示操作结果
显示结果参见图1-2。
图1-2 内存变量的清除操作结果
3.数组
在命令窗口输入下列命令。
CLEAR &&清屏幕
RELEASE ALL &&清除全部内存变量
DIME a(3) &&定义数组
a(1)=10 &&给数组元素a(1)赋值
a(2)=20 &&给数组元素a(2)赋值
LIST MEMO LIKE a* &&显示a开头的所有内存变量
显示结果参见图1-3。
图1-3 数组的定义、赋值操作结果
问题3:如果执行a(3)=a(2),请问a(2)、a(3)的值分别是多少?可以定义三维数组吗?
4.表达式
(1)算术运算表达式
?65-(2+8)*4^2/5 &&结果为:33.00
问题4:求6+(5×3)2÷4的值,请写出表达式和计算结果。
(2)字符运算表达式
?"更快 "+"更高"+"更强"
?"更快 "-"更高"+"更强"
显示结果参见图1-4。
图1-4 字符运算操作结果
问题5:如果a="123"、b="xyz"、c="天地人",则a+b+c和a-b-c的结果各是什么?
(3)日期运算表达式
?{^2015-06-05}+10
?{^2015-06-05}-{^2014-06-05}
?{^2015/06/05 8:10}+120
显示结果参见图1-5。
图1-5 日期运算操作结果
问题6:从北京奥运会开幕到今天已经过去多少天?
(4)关系运算表达式
?"a">"b","马">"羊" &&字母、汉字比较
?6#7,"a"<>"b" &&不等号的应用
?{^2015/01/01}>{^2015/01/02} &&两个日期比较
?"abc"$"ab","ab"$"abc" &&包含运算
?"abc"="ab","abc"=="ab" &&单等号与双等号比较
显示结果参见图1-6。
图1-6 关系运算操作结果
技巧解析:同类型数据才能比较大小。
问题7:"大"与"abcd"谁大?
(5)逻辑运算表达式
?3>6.or.5<7.and.not.T. &&结果为:.F.
技巧解析:各类运算符优先级从高到低顺序是:圆括号()→算术运算→字符和日期运算→关系运算→逻辑运算。
问题8:写出"张三"大于等于"李四"并且3不等于2的逻辑表达式和计算值。
5.常用函数
(1)数值运算函数
?INT(7.8) &&取整数函数INT()
?ROUND(45.345,2) &&四舍五入函数ROUND()
?MOD(10,3) &&求余数函数
?MAX(15,8,27),MIN(15,8,27) &&求最大、最小值函数MAX()、MIN()
?SIN(PI()/4) &&正弦函数SIN()和圆周率函数PI()
显示结果参见图1-7。
图1-7 数值运算函数操作结果
问题9:求INT(8.8)和INT(8.1)的值。
(2)字符处理函数
?LEN("abc"),LEN("中国") &&求字符串长度函数LEN()
?RIGHT("abc",2) &&取右子串函数RIGHT()
?SUBSTR("china",2,3) &&取子串函数SUBSTR()
?"天"+SPACE(2)+"地" &&空格函数SPACE()
?AT("cd","abcdef"),AT("cf"," abcdef") &&求字串位置函数AT()
显示结果参见图1-8。
图1-8 字符处理函数操作结果
问题10:请写出从"dgtadastabcdagdt"字符串中截取"abc"的命令。
(3)日期时间函数
?DATE() &&系统日期函数DATE()
?YEAR({^2015/01/05}) &&求年份函数YEAR()
问题11:通过你本人的出生日期计算你现在的年龄,请写出相应命令。
(4)转换函数
?DTOC({^2015/06/05}) &&日期型转换成字符型函数DTOC()
?DTOC({^2015/06/05},1) &&日期型转换成字符型函数DTOC()
?STR(10.456,5,2) &&数值型转换成字符型函数STR()
?VAL("10.456")+2 &&字符型转换成数值型函数VAL()
显示结果参见图1-9。
图1-9 转换函数操作结果
问题12:如果rq={^2015/06/05},则如何将变量rq转换成字符串"2015年6月5日"?请写出相应命令。
(5)测试函数
API=120
?IIF(API>100,"空气有污染","空气质量较好")
问题13:X=90,IIF(X>100,X-50,X+50)的值是多少?
6.提高性实验
根据下列问题,写出相应命令及命令运行的结果。
(1)计算的值,设x=7.8,y=15.3。
(2)今天距今年的圣诞节还有多少天?
三、思考题
1.为什么要使用内存变量?清除内存变量的意义是什么?
2.Visual FoxPro 6.0有几大类常用函数?
3.使用表达式的目的是什么?