第2章VFP表达式及应用.docx

上传人:b****7 文档编号:9508022 上传时间:2023-02-05 格式:DOCX 页数:51 大小:51.56KB
下载 相关 举报
第2章VFP表达式及应用.docx_第1页
第1页 / 共51页
第2章VFP表达式及应用.docx_第2页
第2页 / 共51页
第2章VFP表达式及应用.docx_第3页
第3页 / 共51页
第2章VFP表达式及应用.docx_第4页
第4页 / 共51页
第2章VFP表达式及应用.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

第2章VFP表达式及应用.docx

《第2章VFP表达式及应用.docx》由会员分享,可在线阅读,更多相关《第2章VFP表达式及应用.docx(51页珍藏版)》请在冰豆网上搜索。

第2章VFP表达式及应用.docx

第2章VFP表达式及应用

第2章VFP表达式及应用

数据是程序加工处理的对象,并以某种特定的形式存在。

在VFP中,各个数据的类型可能不同,不同数据类型决定了数据不同的存储方式与运算方法。

表达式是运算符连接常数、变量和函数等构成的运算式。

表达式作为命令的重要组成部分,主要完成各种计算任务。

2.1数据类型与常数

常数是在命令或程序执行过程中保持不变的量,而变量则指其值可以变化的量。

2.1.1 数值型数据

数值型数据,即能参与算术运算的数据,由数字0~9、小数点与正负号组成,其数据类型用符号N表示。

数值型数据在内存中占8个字节,能表示1~20位数据,整数在-6899999999999998至6899999999999998之间无误差;能表示的小数位数为0~19,小数位数≤15位(不含符号位)无误差。

数值型常数是整数或实数,如:

23、-153和123.48,也可以用科学计数法表示数值型数据,如:

用2.34e+4表示2.34×104,即23400。

2.1.2 字符型数据

字符型数据是英文字母、汉字或数字等符号组成的一串字符,其数据类型用符号C表示。

一个字符型数据最多可由16777184个字符组成,半角英文字符占一个字节,一个汉字或全角字符占两个字节。

字符型常数也称为字符串,是用定界符括起来的一串字符。

定界符可以是半角的单引号、双引号或方括号,必须成对使用。

如:

’我是学生’、”IStudyVFP”和[男]都是字符型常数。

定界符本身不作为字符型常数的内容,当某种定界符是字符串中的内容时,必须用另一种定界符作为标志,如:

’老师说:

”明天交作业”’和[“Windows”操作]。

字符串长度是指字符串中所含字符的个数(1个半角字符长度为1,1个汉字或全角字符长度为2)。

如:

字符串常数”说:

'What'”的长度为9。

2.1.3 货币型数据

货币型数据作为一种特殊的数值型数据,用来表示货币值。

其数据类型用符号Y表示。

货币型常数是在数值前加货币符号$,如:

$12.34。

货币型常数在存储和计算时,系统自动保留4位小数,小数多于4位时四舍五入。

如:

$123.456789将自动存储为$123.4568。

货币型数据在内存中占8个字节,取值范围为-922337203685477.5807~922337203685477.5807。

与数值型数据不同,货币型常数不能用科学计数法表示。

2.1.4日期型数据

日期型数据可表示某一个日期。

数据类型用符号D表示,占8个字节,取值范围为:

0001年1月1日~9999年12月31日。

日期型常数用一对大括号“{}”括起来,其中包含年、月、日三部分内容,各部分内容之间可以用斜杠(/)、连字号(-)、小数点(.)或空格等进行分隔。

1.设置传统/严格日期格式

日期型常数有传统和严格两种格式。

传统的默认格式是美语日期格式{mm/dd/yy}。

传统格式受命令SetDate和SetCentury的影响。

不同设置状态,VFP对同一个日期型常数的解释不一样。

如:

对日期型常数{08/10/01},VFP可能认为是2008年10月1日或2001年8月10日。

严格日期格式为{^yyyy-mm-dd}或{^yyyy/mm/dd}。

用符号“^”作为严格日期常数的开始符号,年月日的次序不能改变,年份必须为4位,它不受命令SetDate和SetCentury命令的影响,在任何情况下都表示唯一确切的日期。

两种日期常数格式可通过命令进行设置:

命令格式:

SetStrictdateTo0|1

命令说明:

设置传统日期格式(0)或严格日期格式

(1)。

【例2.1】

SetStrictdateTo0&&设置成传统日期格式

SetDateAnsi

SetCenturyOn

X={07.10.01}&&X赋值成:

2007年10月1日

?

X&&输出结果为:

2007.10.01

SetStrictdateTo1&&设置成严格日期格式

Y={^2008/10/01}&&Y赋值成:

2008年10月1日

?

Y&&输出结果为:

2008.10.01

2.设置日期分隔符

命令格式:

SetMarkTo<字符表达式>

命令说明:

设置显示日期时的分隔符。

字符表达式值中的首字符为分隔符。

若省略<字符表达式>,则恢复系统默认的分隔符。

【例2.2】

SetDateANSI

SetCenturyOn

SetMarkTo“–”

?

{^2007/10/01}&&输出结果为:

2007-10-01

SetMarkTo[.]

?

{^2007/10/01}&&输出结果为:

2007.10.01

SetMarkTo‘w’

?

{^2007/10/01}&&输出结果为:

2007w10w01

SetMarkTo

?

{^2007/10/01}&&输出默认的分隔符,结果为:

2007.10.01

3.设置世纪值

命令格式:

SetCenturyTo<世纪值>Rollover<年份参照值>

命令说明:

世纪值范围为1~99,年份值范围为0~99。

此命令仅对两位年份的日期有影响。

执行此命令后,设某日期数据为MM/DD/YY,当YY≥年份参照值时,系统将该日期数据视为:

MM/DD/世纪值*100+YY;当YY<年份参照值时,系统将该日期数据视为:

MM/DD/(世纪值+1)*100+YY。

【例2.3】

SetDateANSI

SetCenturyOn

SetCenturyTo19Rollover10

SetMarkTo"."

?

Ctod(“49.10.01”)&&由于年份值49>年份参照值10,输出:

1949.10.01

?

Ctod(“09.10.01”)&&由于年份值09<年份参照值10,输出:

2009.10.01

2.1.5日期时间型数据

日期时间型数据表示日期和时间,其数据类型用符号T表示。

日期时间型数据占8个字节。

日期时间型常数由日期和时间两部分组成,日期部分取值范围为0001年1月1日至9999年12月31日,时间部分为00:

00:

00Am至11:

59:

59Pm。

日期部分也有传统和严格两种格式。

系统默认采用严格的日期时间格式:

{^yyyy-mm-dd[,]hh:

mm:

ss[a|p]},日期和时间之间可以用逗号或空格分隔,a(或AM)表示上午;p(或PM)表示下午,默认是AM。

如:

{^2008-8-18:

18:

30}表示2008年8月1日上午8点18分30秒。

{^2008-8-18:

18:

30P}表示2008年8月1日下午8点18分30秒。

2.1.6逻辑型数据

逻辑型数据用来表示逻辑判断的结果,比如条件成立与否,事物的真或假、是与非等。

其数据类型用符号L表示,逻辑型数据占1个字节。

逻辑型常数只有真和假两种值。

用.T.、.t.、.Y.或.y.表示真;用.F.、.f.、.N.或.n.表示假。

作为逻辑型常数定界符的前后小数点“.”不能省略。

2.2简单内存变量

变量分为内存变量和字段变量两类。

内存变量又分为简单变量和数组变量两类。

内存变量存储在内存中,用来存放程序执行中的原始数据或中间结果。

内存变量名由字母、汉字、数字或下划线组成,不能以数字开头。

如X、年龄和_No都是内存变量名。

而1月工资、$12.3和a+B不是正确的内存变量名。

在VFP中,允许内存变量和字段变量同名,如果内存变量与当前表中的字段(变量)出现重名,在引用内存变量时,需要加前缀“M.”或“M->”,明确指出内存变量。

如果不加前缀,将引用同名字段变量的值。

如:

M.姓名表示引用内存变量姓名的值。

2.2.1内存变量赋值

使内存变量有确切值的操作称为内存变量赋值。

在VFP中,使用内存变量前必须先赋值。

通过赋值命令为内存变量首次赋值时,就创建(定义)了内存变量,既规定了变量名,又指定了变量的值。

所赋值的数据类型决定了内存变量的数据类型。

有许多为内存变量赋值的命令,典型的命令有:

命令格式1:

<内存变量名>=<表达式>

命令格式2:

Store<表达式>To<内存变量名表>

命令说明:

两条命令的功能都是将表达式的值赋给内存变量。

格式1只能给一个内存变量赋值;格式2可以同时给多个内存变量赋相同的值。

【例2.4】

M=”男”&&执行后m的值为:

男,其数据类型为字符型

Store2*3ToX,Y&&执行后X和Y的值都是6,数据类型都为数值型

2.2.2内存变量的清除

内存变量使用完毕,应该从内存中将其清除,以便释放更多的可用内存空间。

清除(释放)内存变量的命令有:

命令格式1:

ClearMemory

命令格式2:

Release<内存变量名表>

命令说明:

格式1清除全部内存变量和数组,格式2清除指定的内存变量和数组。

【例2.5】

Store2*4ToX,Y,Z

ReleaseX

?

Y&&内存变量仍然存在,输出8

?

X&&由于X被清除,故系统提示:

找不到变量X

命令格式3:

ClearAll

命令说明:

用于关闭所有打开的文件,清楚全部内存变量和数组,也称初始化命令。

命令格式4:

ReleaseAll[Like<变量名通配符>|Except<变量名通配符>]

命令说明:

变量名通配符中可以包含“?

”或“*”,表示一批变量。

其中“?

”代表其出现位置的任意一个字符(如果出现在最后,也表示没有字符),例如,“X?

”表示以X开头,最多由两个字符组成的一批变量名;通配符“*”代表其出现位置的任意多个(包括没有)字符,即字符个数是任意的,每位上的字符也是任意的。

如:

“X*”表示变量名以X开头的所有变量。

各选项的含义为:

(1)All:

清除所有内存变量和数组。

(2)AllLike<变量名通配符>:

清除与“变量名通配符”匹配的变量和数组。

(3)AllExcept<变量名通配符>:

清除与“变量名通配符”不能匹配的变量和数组。

【例2.6】

Store1ToX,X1,X11,X12,Y,Y1,Y2,Y11,Y12,M1,M12,N1,N12

ReleaseAllLikeY1?

&&清除Y1,Y11和Y12

ReleaseAllLikeX*&&清除X,X1,X11和X12

ReleaseAllExceptM* &&仅保留M1和M12

ClearAll &&释放全部内存变量,并关闭所有文件

2.2.3输出表达式值

可以通过VFP命令输出表达式的值(即运算结果)。

命令格式1:

?

[<表达式表>]

命令格式2:

?

?

[<表达式表>]

命令说明:

先计算“表达式表”中每个表达式的值,再依次输出这些值。

格式1从下一行开始位置输出计算结果,若省略“表达式表”,则输出一个空行。

格式2从当前位置开始输出计算结果。

【例2.7】

?

'总成绩',62+20

?

?

"分"&&输出:

总成绩 82分

2.3数值型表达式

表达式是运算符连接常数、变量和函数等运算对象所构成的运算式。

运算符是对数据进行操作的符号。

单个常数、变量和函数是表达式的特例,即只有一个运算对象,没有运算符。

表达式的运算结果称为表达式的值,根据表达式值的数据类型可分为数值表达式、字符表达式、日期表达式、关系表达式和逻辑表达式。

在VFP中只有同类型的数据(除日期与数值运算外)才能进行运算。

2.3.1数值运算符

VFP中的数值运算符如表2.1。

表2.1数值运算符

优先级别

算术运算符

说明

数学表达式

转换成VFP表达式

1

+、-

取正负

-(+X)

-(+X)

2

**或^

乘方

X3

X^3或x**3

3

*、/、%

乘、除、求余

2/((3*X+1)/(X-1))

4

+、-

加、减

X+Y-1

X+Y-1

在表2.1中,取负运算的优先级别最高,其次是乘方,然后是乘、除法与求余运算(同级),最后是加与减运算(同级)。

当两个同符号数求余运算(%)时,结果为第一个数除以第二个数的余数;当两个异符号数求余时,结果为第一个数除以第二个数的余数再加上第二个数。

【例2.8】

?

8%3,8%-3,-8%3,-8%-3&&输出结果为:

2-11-2

2.3.2常用数值型函数

函数作为一种特殊的表达式,可分为系统函数和用户自定义函数。

系统函数也称为标准函数,是VFP系统定义的函数,可以直接使用。

自定义函数是用户编写的子程序。

通常调用一个函数需要带有参数,调用结束后会有一个运算结果,称运算结果为函数返回值或函数值。

返回值的类型决定了函数的数据类型。

数值型函数指函数值为数值型。

1.符号函数

函数格式:

Sign(<数值表达式>)

函数说明:

返回值表示数值表达式值的符号。

表达式的值为正、零和负值时,函数值分别是1、0和-1。

【例2.9】

X=2*4

?

Sign(X),Sign(X-8),Sign(-X)&&输出结果为:

10-1

2.求绝对值函数

函数格式:

Abs(<数值表达式>)

函数说明:

返回值为数值表达式的绝对值。

【例2.10】

X=-2*3

?

Abs(X+3)&&输出结果为:

3

3.求平方根函数

函数格式:

Sqrt(<数值表达式>)

函数说明:

返回值是数值表达式值的算术平方根,数值表达式值必须大于或等于0。

【例2.11】

?

Sqrt(16)&&输出结果为:

4.00

4.求指数函数

函数格式:

Exp(<数值表达式>)

函数说明:

若数值表达式的值为x,则函数返回值是ex。

【例2.12】

?

Exp(0),Exp

(2)&&输出结果为:

1.007.39

5.求自然对数函数

函数格式:

Log(<数值表达式>)

函数说明:

函数返回值是以e为底数,表达式值的对数。

数值表达式值必须大于0。

【例2.13】

?

Log(10),Log(Exp

(2))&&输出结果为:

2.302.00

6.求余函数

函数格式:

Mod(<数值表达式1>,<数值表达式2>)

函数说明:

函数值是数值表达式1除以数值表达式2的余数。

功能与“<数值表达式1>%<数值表达式2>”相同。

【例2.14】

?

Mod(8,3),Mod(8,-3),Mod(-8,3),Mod(-8,-3)&&输出结果是:

2-11-2

7.求圆周率函数

函数格式:

Pi()

函数说明:

函数返回值是圆周率。

其精度与SetDecimalto<小数位数>命令有关,系统默认显示到小数点后两位。

【例2.15】

SetDecimalto10&&设置小数点后显示10位

?

Pi()*10*10&&输出结果为:

314.1592653590

8.求最大值和最小值函数

函数格式:

Max(<表达式表)

Min(<表达式表)

函数说明:

Max函数是求表达式表中所有表达式值的最大者。

Min函数是求最小者。

各表达式的数据类型必须一致,,可以是数值型、字符型、货币型、日期型、日期时间型或逻辑型等。

此类函数可以有多个参数,至少要有两个参数。

【例2.16】

?

Max(8,-2*3,10,3),Min(8,-2*3,10,3)&&输出:

10-6

?

Max(‘A’,’B’,’C’),max(.f.,.T.,.n.)&&输出:

C.T.

?

Max($200,$100,$300)&&输出:

300.0000

9.求整函数

函数格式1:

Int(<数值表达式>)

函数格式2:

Ceiling(<数值表达式>)

函数格式3:

Floor(<数值表达式>)

函数说明:

Int函数的值是数值表达式的整数部分,而不是四舍五入;Ceiling函数值是大于或等于数值表达式值的最小整数;Floor函数值是小于或等于数值表达式值的最大整数。

【例2.17】

?

Int(2.8),Int(-2.8)&&输出结果为:

2-2

?

Ceiling(2.8),Ceiling(-2.8)&&输出结果为:

3-2

?

Floor(2.8),Floor(-2.8)&&输出结果为:

2-3

10.四舍五入函数

函数格式:

Round(<数值表达式1>,<数值表达式2>)

函数说明:

返回值为数值表达式1的值在指定位置上四舍五入后的结果。

四舍五入位置由数值表达式2的值决定。

若数值表达式2的值小于0,数值表达式2的绝对值表示对数值表达式1在整数位(0为个位)上进行四舍五入,即0表示在小数点后第一位上进行四舍五入,保留到个位;-1表示在个位上进行四舍五入,保留到十位;依次类推。

【例2.18】

?

Round(2.56,1),Round(2.56,0),&&输出:

2.63

?

Round(2.56,-1),Round(7.56,-1)&&输出:

010

11.求ASCII码值函数

函数格式:

Asc(<字符表达式>)

函数说明:

返回值是字符表达式值中首字符的ASCII码值。

【例2.19】

?

Asc(”EnglishAbc”)&&输出结果为E的ASCII码值:

69

12.求字符串长度函数

函数格式:

Len(<字符表达式>)

函数说明:

返回值是字符表达式值中所含字符的个数,空格也计算在内。

每个汉字占两个字符位置。

【例2.20】

?

Len(”学习︼VFP6.0”)&&输出结果为:

11

13.求子串起始位置函数

函数格式:

At(<字符表达式1>,<字符表达式2>[,<数值表达式>])

Atc(<字符表达式1>,<字符表达式2>[,<数值表达式>])

函数说明:

设<数值表达式>值的整数部分为n,当n=1时,可以省略<数值表达式>。

函数值是字符表达式1的值在<字符表达式2>值中第n出现(由左至右)的开始位置,如果出现次数小于n,则函数值为0。

At函数区分字母大小写,而Atc函数不区分字母大小写,其余功能两个函数一致。

【例2.21】

?

AT('AR','cadARA'),AT('AA','cadAARA',2),ATC('A','cadARA')&&输出:

402

14.求子串出现次数函数

函数格式:

Occurs(<字符表达式1>,<字符表达式2>)

函数说明:

计算字符表达式1的值在字符表达式2值中出现的次数。

【例2.22】

?

Occurs(“ab”,”cabdabe”),Occurs(“ab”,”cadbaeb”)&&输出:

20

15.求年份函数

函数格式:

Year(<日期表达式>)

函数说明:

函数值是日期表达式值的年份值,值范围为0001~9999。

【例2.23】

?

Year({^2007-10-01})&&输出:

2007

16.求月份函数

函数格式:

Month(<日期表达式>)

函数说明:

函数值是日期表达式值中的月份值,值范围为1~12。

【例2.24】

?

Month({^2007-10-01})&&输出:

10

17.求星期函数

函数格式:

Dow(<日期表达式>)

函数说明:

函数值是日期表达式值对应的星期几。

值范围为1~7,其中1代表星期日、2代表星期一、……、7代表星期六。

【例2.25】

?

Dow({^1949/10/01})&&输出:

 7,代表星期六

18.求日数函数

函数格式:

Day(<日期表达式>)

函数说明:

函数值是日期表达式值的日数,值范围为1~31。

【例2.26】

?

Day({^2007-03-15})&&输出:

15

19.求小时函数

函数格式:

Hour(<日期时间表达式>)

函数说明:

函数值表示小时,采用24小时制。

【例2.27】

?

Hour({^2007-05-011:

22:

33p})&&输出:

13

20.求分钟函数

函数格式:

Minute(<日期时间表达式>)

函数说明:

函数值表示分钟。

【例2.28】

?

Minute({^2007-05-011:

22:

33p})&&输出:

22

21.求秒钟函数

函数格式:

Sec(<日期时间表达式>)

函数说明:

函数值表示秒数。

【例2.29】

?

Sec({^2007-05-011:

22:

33p})&&输出结果为:

33

22.字符转换成数值函数

函数格式:

Val(<字符表达式>)

函数说明:

将字符表达式值的首部可转换的子串转换成数值型数据,作为函数的返回值。

如果字符串的首字符不是可转换符号,则函数返回值为0。

【例2.30】

?

Val("-2")*3,Val("1.2E1")*3&&输出结果为:

-6.0036.00

?

Val("1.23a56")*2,Val("A123")&&输出结果为:

2.460.00

2.4字符型表达式

字符表达式是字符运算符连接字符型数据的运算式,运算结果是字符型数据。

2.4.1字符运算符

VFP中有两种字符运算符:

(1)+:

将两个字符型数据依次连接起来,构成一个新的字符型数据。

(2)-:

先将第一个字符型数据的尾部空格移动到第二个字符型数据的尾部,再依次连接成一个新的字符型数据。

【例2.31】

S1='︼学︼生︼︼'

S2='︼成︼绩︼'

?

S1+S2+'︼表︼A'&&输出:

︼学︼生︼︼︼成︼绩︼︼表︼A

?

S1-S2+'︼表︼A'&&输出:

︼学︼生︼成︼绩︼︼︼︼表︼A

可见运算符“-”并不移动第一个字符型数据的中间空格位置。

2.4.2常用字符型函数

字符型函数是指函数值为字符型数据的函数。

1.生成空格函数

函数格式:

Space(数值表达式)

函数说明:

数值表达式的值应大于或等于0。

设其整数部分为n,利用此函数可以产生由n个空格的字符串。

若n等于0,则函数产生一个空字符串,即长度为0的字符串。

【例2.32】

?

’VFP’+Space(3)+’6.0版’&&输出结果为:

VFP︼︼︼6.0版

2.删除空格函数

函数格式:

Ltrim(<字符表达式>)

Trim(<字符表达式>)

Rtrim(<字符表达式>)

Alltrim(<字符表达式>)

函数说明:

利用Ltrim、Trim和Alltrim函数可分别去掉字符表达式值的左端空格、尾部空格和两端空格。

Trim和Rtrim功能相同。

【例2.33】

?

Ltrim('︼成︼绩︼')&&输出:

成︼绩︼

?

Trim('︼成︼绩︼')&&输出:

︼成︼绩

?

Alltrim(')成)绩)')&&输出:

成︼绩

可见这3个函数都不能去掉字符表达式值的中间空格。

3.取左子串函数

函数格式:

Left(<字符表达式>,<长度>)

函数说明:

<长度>是数值表达式。

设其值的整数部分为n,从字符表达式值的左端第一个字符开始取n个字符作为函数值。

【例2.34】

?

Left(”VFP6.0”,3)&&输出结果为:

VFP

4.取右子串函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1