实验二 数据表达式及函数Word文档下载推荐.docx
《实验二 数据表达式及函数Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验二 数据表达式及函数Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
逻辑值只有两个:
真值和假值。
2、逻辑型常量的表示
真值:
.T.、.t.、.Y.、.y.
假值:
.F.、.f.、.N.、.n.
六、日期型常量
用{}将年、月、日括起,年、月、日之间用分隔符,分隔符可以是/、_、和空格。
日期型常量有两种格式:
严格的日期格式和传统的日期格式
⑴传统的日期格式
{mm/dd/yy},年份可以是2位数字或4位数字,此格式命令会受语句SETDATETO和SETCENTURYTO设置的影响
⑵严格的日期格式
{^yyyy-mm-dd}例:
{^1999-10-02}
年份必须是4位数字,年月日的次序不能颠倒,不能缺省,用8个字节表示
取值范围是:
{^0001-01-01}~{^9999-12-31}
⑶影响日期格式的设置命令
A格式:
SETMARKTO[日期分隔符]
功能:
设置日期型数据的分隔符,若SETMARKTO表示恢复默认斜杠分隔符
B格式:
SETDATETOMDY|DMY|YMD……
设置日期显示的格式
C格式:
SETCENTURYON/OFF[世纪值]
设置(或关闭)成用4位数字显示年份
例:
SETCENTURYON
?
{10/02/1999}
5、日期时间型常量(占用8个字节)
日期时间型常量可以同时表示日期和时间
格式为:
{<
日期>
<
时间>
}
与日期型常量完全相同
时间格式为:
[hh[:
mm:
[ss]][a/p]]
例:
{^2002-9-17,9}表示2002年9月17日上午9点
2.2VisualFoxPro的变量
一、变量的认识
1、变量是一个用名称(称为变量名)来表示的量,它的值是可改变的。
2、①分类
二、给变量赋值
1.简单内存变量
赋值:
格式1:
<
内存变量名>
=<
表达式>
格式2:
STORE<
TO<
内存变量名表>
【例2-3】使用?
|?
?
输出内存变量。
ZF1=‘银川’
STORE18.4toA1,A2,A3
L1=.T.
S1=$500.89
Store{^2004-09-15}toRQ1,RQ2
ZF1,A1,A2,A3,L1,S1,RQ1,RQ2
说明:
⑴当内存变量与字段变量同名时,在内存变量名前加M.(或M->
)区分同名的字段变量。
⑵格式1一次只能给一个变量赋值;
格式2一次可以给多个用逗号分隔的变量赋值。
⑶在使用变量之前不需要定义,当使用赋值命令后,即建立了内存变量
⑷可以通过对内存变量重新赋值来改变其内容和类型。
⑴?
功能:
在下一行显示若干个表达式的值
⑵?
在同一行显示表达式的值
三、变量的有关命令
1.内存变量显示
LISTMEMORY[LIKE〈通配符〉][TOPRINTER|TOFILE〈文件名〉]
DISPLAYMEMORY[LIKE〈通配符〉][TOPRINTER|TOFILE〈文件名〉]
功能:
显示内存变量的当前信息,包括变量名、作用域、类型、取值。
说明:
①选用LIKE只显示与通配符相匹配的内存变量。
②[TOPRINTER]显示的同时送往打印机;
[TOFILE]存入给定文件名的文本文件.TXT中。
③LIST滚动显示,DISP分页显示
通配名是指包含?
或*的变量名,?
表示该位置可以是任意的某个符号,*表示该位置可以是任意多的符号。
例题1.a?
c和a*c的含义.\。
2.显示以a为开头的所有变量
2.内存变量的清除
格式1:
CLEARMEMORY
格式2:
RELEASE<
格式3:
RELEASEALL[EXTENDED]
格式4:
RELEASEALL[LIKE<
通配符>
|EXCEPT<
]·
三、数组——变量的另一种使用形式
1、数组的认识
如果一个数组,其元素不分“行”、“列”,则该数组称为一维数组;
如果一个数组,其元素按“行”、“列”排列,则该数组称为二维数组。
如,假设a是一个数组,其有两个元素,则两个元素分别表示为a
(1)、a
(2)。
假设b是一个有两行两列4个元素的数组,则4个元素分别表示为b(1,1)、b(1,2)、b(2,1)、b(2,2)。
2、数组的定义
数组必须先DIMENSION或DECLARE定义,然后才能使用。
一维数组的定义:
dimension|declare数组名(下标上限)
二维数组的定义:
dimension|declare数组名(第一个下标上限,第二个下标上限)
定义一维数组A,有4个元素;
定义二维数组B,有3行4列元素。
dimensionx(8),y(3,4)
8个元素,12个元素
普通变量在第一次赋值时被自动定义,即无需预先定义。
数组定义后,如果未对其赋值,则各元素为假值;
3.表中数据与数组数据之间的交换
①将表的当前记录复制到数组
SCATTER[F1ELDS<
字段名表>
][MEMO]TO<
数组名>
[BLANK]
复制表的当前记录的指定字段到数组元素,若不指定字段,则复制除备注型M和通用型G之外的全部字段。
SCATTER[F1ELDSLIKE<
|FIELDSEXCEPT<
][MEMO]TO<
[BLANK]
复制用通配符指定包括或排除的字段
②将数组数据复制到表的当前记录。
GATHERFROM<
[FIELDS<
][MEMO]
将数组中的数据作为一个记录复制到表的当前记录中,若数组元素个数多于记录中字段的个数,则多余部分被忽略。
[FIELDSLIKE<
§
2.2表达式
定义:
同类型的各种数据(常量、变量、函数)通过同类型运算符按一定规则连接起来的式子。
2.2.1数值、字符与日期时间表达式
一、数值表达式
由算术运算符将数值型常量、变量、函数连接起来形成,运算结果仍为数值型。
⑴算术运算符优先级
A.()>
B.**或^>
C.*、/、%>
D.+、_
⑵求余运算
%或MOD()求余或取模,余数的正负号与除数一致
二、字符表达式
由字符运算符与字符型常量、变量、函数构成,运算结果仍为字符型
+:
将两个字符串收尾连接形成一个新字符串
-:
连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部
例题:
X=Hello
Y=World
?
X+Y
X-Y
输出结果为:
HelloWorld
HelloWorld
三、日期时间表达式
由日期型运算符与日期型或数值型的常量、变量或函数构成。
运算结果为日期型或数值型。
日期运算符:
+、-
对日期表达式的格式有一些限制。
书本51页
{^2005-09-16,10:
10:
10AM}-{^2004-09-16,09:
10AM}
§
2.2.2关系表达式
也称简单逻辑表达式,由关系运算符与其他表达式组成,其作用是比较两个表达式的大小或前后,其运算结果是逻辑型。
1.形式:
表达式1>
关系运算符>
表达式2>
①数值型和货币型数据比较
按数值的大小比较
②日期和日期时间型数据比较
早的日期或时间小,晚的日期或时间大
③逻辑型数据比较
.T.大于.F.
④子串包含测试
测试前字符串是否为后字符串的子字符串
2.字符串精确比较与EXACT设置
SETEXACTON/OFF
⑴setexactoff非精确比较
右边的字符串与左边字符串的前面部分内容相匹配,即可得到逻辑真.T.
⑵setexacton精确比较
当=时,现在较短字符串尾部加上若干个空格,使两个字符串长度相等,再比较
当==时,须两个字符串完全相同(包括空格及各字符的位置)
例题setexactoff
store“abc”toS1
store“ab”toS2
S1=S2,S2=S1
TF
2.2.3逻辑表达式
由逻辑运算符将逻辑数据连接起来的式子,其运算结果为逻辑值。
1.逻辑运算符:
.NOT.、.AND.、.OR.(NOT>
AND>
OR)
2.运算符优先级:
算术运算符>
字符运算符和日期时间运算符>
逻辑运算符
例如:
3+3>
=6.OR.3+3>
5.AND.2+3=5
3.3常用函数
函数特点:
自由变量(或称参数)的值,经过某些特定的运算后,得到相应的函数值
格式:
函数名(自变量1,自变量2,……自变量N)
类型:
每个函数的自变量和函数值都有规定的数据类型
掌握:
⑴自变量类型⑵函数名和功能⑶函数值类型
分为5类
3.3.1数值函数
特点:
自变量和返回值都是数值型数据
1.绝对值和符号函数
⑴ABS(<
数值表达式>
)
⑵SIGN(<
⑴返回绝对值
⑵返回符号
2.求平方根函数
SQRT(<
返回指定表达式的平方根,自变量不能为负
3.圆周率函数
PI()
返回圆周率A=PI()
4.求整数函数
①INT(<
②CEILING(<
③FLCIOR(<
①返回整数部分
②返回大于或等于指定数值表达式的最小整数
③返回小于或等于指定数值表达式的最大整数
5.四舍五入函数
ROUND(<
数值表达式1>
数值表达式2>
返回在指定位置四舍五入后的结果。
若表达式2为负,则舍入到对应整数位
例:
ROUND(123.456.2)→123.46
X=6789.5678
ROUND(X,3),ROUND(X,0)ROUND(X,-1),ROUND(X,-3)
6.求余数函数
格式:
MON(〈数值表达式1〉,〈数值表达式2〉)
返回余数,余数的正负号与除数相同。
即负数以正数,余数;
正数除以,余,负
7.求最大和最小值函数
⑴MAX(〈数值表达式1〉,〈数值表达式2〉)[,〈数值表达式3〉……]
⑵MIN(〈表达式1〉,〈表达式2〉[,〈表达式3〉……])
⑴返回最大值
⑵返回其中的最小值
自变量表达式可以是:
数值型、字符型、货币型、双精度型、浮点型、日期型和日期时间型,但所有表达式类型须相同
3.3.2字符函数
指自变量一般是字符型数据的函数
1.求字符串长度函数
LEN(〈字符表达式〉)
返回字符表达式的长度,结果为数值型
2.大小写转化函数
①LOWER(〈字符表达式〉)
②UPPER(〈字符表达式〉)
3.空格字符串生成函数
SPACE(〈数值表达式〉)
生成指定数目的空格字符串
4.删除前后空格函数
①TRIM(〈字符表达式〉)
②LTRIM(〈字符表达式〉)
③ALLTRIM(〈字符表达式〉)
5.取子串函数
①LEFT(〈字符表达式〉,〈长度〉)
②RIGHT(〈字符表达式〉,〈长度〉)
③SUBSTR(〈字符表达式〉,〈其始位置〉,[〈长度〉])
①从左端取一个指定长度的子串
②从右边取一个长度的子串
③从指定起始位置取指定长度的子串
6.计算子串出现次数函数
OCCURS(〈字符表达式1〉,〈字符表达式2〉)
返回第一个字符在第二字符串中出现的次数,函数值为N型
7.求子串位置函数
⑴AT(〈字符表达式1〉,〈字符表达式2〉,[〈字符表达式〉])
⑵ATC(〈字符表达式1〉,〈字符表达式2〉,[〈字符表达式〉])
若串1是串2的子串,则返回串1首字符在串2中的位置,否则返回0。
〈数字表达式〉指明串1在串2中第N次出现的位置。
AT(“IS”,“THISISABOOK”)
AT(‘5’,‘123456’)
AT(‘安’,‘西安’)
8.子串替换函数
STUFF(<
字符表达式C1>
起始位置N1>
长度>
N2,<
字符表达式2>
用C2替换C1中起始位置开始的N个字符
注:
①N1大于C1的长度.则将C2连到C1后面;
②N2=0,将C2插到C1中第N1个字符后面;
③C2是空串,则删除C1中由N1指定的N2长度的字符串。
C1=“abcdef”
stuff(C1,2,3,“12345”)
stuff(c1,2,0,“12345”)
stuff(c1,2,3,“”)
9.字符替换函数
CHRTRAN(<
字符表达式C2>
字符表达式C3>
当C1中的一个或多个字符与C2匹配时就用C3中对应字符替换这些字符;
若C3串字符少于C2中时,则C1中会被删掉字符;
若C3中字符多与C2中时,多余被忽略。
10、字符串匹配函数
LIKE(<
C1与C2所有对应位置都匹配,则返回.T.,否则返回.F.
C1中可以包含通配符*和?
LIKE(“XY?
”,“XYZ”),LIKE(“38*”,“38.29”)
3.3.3日期和时间函数
1.系统日期和时间函数
DATE()
TIME()
DATETIME( )
分别返回当前系统日期、时间、日期时间。
2.求年份、月份和、天数函数
YEAR(<
D型表达式>
|<
T型表达式>
MONTH(<
DAY(<
3.时、分、秒函数
HOUR(<
日期时间表达式>
MINUTE(<
SEC(<
分别取表达式中的时,分,秒部分
3.3.4数据类型转换函数
1.数值转换成字符串
STR(<
[,<
[,〈小数位数〉]
按长度和保留的小数位数,将数字转成字符串。
①若省略小数位,则转为正数,小数四舍五入
②若同时省略长度和小数位,则小数位为0,长度为10。
③当长度<
实际转换后的长度时,不能转换。
2.字符串转换成数值
VAL(<
字符表达式>
从第1个字符开始到第1个非数字字符间的字符串转换成对应数值。
若以非数字开头,则返回O。
val(“34.85abc”)
val(“315计划”)
val(“ABC123546”)
3.字符串转成日期或日期时间
CTOD(<
CTOT(<
将字符表达式的值转换成日期或日期时间型.
4.日期或日期时间转换成字符串
DTOC(<
[,1])
TTOC(<
将D或T型数据转换成字符串
选1时按约定格式,
DTOC(date()),DTOC(date(),1),TTOC(datetime())
TTOC(datetime(),1)
5.宏替换函数
&
字符型变量>
[.]
替换出字符型变量的内容,当需要用一个表达式代替许多可变的内容时,取变量当前值
①城市=“北京”
STORE“向&
城市.致敬!
”TOA
?
A
②X1=’10’
X2=’10’
X1*&
X2→100
③ABC=“FoxPro”
X=“B”
Y=“C”
Z=“A&
”+“X&
”+“Y”
&
z→FoxPro
④BJ=“96
(2)”
XSK=“A:
XS”+BJ
USE&
XSK→A:
XS96
(2)
3.3.5测试函数
1.值域测试函数
BETWEEN(<
表达式T>
表达式L>
表达式H>
测试一个表达式的值是否介于另外两个表达式之间。
函数值为.T.、.F.或NULL值。
三个自变量类型须一致
2.空值测试函数
ISNULL(<
判断一个表达式的运算结果是否为NULL值。
3.空值测试函数
EMPTY(<
表达式结果为空,则.T.;
否则.F.。
“空”与NULL不同
4.数据类型测试函数
VARTYPE(<
逻辑表达式>
])
返回表达式的类型字母,
5.表文件尾测试函数
EOF([<
工作区号>
表别名>
测试记录指针是否向文件尾,若是为.T.;
否则是.F.。
6.表文件首测试函数
BOF([<
测试记录指针是否指向文件首,若是为.T.;
7.记录号测试函数
RECNO([<
返回当前表文件的当前记录号
8.记录个数测试函数
RECOUNT([<
返回当前表的记录个数。
9.条件测试函数
IIF(<
逻辑表达式L>
测试L值,若为.T.返回表达式1的值;
若为.F.,返回<
的值。
10、记录删除测试函数
DELETED([<
表的别名>
测试指定工作区中的表,当前记录是否被逻辑删除,若有*,则返回.T.否则返回.F.
表中概念补充:
1.首记录:
表文件的第一个记录叫文件首记录。
2.末记录:
表文件的最后一个记录叫文件末记录。
3.记录号:
能够表明每个记录在表文件中存放的前后次序的,叫记录序号,每条记录都有一个记录号,它由系统在内部赋给每条记录。
4.记录指针:
在表文件中,用来指示记录位置的指针。
每个表文件、排序文件或索引文件都设置有一个记录指针,由系统内部设置,在对表文件进行数据操作过程中,记录指针是可以移动的。
5.当前记录:
记录指针指向的记录被称作当前记录。
任何时候,记录指针都指向一个记录。
6.记录函数:
RECNO(),用来记录当前记录序号的函数。
实验例题
1.在命令窗口中输入如下命令:
A=”Thisisacomputer.”
B=”It’smine”
写出满足下面要求的各个命令并上机验证。
(1)取A的第11个字符赋给变量C
(2)取A左边6个字符赋给变量D
(3)取A右边3个字符赋给变量E
(4)求字符串A、B的长度。
(5)判断A中是否包含D和E。
(1)storesubstr(A,11,1)toC
C
(2)storeleft(A,6)toD
D
(3)storeright(A,3)toE
E
(4)?
Len(A),len(B)
(5)?
at(A,D),at(A,E)