第二章 visual foxpro 语言基础实验内容汇总
实验目的:
掌握各种常量,变量,函数与表达式的表示方法与应用技巧
实验步骤:
打开vfp ,打开命令窗口,在命令窗口中,按照要求输入,查看结果实验准备:
先了解几个概念:
在命令窗口中,可以输入以下几种数据形式:
(1)常量:在所有的操作过程中值不变,值固定的量。
例如: 2.34、“你好!”、{^2014-03-15}等等。
(2)变量:在操作过程中,可以改变值的量。
例如:x=10
y=20
z=x+y
x=6
y=4
z=x*y
(3)函数
例如:date()、time()等等。
(4)运算符
例如:+、-、*、/、<、>等等。
(5)表达式
例如:(x+y)*23-5 、“hello!”+“How are you?”等等。
无论是常量、变量、函数或表达式,都具有某种的数据类型。
数据类型如下表所示。
带*的数据类型——只能应用于表中的字段。
一、掌握各种类型的常量:
请在命令窗口中输入以下方框中的内容:(注释内容可以不用输入)
(说明:以上的数据是数值型常量(通常所说的常数),由数字,小数点,正负号构成。在内存中占8个字节,在表中占1~20个字节)
请在命令窗口中输入以下方框中的内容:(注释内容可以不用输入)
说明:以上数据是字符型常量,由字母、汉字、数字、空格、符号等组成,最多为254个字符,每个英文字符占1字节,汉字占2个字节。
注意:字符用英文半角的单引号或双引号或者[ ]括起来,定界符必须成对出现;
英文字母大小写有区别
请在命令窗口中输入以下方框中的内容:(注释内容可以不用输入)
说明:以上数据是逻辑型常量,只含两个值:.T. 或 .F. 。占一个字节,大小写等价。定界符是两个点。也可以使用.Y.或.N.表示。
请在命令窗口中输入以下方框中的内容:(注释内容可以不用输入)
说明:这是货币型常量,用 $ 开头,自动保留4位小数,如果小数位数超过四位,四舍五入到四位,货币型数据在内存中占8个字节。
说明:以上是日期型常量,日期时间型常量,vfp6.0及以上版本必须按照严格的格式书写:{^yyyy/mm/dd} 占8个字节,前4个字节存储年份,2个字节存储月,2个字节存储日
常用的分隔符有斜杠(/)、连字符(-)、句点(.)和空格,其中“/”是系统默认的分隔符{^yyyy/mm/dd hh:mm:ss a/p} 占8个字节,前4个字节存储日期,后4个存储时间
二、掌握各种类型的变量:
*说明:变量,可以是任何数据类型,由变量的值决定数据类型。并且在任何时候可以改变它的值。可以通过store命令或“=”为变量赋值
请在命令窗口中输入以下方框中的内容:(注释内容可以不用输入)
★★变量的命名规则
名称中只能包含字母、下划线“_”、数字符号和汉字符号;
名称的开头只能是字母、汉字或下划线,不能是数字开头;并且表的字段名不允许以下划线开头
除了自由表的字段名、表的索引标识名至多只能有10个字符外,其余可以是1~128个字符;
应避免使用系统保留字 以下名称不合法:
三、掌握特殊的内存变量——数组:
数组:由有序数据的集合,在VFP 中数组的每一个元素可以被赋值为不同类型的数据。 VFP 最多可声明二维数组,下标从1开始。数组被声明后,赋予默认值.F. 二维数组可以当成一维数组使用
对已经存在的数组,可以进行扩展,原数组元素中的数据会被保留继承
四、内存变量的保存和恢复
请在命令窗口中输入:(注释内容可以不用输入)
五、各种常用函数的名字、功能、返回值类型★★★★
(1)数值型函数:
①求绝对值函数ABS( )
语法:ABS(nExpression)说明:nExpression表示数值型表达式
功能:求括号内数值型数据nExpression的绝对值
返回值类型:N型
请在命令窗口中输入:(注释内容可以不用输入)
②取整函数INT()
语法:INT(nExpression)
功能:求括号内数值型数据nExpression的整数部分
返回值类型: N型
请在命令窗口中输入:(注释内容可以不用输入)
③符号函数SIGN()
语法:SIGN(nExpression)
功能:返回数值型表达式nExpression的符号,若为正返回1;若为负返回-1;为零,返回0 返回值类型: N型
④求最大值函数MAX( ), 与MAX相反,MIN()是求最小值函数
语法:MAX(Expression1,Expression2,……)
MIN(Expression1,Expression2,……)说明:括号内可以有多个参数
功能:求最大值 / 求最小值
请在命令窗口中输入:(注释内容可以不用输入)
说明:字符数据比较大小时,要考虑vfp系统的排序方式:
机器序列:空格<大写字母<小写字母<一级汉字<二级汉字,西文字符是按照ASCII码的值排列的,字母从小到大排列是A、B、C、D、……X、Y、Z、a、b、c、d、……x、y、z Pinyin拼音序列:汉字按拼音顺序排序,对于西文字符而言,空格在最前面,字母从小到大的排列是a、A、b、B、c、C、d、D、……x、X、y、Y、z、Z
STROKE笔画序列:汉字按照笔画顺序排序,西文字符的顺序同PinYin序列一样
⑤求模函数MOD
语法:MOD(nDividend,nDivisor)
功能:求以nDividend为被除数,nDivisor为除数的模, 最终模的符号和nDivisor除数相同。返回值类型: N型
之和;若两参数均为负,按照绝对值进行计算求余数,模为余数取反。
记住:保证结果与除数的符号相同,小数位数与被除数相同
⑥ROUND( )函数
语法:ROUND(nExpression,nDecimalPlaces)
说明:nExpression:指定要四舍五入的数值表达式
nDecimalPlaces:指定nExpression四舍五入的位置
功能:求第一个参数的四舍五入值,第二个参数指定四舍五入的位置。
⑦求平方根函数SQRT
语法:SQRT(nExpression)
功能:求nExpression的平方根
返回值类型: N型
请在命令窗口中输入:(注释内容可以不用输入)
⑧ RAND()函数
语法:RAND()
功能:返回0~1之间的一个随机数
返回值类型: N型
(2)字符型函数:★★
①ALLTRIM( )、LTRIM( )、RTRIM( )、TRIM( )函数
语法:ALLTRIM(字符表达式)
功能:
ALLTRIM( )函数删除指定字符表达式的前导和尾部空格符
LTRIM( )函数删除指定字符表达式的左侧前导空格
RTRIM( )和TRIM( )函数删除指定字符表达式的右侧尾部空格
返回值类型: C型
请在命令窗口中输入:(注释内容可以不用输入)
②空格生成函数SPACE( )
功能:返回由指定数目的空格构成的字符串
[语法格式]:SPACE(nSpaces) 说明:nSpaces:空格的数目
[返回值类型]:C型
LEN
语法:LEN() 说明:cExpression:字符表达式
功能:返回cExpression:字符表达式的长度(字节数),注意:一个英文占1个字节,一个
中文2字节(即,1个汉字长度为2)
返回值类型: N型
请在命令窗口中输入:(注释内容可以不用输入)
④取子串位置函数AT(),ATC()
[功能]:求第1个字符表达式在第2个字符表达式中出现的位置。
[语法格式]:
AT(<第1个字符表达式>,<第2个字符表达式>[,第n次出现])
[返回值类型]:N
现的位置。默认情况下,n=1,求第1次出现的起始位置。
AT()函数区分大小写,ATC()函数不区分大小写。
⑤求子串函数★★
取子串函数LEFT( )、RIGHT( )、SUBSTR( )
[功能]:
SUBSTR( )函数是从字符表达式中返回子串
LEFT( )函数是从字符表达式最左边字符开始返回指定数目的子串
RIGHT( )函数是从字符表达式最右边字符开始返回指定数目的子串
[语法格式]
LEFT(cExpression,nExpression)
RIGHT(cExpression,nExpression)
SUBSTR(cExpression,nStartPosition[,nCharactersReturned])
[参数含义]:
cExpression:指定要从其中返回子串的字符表达式
nExpression:指定截取的子串长度
nStartPosition:指定开始截取子串的起始位置
nCharactersReturned:指定截取的子串长度
[返回值类型]:C
说明:nStartPosition指定子串的起始位置,[,nCharactersReturned]指定子串的长度,如果缺省,表示从指定的起始位置到母串的末尾
⑥字符串匹配函数LIKE( )
[功能]:确定一个字符表达式是否与另一个字符表达式相匹配[语法格式]:LIKE(cExpression1,cExpression2)
[参数含义]:
cExpression1:指定要与cExpression2相比较的字符表达式cExpression2:字符表达式
注意:只能在第一个字符串中,使用通配符。
⑦大小写转换函数LOWER( )和UPPER( )
[功能]:
LOWER( )函数是将指定字符表达式中的大写字母转换成小写字母UPPER( )函数是将指定字符表达式中的小写字母转换成大写字母[语法格式]:
LOWER(cExpression)
UPPER(cExpression)
[参数含义]:
cExpression:字符表达式
(3)日期型、日期时间型函数:
①取系统日期函数DATE()
语法:DATE()
功能:返回计算机上的系统日期
返回值类型: D型
②取系统日期时间函数DATETIME()
语法:DATETIME()
功能:返回计算机上的系统日期时间
返回值类型:T型
③取系统时间函数TIME()
语法:TIME()
功能:返回计算机上的系统时间
返回值类型:C型,注意:字符型
请在命令窗口中输入:(注释内容可以不用输入)
④取一个日期的年份
语法:YEAR(〈expD〉)
说明:〈expD〉表示日期表达式
功能:返回〈expD〉的年份
返回值类型: N型
请在命令窗口中输入:(注释内容可以不用输入)
⑤取一个日期的月份MONTH
语法:MONTH(〈expD〉)
功能:返回〈expD〉的年份
返回值类型: N型
请在命令窗口中输入:(注释内容可以不用输入)
⑥取一个日期的天数
语法:DAY(〈expD〉)
功能:返回〈expD〉的天数
返回值类型: N型
⑦DOW( )函数
语法:DOW(〈expD〉/
功能:返回该日期是一周中的第几天,周日是第1天,周六是第7天返回值类型: N型
请在命令窗口中输入:(注释内容可以不用输入)
(4)各种类型转换函数:
①ASC()函数
语法:ASC(〈expC〉)
功能:返回字符串〈expC〉的最左边第一个字符的ASCII值。
返回值类型: N型
②CHR( )函数
语法:CHR(〈expN〉)
功能:求括号中ASCII码对应的字符,括号中的参数是数值型的整数
返回值类型: C型
③VAL()函数
语法:VAL(〈expC〉)
功能:返回由数字组成的字符串〈expC〉的数字值。
返回值类型: N型
请在命令窗口中输入:(注释内容可以不用输入)
符为止;如果第一个字符不是数字,也不是+、-号,返回0
★★★④STR()函数
功能:将数值表达式的值转换成字符串。
语法:STR (nExpression [, 参数1 [,参数2] ] )
说明:
nExpression:指定要转换的数值表达式
参数1 指定STR ()返回的字符串的总长度,包含小数点和小数的位数,默认值10;
参数2 指定小数位数,默认为0;
如果参数1 指定的总长度大于nExpression的长度,则使用在前面加空格的形式返回字符串;如果参数1 指定的总长度小于nExpression整数部分的长度,则返回“***”;
如果参数2小于nExpression的小数位数,则截去多余(四舍五入)的小数
返回值类型: C型
⑤DTOC()函数 / TTOC ( ) 函数
语法:DTOC (
TTOC (
功能: DTOC ()将日期表达式转换成字符串
TTOC()将日期时间表达式转换成字符串
返回值类型: C型
说明:
参数1 —返回的字符串里没有时间分隔符,而且按照年月日顺序
参数2 —只返回时间部分的字符串
⑥ CTOD()函数 / CTOT ( ) 函数
语法:CTOD (
CTOT (
功能: CTOD ()将括号中的字符型表达式转换成对应的日期
CTOT ()将括号中的字符型表达式转换成对应的日期时间
默认格式 mm/dd/yy
(5)认识其他常用函数:
①BETWEEN()函数
语法:BETWEEN(eTestValue,eLowValue,eHighValue)
[参数含义]:
eTestValue:指定测试的表达式
eLowValue:指定范围的下界
eHighValue:指定范围的上界
功能:判断eTestValue表达式的值是否在[eLowValue,eHighValue]表达式的值之间。返回值: .T.、.F.、.NULL. 逻辑型L
②TYPE( )函数
语法:TYPE(’〈expC〉’)
功能:返回表达式的值的类型。表达式用单引号或者双引号括起来
返回值类型: C型
请在命令窗口中输入:(注释内容可以不用输入)
③条件测试函数IIF( )
[功能]:根据逻辑表达式的值,返回两个值中的某一个
[语法格式]:IIF(lExpression,eExpression1,eExpression2)
[参数含义]:
lExpression:逻辑表达式
eExpression1:表达式1, 若lExpression为.T.,返回eExpression1的值
eExpression2:表达式2, 若lExpression为.F.,返回eExpression2的值
iif(第一个表达式,第2个表达式,第3个表达式)
如果第一个表达式的值为 .T.,就返回第2个表达式的值
如果第一个表达式的值为 .f.,就返回第3个表达式的值
请在命令窗口中输入:(注释内容可以不用输入)
④MESSAGEBOX() 函数
[功能]:显示一个用户自定义对话框
[语法格式]:
MESSAGEBOX(cMessageText[,nDialogBoxType[,cTitleBarText]])
[参数含义]:
cMessageText:字符型参数,指定在对话框中显示的文本
nDialogBoxtype:整型参数,指定在对话框中的按钮和图标、显示对话框时的默认按钮cTileBarText:字符型参数,指定在对话框标题栏中的文本
格式解释:
MESSAGEBOX(‘提示内容的字符串’ ,按钮类型0~5 +图标类型号 + 默认按钮,‘对话框标题’)
请在命令窗口中输入:(注释内容可以不用输入)
注意:
MESSAGEBOX( )的返回值取决于用户所选择的按钮,MESSAGEBOX( )函数可以简写为MESSAGEB( ),不能写成MESS( )。
★★重点掌握的函数有:
ABS()、ALLTRIM()、ASC()、AT()、BETWEEN()、CHR()、DATE()、DAY()、DTOC()、EMPTY()、IIF()、 INT()、LEFT()、LEN()、MAX()、MIN()、MOD()、RIGHT()、STR()、 SUBSTR()、VAL()、YEAR()
六、掌握各种运算符与表达式
运算符——用于处理数据运算的符号。
表达式——通过运算符将数据(如常量、变量、函数等)组合起来的可以运算的式子。
1)数值运算符与数值表达式
+ 、 - 加减运算求模,乘除,乘方()
请在命令窗口中输入:(注释内容可以不用输入)
2)字符运算符+ — $ 和字符表达式(+,-的优先级高于$)
运算符“+”相当于字符相连
请在命令窗口中输入:(注释内容可以不用输入)
3)日期和日期时间运算符与日期、日期时间表达式(+,- 优先级同级)
“+”:日期1=日期2+整数天
时间1=时间2+整数秒
(注意:日期不能加日期,时间不能加时间)
“-”:整数天 =日期1-日期2
整数秒= 时间1-时间2
日期2=日期1-整数天时间2=时间1-整数秒
4)关系运算符与关系表达式
注意:
(一)关系运算符主要用于比较大小或是否相等。应该让同种数据类型的2个数据做比较。例如:
? 5<6 结果为 .T.
? {^2014/03/01} < {^2014/03/10} 结果为 .T.
? .T. > .F. 结果为 .T.
? “A” < “B”结果为 .T.
如果是将不同数据类型的数据直接做比较,一般情况下,会报错。
? {^2014/03/01} < 5 报错——操作类型不匹配
? {^2014/03/01} < "a"
? "a" < 5
? {^2014/03/01} > {^2014/02/10 10:00:00} 结果为 .T.
(二)当比较字符串时,字符串的大小要受到“排序序列”设置的影响。
在“工具”——“选项”——“数据”选项卡中,设置“排序序列”
机器序列(machine):空格<大写字母<小写字母<一级汉字<二级汉字,西文字符是按照ASCII码的值排列的,字母从小到大排列是A、B、C、D、……X、Y、Z、a、b、c、d、……x、y、z
Pinyin拼音序列:汉字按拼音顺序排序,对于西文字符而言,空格在最前面(小),英文字母从小到大的排列是空格 (三)使用=进行字符串比较时,结果受SET EXACT命令的影响。 ON——在短字符串后加入空格后使它和长字符串具有相同的长度,然后对每个字符进行比较。OFF——(默认)当左边字符串长度大于右边字符串的长度,则左边字符串取同右边长度相同的 长度相同且每个字符相同,两个字符串才相同,返回值.T. 5)逻辑运算符与逻辑表达式(优先级 not最高,其次是and , or最低) 逻辑“与”:AND 逻辑“或”:OR 逻辑“非”:NOT(或!) 6)宏替换 用内存变量替换名称,连字符&放在变量前,表示该变量值当作名称使用,并使用一个点.结束宏替换表达式。 混合各种运算符的表达式,计算时注意: (a )等价于没有任何值; (b )与0、空字符串(“”)或空格不同; (c )排序优先于其他数据; (d )在计算过程中或大多数函数中可以用到NULL 值。 (e )NULL 值会影响命令、函数、逻辑表达式和参数行为。VFP 支持的NULL 值可以出现在任 请在命令窗口中输入:(注释内容可以不用输入) 高于 高于