计算机2级课件第3章.docx
- 文档编号:8655587
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:26
- 大小:44KB
计算机2级课件第3章.docx
《计算机2级课件第3章.docx》由会员分享,可在线阅读,更多相关《计算机2级课件第3章.docx(26页珍藏版)》请在冰豆网上搜索。
计算机2级课件第3章
第3章数据、函数与表达式
数据是计算机程序处理的对象,也是运算产生的结果,所以我们首先应该认识VFP能处理哪些数据,掌握各种形式数据的表示方法。
可以从不同的角度对数据进行分类。
从数据类型来分,数据可以分为数值型数据、字符型数据、逻辑型数据等。
从数据的存处方式来分,数据可分为常量和变量。
3·1VisualFoxpro常用数据类型P37表3-1
3·2常量与变量
在程序运行过程中,我们把需要处理的数据存放在内存中,称始终保持不
变的数据为“常量”,称存放可变数据的存储单元为“变量”,其中的数据称为变量的值。
一、常量是一个具体的数据项,在整个操作过程中其值保持不变。
VFP支持以下6种类型的常量。
1·数值型常量
2·货币型常量
前置的符号($),采用4位小数。
3·字符型常量
单引号、双引号或方括号称为定界符。
4·日期型常量
定界符是一对花括号。
1)传统的日期格式{mm-dd-yy}
2)严格的日期格式
{^yyyy-mm-dd}
设置不同的日期格式
1)在命令窗口键入如下4条命令,并分别回车执行:
SETCENTURYON&&设置4位数字年份
SETMARKTO&&恢复系统默认的斜杠日期分配符
SETDATETOYMD&&设置年月日格式
?
{^2002-11-26}
2)在命令窗口键入如下4条命令,并分别回车执行:
SETCENTURYOFF&&设置2位数字年份
SETMARKTO"."&&设置日期分隔符为西文句号
SETDATETOMDY&&设置月日年格式格式
?
{^2002-11-26}
5·日期时间型常量
在命令窗口键入如下2条命令,并分别回车执行:
SETHOURSTO24
?
{^2002-11-268:
30:
00P}6·逻辑型常量
只有“真”和“假”两种值,通常用.T.表示逻辑真,用.F.表示逻辑假。
注
意T和F两边的圆点不可少,否则会出错。
二、变量
1·字段变量
2·简单内存变量(系统内存变量)
3·数组变量
定义:
DIMENSION<数组名>(<下标上限1>[,<下标上限2>])[,,,]
DECLARE<数组名>(<下标上限1>[,<下标上限2>])[,,¨刀
例DIMENSIONa(3),b(2,3)
此例定义了一个一维数组a,并且有3个元素,分别为a
(1),a
(2),a(3);
数组b为二维数组,分别是b(1,1),b(1,2),b(1,3),b(2,1),b(2,2),b(2,3)。
数组一旦被定义后没个元素的初值为逻辑假,可以使用赋值命令给不同的元素赋不同的数据类型的值。
三、内存变量常用命令
内存的命名规则:
以字母(可以用汉字做变量名,但不提倡)开头,只能由字母、数字、或下划线组成。
1·内存变量的赋值
格式l:
STORE〈表达式〉TO〈变量名表〉
格式2:
〈内存变量名〉=〈表达式〉
2·表达式值的显示
格式1:
?
[〈表达式表〉]
格式2:
?
?
〈表达式表〉
第1条命令把结果在下一行最左边的位置输出;第2条则将结果在光标的当
前位置输出。
3·内存变量的显示
格式l:
LISTMEMORY[LIKE<通配符>][TOPRINTER/TOFILE<文件名>]
格式2:
DISPLAYMEMORY[LIKE<通配符>][TOPRINTER/TOFILE<文件
名>]
通配符当中“?
”代表内存变量中的任意一个字符。
“*”代表内存变量中的任意一个或多个字符。
4·内存变量的删除
格式1:
CLEARMEMORY
格式2:
RELEASE〈内存变量名表〉
格式4:
RELEASEALL[LIKE〈通配符〉]
例:
在命令窗口中依次输入下列命令,命令格式及屏幕显示如下:
CLEARMEMORY
DIMENSIONy(2,2)
STORE‘xxx’TOx1,y(1,1)
y(3)={^2002-11-23}
x2=$123.23
DISPLAYMEMOLIKEy*
RELEASEALLLIKEy*
X={^2002-11-23,11:
30p}
DISPLAYMEMOLIKEX
RELEASEX
3·3常用函数
函数是用程序来实现的一种数据运算或转换。
每一个函数都有特定的数据运算或转换功能,它往往需要若干个自变量,即运算对象,但只能有一个运算
结果,称为函数值或返回值。
VFP中的函数有两种,用户自定义函数和系统函数。
函数可用函数名加一对圆括号加以调用,自变量放在圆括号里,如LEN(x)。
函数调用可以出现在表达式里,表达式将函数的返回值作为自己运算的对象。
一、数值函数P45表3-2
1
数值函数是指函数值为数值的一类函数,它们的自变量和返回值往往都是数值型数据。
1·绝对值和符号函数
ABS(<数值表达式>)返回指定的数值表达式的绝对值
SIGN(<数值表达式>)返回指定数值表达式的符号。
当表达式的运算结果
为正、负和零时,函数值分别为1、-1和0。
例:
STORE10TOX
?
ABS(5-X),ABS(X-5),SIGN(5-X),SIGN(X-10)
2·求平方根函数
SQRT(<数值表达式>)返回指定表达式的平方根。
表达式的值不能为负。
例:
?
SQRT
(2),
(2)^(1/2)
STORE–100TOX
?
SIGN(X)*SQRT(ABS(X))
3·圆周率函数
PI()返回圆周率π(数值型),该函数没有自变量。
4·求整数函数*
INT(<数值表达式>)返回指定数值表达式的整数部分
CEILING(<作数值表达式>)返回大于或等于指定数值表达式最小整数。
FLOOR(<数值表达式>)返回小于或等于指定数值表达式最大整数。
例:
STORE5.8TOX
?
INT(X),INT(-X),CEILING(X),CEILING(-X),FLOOR(X),FLOOR(-X)
5·四舍五入函数*
ROUND(<数值表达式1>,<数值表达式2>)
返回指定表达式在指定位置四舍五入后的结果。
<数值表达式2>指明四舍五入的位置。
若
<数值表达式2>大于等于0,表示要保留的小数位数<数值表达式2>小于0,表示整数部分的舍入位数。
例:
X=345.345
?
ROUND(X,2),ROUND(X,1),ROUND(X,0),ROUND(X,-1)
6·求余数函数*
MOD(<数值表达式l>,<数值表达式2>)
返回两个数值相除后的余数。
<数值表达式1>是被除数,<数值表达式2>是除数。
函数返回值的符号与<数值表达式2>相同。
例:
?
MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3)
7·求最大值和最小值函数
MAX(<数值表达式l>,<数值表达式2>[,<数值表达式3>,,,])
计算各自变量表达式的值,并返回其中的最大值。
MIN(<数值表达式l>,<数值表达式2>[,<数值表达式3>,,,])
计算各自变量表达式的值,并返回其中的最小值。
自变量表达式的类型可以是数值型、字符型、货币型、双精度型、浮点型、
日期时间型,但所有表达式的类型必须相同。
例:
?
MAX("2","12","05"),MAX(2,12,05),MIN("汽车","飞机","轮船")
?
MAX({^2005-05-10},{^2004-12-03},{^2006-01-01})8·随机函数RAND()
反回一个0~1的随机数,其值不确定。
二、字符函数P46表3-3
指自变量一般是字符型数据的函数。
1·求字符串长度函数
LEN(〈字符表达式〉)
返回指定字符表达式值的长度,即所包含的字符个数(一个汉字占两个字
符)。
函数值为数值型。
例:
X="中文visualFoxPro6.0"
?
LEN(X)
2·大小写转换函数
LOWER(<字符表达式>)大写字母转换成小写字母,其他字符不变UPPER(<字符表达式>)小写字母转换成大写字母,其他字符不变
例:
?
LOWER(‘Xly2A*’),UPPER(‘n=l’)
3·空格字符串生成函数
SPACE(<数值表达式>)返回由指定数目的空格组成的字符串。
?
”ab”+SPACE(3)+”cd”
4·删除前后空格函数*
TRIM(〈字符表达式〉)返回字符表达式值去掉尾部空格后形成字符串。
LTRIM(〈字符表达式〉)返回字符表达式值去掉前导空格后形成字符串。
ALLTRIM(〈字符表达式〉返回字符表达式值去掉前导和尾部空格后形成
的字符串。
例:
STORESPACE
(1)+"TEST"+SPACE(3)TOSS
?
TRIM(SS)+LTRIM(SS)+ALLTRIM(SS)
TESTTESTTEST
?
LEN(SS),LEN(TRIM(SS)),LEN(LTRIM(SS)),LEN(ALLTRIM(SS))
5·取子串函数*
LEFT(〈字符表达式〉,〈长度〉)
从表达式值的左端取一个指定长度的子串作为函数值RIGHT(〈字符表达式〉,〈长度〉)
从表达式值的右端取一个指定长度的子串作为函数值SUBSTR(〈字符表达式〉,〈起始位置〉[,<长度>])
从表达式值的指定起始位置取指定长度的子串作为函数值,若缺省第三个自变量之长度,,则从指定位置一直取到最后一个字符。
例:
STORE"GOODBYE!
"TOX
?
LEFT(X,2),SUBSTR(X,6,2)+SUBSTR(X,6),RIGHT(X,3)
6·计算子串出现次数函数*
OCCURS(<字符表达式1>,<字符表达式2>)
返回第一个字符串在第二个字符串中出现的次数,函数值为数值型,若第一
个字符串不是第二个字符串的子串,函数值为0。
2
例:
STORE‘abracadabra’TOS
?
OCCURS('a',S),OCCURS('b',S),OCCURS('c',S),OCCURS('e',S)
7·求子串位置函数*
AT(〈字符表达式1〉,〈字符表达式2〉[,<数值表达式>])
ATC(〈字符表达式1〉,〈字符表达式2〉[,<数值表达式>])
函数值为数值型。
如果<字符表达式1>是<字符表达式2>的子串,则返回<字符表达式1>值的首字符在<字符表达式2>值中的位置;若不是子串,则返回0。
ATC()与AT()功能类似,但在子串比较时不区分字母大小写。
第三个自变量<数值表达式>,用于表明要在<字符表达式2>值中搜索<字符表达式1>值的第几次出现,其默认值是1。
例:
STORE"ThisisvisualFoxPro"TOX
?
AT("fox",X),ATC("fox",X),AT("is",X,3),AT("xO",X)
8·子串替换函数*
STUFF(<字符表达式>,<起始位置>,<长度>,<字符表达式2>)
从<字符表达式>的<起始位置>开始删除<长度>个字符后插入<字符表达式
2>。
例:
STORE“GOODBYE!
”TOS1
STORE“MORNING”TOS2
?
STUFF(S1,6,3,S2),STUFF(S1,1,4,S2)
9·字符替换函数*
CHRTRAN(<字符表达式1>,<字符表达式2>,<字符表达式3>)
以<字符表达式3>替换在<字符表达式1>中出现的<字符表达式2>。
例:
X1=CHRTRAN("ABACAD","ACD","X12")
Y1=CHRTRAN("计算机ABC","计算机","电脑")
Z1=CHRTRAN("大家好!
","大家","你")
?
X1,Y1,Z1
10·字符串匹配函数
LIKE(<字符表达式1>,<字符表达式2>)
比较两个字符串对应位置上的字符,若所有对应字符都相匹配(注意区分大小写),函数返回逻辑真(.T.),否则返回逻辑假(.F.)。
<字符表达式1>中可以包含通配符*和?
。
*可与任何数目的字符相匹配,?
可与任何单个字符相匹配。
例:
STORE“abc”TOX
STORE"abcd"TOY
?
LIKE("ab*",X),LIKE("ab*",Y),LIKE(x,y)
?
LIKE("?
b?
",X),LIKE("Abc",X)
三、日期和时间函数
P46表3-4
自变量一般是日期型数据或日期时间型数据。
1·系统日期和时间函数
DATE()返回当前系统日期,函数值为日期型。
TIME()以24小时制、hh:
mm:
ss格式返回当前系统时间,函数值为
字符型。
DATETIME()返回当前系统日期时间,函数值为日期时间型。
例:
?
DATE(),TIME(),DATETIME()2·求年份、月份和天数函数
YEAR(<日期表达式>/<日期时间表达式>)
从指定的日期表达式或日期时间表达式中返回年份MONTH(<日期表达式>/<日期时间表达式>)
从指定的日期表达式或日期时间表达式中返回月份DAY(<日期表达式>/<日期时间表达式>)
从指定的日期表达式或日期时间表达式中返回月里面的天数这三个函数的返回值都为数值型。
例:
STORE{^2002-08-18}TOd
?
YEAR(d),MONTH(d),DAY(d)
3·时、分和秒函数
HOUR(<日期时间表达式>)从日期时间表达式中返回小时部分(24小
时制)
MINUTE(<日期时间表达式>)从日期时间表达式中返回分钟部分。
SEC(<日期时间表达式>)从日期时间表达式中返回秒数部分。
这三个函数的返回值都为数值型。
例:
STORE{^2002-03-1802:
30:
50P}TOt
?
HOUR(t),MINUTE(t),SEC(t)
四、数据类型转换函数P46表3-6
功能是将某一种类型的数据转换成另一种类型的数据。
1·数值转换成字符串*
STR(〈数值表达式>[,<长度>[,<小数位数>]]〉
将<数值表达式>的值转换成字符串,转换时根据需要自动进行四舍五入。
返回字符串的理想长度L是<数值表达式>值的整数部分位数加上<小数位
数>值,再加上1位小数点。
如果<长度>值大于L,则字符串加前导空格以满足规定的<长度>要求;
如果<长度>值大于等于<数值表达式>值的整数部分位数(包括负号)但又
小于L,则优先满足整数部分而自动调整小数位数;
如果<长度>值小于<数值表达式>值的整数部分位数,则返回一串星号(*)。
<小数位数>的默认值为0,<长度>的默认值为10,
例:
STORE–123.456TON
?
"N="+STR(N,8,3)
N=-123.456
?
STR(N,9,2),STR(N,6,2),STR(N,3),STR(N,6),STR(N)
-123.46-123.5***-123-123
2·字符串转换成数值*
VAL(<字符表达式>)
将由数字符号(包括正负号、小数点)组成的字符型数据转换成相应的数值
型数据。
1、若字符串内出现非数字字符,那么只转换前面部分;2、若字符串
的首字符不是数字符号,则返回数值零,但忽略前导空格。
例:
STORE‘-123.’TOXSTORE‘45’TOY
3
STORE‘A45'TOZ
?
VAL(X+Y),VAL(X+Z),VAL(Z+Y)
3·字符串转换成日期或日期时间*
CTOD(<字符表达式>)将<字符表达式>值转换成日期型数据
CTOT(<字符表达式>)将<字符表达式>值转换成日期时间型数据
字符串中的日期部分格式要与SETDATETO命令设置的格式一致。
其中的
年份可以用四位,也可以用两位。
例:
SETDATETOYMD&&显示日期或日期时间时,用4位数显示年份
SETCENTURYON
d1=CTOD('2002/03/18')
t1=CTOT(‘2002/03/1810:
31:
54PM‘)+20
?
d1,t1
4·日期或日期时间转换成字符串
DTOC(<日期表达式>/<日期时间表达式>[,1])
将日期型数据或日期时间数据的日期部分转换成字符串TTOC(<日期时间表达式>[,1])
将日期时间数据转换成字符串。
字符串中日期部分的格式与SETDATETO语句的设置和SETCENTURYON/
FF(ON为四位数年份,OFF为两位数年份)语句的设置有关。
时间部分的格式受SETHOURSTOl2/24语句的设置影响。
对DTOC(),如果使用选项1,则字符串的格式总是为YYYYMMDD,共8个字
符。
对TTOC(),如果使用选项1,则字符串的格式总是为YYYYMMDDHHMMSS,采
用24小时制,共14个字符。
例:
STOREDATETIME()TOT
?
T
?
DTOC(t),DTOC(t,1),TTOC(t),TTOC(t,1)
5·宏替换函数*
&<字符型变量>,[.]
替换出字符型变量的内容,即&的值是变量中的字符串。
如果该函数与其后的字符无明确分界,则要用"·"作函数结束标识。
宏替换可以嵌套使用。
例:
STORE“STU”TODB
USE&DB&&相当于USESTU
XM1="姓名"
?
&XM1-"你好!
"&&相当于?
姓名-"你好!
"
李梅你好!
&&字段变量姓名的值是李梅
SKIP&&转到下条记录
?
”姓名”,&XM1&&相当于?
“姓名”,XM
姓名李英
五、测试函数P46表3-5P47表3-7
在数据处理过程中,有时用户需要了解操作对象的状态。
例如,要使用的文件是否存在、数据库表的当前记录号、是否到达了文件尾、检索是否成功、某工作区中记录指针所指的当前记录是否有删除标记、数据类型等信息。
尤其是在运行应用程序时,常常需要根据测试结果来决定下一步的处理方法或程序走向。
1·值域测试函数*
BETWEEN(<表达式T>,<表达式L>,<表达式H>)
判断一个表达式的值是否介于另外两个表达式的值之间。
当<表达式T>值大于等于<表达式L>,且小于等于<表达式H>时,函数值为逻辑真(.T.),否则函数值为逻辑假(.F.)。
注意:
如果<表达式L>,或<表达式H>,有一个是NULL值,那么函数值也
是NULL值。
该函数的自变量类型既可以是数值型,也可以是字符型、日期型、日期时
间型、浮点型、整型、双精度型或货币型。
但三个自变量的数据类型要一致。
例:
STORE.NULL.TOXSTORE100TOY
?
BETWEEN(150,Y,Y+100),BETWEEN(90,X,Y)
2·空值(NULL值)测试函数
ISNULL(<表达式>)
判断一个表达式的运算结果是否为NULL值,若是NULL值返回逻辑真(.T.),
否则返回逻辑假(.F.)
例:
STORE.NULL.TOX
?
X,ISNULL(X)
3·"空"值测试函数*EMPTY(<表达式>)
根据指定表达式的运算结果是否为"空"值,返回逻辑真(.T.)或逻辑假
(.F.)。
首先要注意,这里所指的"空"值与NULL值是两个不同的概念。
函数EMPTY(.NULL.)的返回值为逻辑假(.F.)。
其次,该函数自变量表达式的类型除
了可以是数值之外,还可以是字符型、逻辑型、日期型等类型。
不同类型数据的"空"值,有不同的规定如下表所示。
数据类型
"空值"
数据类型
"空值"
数值型
0
双精度型
0
字符型
空串、空格、制表符、回车、换行
日期型
空(如CTOD(""))
货币型
0
日期时间
空(如CTOT(""))
浮点型
0
逻辑型
.F.
整型
0
备注字段
空(无内容)
例:
?
EMPTY(.NULL.),EMPTY(0),EMPTY(‘‘),EMPTY(.F.)
USESTU
EMPTY(简历)
4·数据类型测试函数
VARTYPE(<表达式>[,<逻辑表达式>])
测试<表达式>的类型,返回一个大写字母,函数值为字符型。
字母的含义如下表所示。
若<表达式>的运算结果是NULL值,则根据<逻辑表达式>值决定是否返回<表达式>的类型:
如果<逻辑表达>值为.T.,就返回<表达式>的原数据类型。
如
果<逻辑表达式>值为.F.或缺省,则返回X,以表明<表达式>的运算结果是NULL值。
返回的字母数据类型返回的字母数据类型
C字符型或备注型G通用型
N数值型、整型、浮点型或双精度型D日期型
4
Y
货币型
T
日期时间型
L
逻辑型
X
Null值
O
对象型
U
未定义
例:
X="AAA"
STORE10TOY
STORE.NULL.TOX
STORE$100.2TOZ
?
VARTYPE(X),VARTYPE(X,.T.),VARTYPE(Y),VARTYPE(Z)
XCNY
5·表文件尾测试函数*
系统对表中的记录是逐条进行处理的。
对于一个打开的表文件来说,在某
一时刻只能处理一条记录。
VFP为每一个打开的表设置了一个内部使用的记录
指针,指向正在被操作的记录,该记录称为当前记录。
记录指针的作用是标识
表的当前记录。
表文件的逻辑结构下图所示。
最上面的记录是首记录,记为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 课件