第2章VFP表达式及应用

2019-05-24 16:19

第2章 VFP表达式及应用

数据是程序加工处理的对象,并以某种特定的形式存在。在VFP中,各个数据的类型可能不同,不同数据类型决定了数据不同的存储方式与运算方法。表达式是运算符连接常数、变量和函数等构成的运算式。表达式作为命令的重要组成部分,主要完成各种计算任务。

2.1 数据类型与常数

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

2.1.1 数值型数据

数值型数据,即能参与算术运算的数据,由数字0~9、小数点与正负号组成,其数据类型用符号N表示。数值型数据在内存中占8个字节,能表示1~20位数据,整数在-6899999999999998至6899999999999998之间无误差;能表示的小数位数为0~19,小数位数≤15位(不含符号位)无误差。

数值型常数是整数或实数,如:23、-153和123.48,也可以用科学计数法表示数

4

值型数据,如:用2.34e+4表示2.34×10,即23400。

2.1.2 字符型数据

字符型数据是英文字母、汉字或数字等符号组成的一串字符,其数据类型用符号C表示。一个字符型数据最多可由16777184个字符组成,半角英文字符占一个字节,一个汉字或全角字符占两个字节。

字符型常数也称为字符串,是用定界符括起来的一串字符。定界符可以是半角的单引号、双引号或方括号,必须成对使用。如:’我是学生’、”I Study VFP”和[男]都是字符型常数。定界符本身不作为字符型常数的内容,当某种定界符是字符串中的内容时,必须用另一种定界符作为标志,如:’老师说:”明天交作业 ”’和[“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}。传统格式受命令Set Date 和Set Century的影响。不同设置状态,VFP对同一个日期型常数的解释不一样。 如:对日期型常数{08/10/01},VFP可能认为是2008年10月1日或2001年8月10日。

严格日期格式为{^yyyy-mm-dd}或{^yyyy/mm/dd}。用符号“^”作为严格日期常数的开始符号,年月日的次序不能改变,年份必须为4位,它不受命令Set Date和Set Century命令的影响,在任何情况下都表示唯一确切的日期。两种日期常数格式可通过命令进行设置:

命令格式:Set Strictdate To 0|1

命令说明:设置传统日期格式(0)或严格日期格式(1)。 【 例2.1 】

Set Strictdate To 0 && 设置成传统日期格式 Set Date Ansi Set Century On

X={07.10.01} && X赋值成:2007年10月1日 ? X && 输出结果为:2007.10.01 Set Strictdate To 1 && 设置成严格日期格式 Y={^2008/10/01} && Y赋值成:2008年10月1日 ? Y && 输出结果为:2008.10.01

2. 设置日期分隔符

命令格式:Set Mark To <字符表达式>

命令说明:设置显示日期时的分隔符。字符表达式值中的首字符为分隔符。若省略<字符表达式>,则恢复系统默认的分隔符。

【 例 2.2 】

Set Date ANSI Set Century On Set Mark To “–”

? {^2007/10/01} && 输出结果为:2007-10-01 Set Mark To [.]

? {^2007/10/01} && 输出结果为:2007.10.01 Set Mark To ‘w’

? {^2007/10/01} && 输出结果为:2007w10w01 Set Mark To

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

3. 设置世纪值

命令格式:Set Century To <世纪值> Rollover <年份参照值>

命令说明:世纪值范围为1~99,年份值范围为0~99。此命令仅对两位年份的日期有影响。执行此命令后,设某日期数据为MM/DD/YY,当YY≥年份参照值时,系统将该日期数据视为:MM/DD/世纪值*100+YY;当YY<年份参照值时,系统将该日期数据视为:MM/DD/(世纪值+1)*100+YY。

【 例 2.3 】

Set Date ANSI Set Century On

Set Century To 19 Rollover 10 Set Mark To \

? 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:00 Am至11:59:59 Pm。

日期部分也有传统和严格两种格式。系统默认采用严格的日期时间格式: {^yyyy-mm-dd[,]hh:mm:ss [a|p]},日期和时间之间可以用逗号或空格分隔,a(或AM) 表示上午;p(或PM) 表示下午,默认是AM。如:

{^2008-8-1 8:18:30 } 表示2008年8月1日上午8点18分30秒。 {^2008-8-1 8:18:30 P} 表示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的值为:男,其数据类型为字符型 Store 2*3 To X,Y && 执行后X和Y的值都是6,数据类型都为数值型

2.2.2 内存变量的清除

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

命令格式1:Clear Memory

命令格式2:Release <内存变量名表>

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

【 例 2.5 】

Store 2*4 To X, Y, Z Release X

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

? X && 由于X被清除,故系统提示:找不到变量X

命令格式3:Clear All

命令说明:用于关闭所有打开的文件,清楚全部内存变量和数组,也称初始化命令。 命令格式4:Release All [Like <变量名通配符> | Except <变量名通配符>] 命令说明:变量名通配符中可以包含“?”或“*”,表示一批变量。其中“?”代表其出现位置的任意一个字符(如果出现在最后,也表示没有字符),例如,“X?”表示以X开头,最多由两个字符组成的一批变量名;通配符“*”代表其出现位置的任意多个(包括没有)字符, 即字符个数是任意的,每位上的字符也是任意的。如:“X*”表示变量名以X开头的所有变量。各选项的含义为:

(1)All:清除所有内存变量和数组。

(2)All Like <变量名通配符>:清除与“变量名通配符”匹配的变量和数组。 (3)All Except <变量名通配符>:清除与“变量名通配符”不能匹配的变量和数组。 【 例 2.6 】

Store 1 To X, X1, X11, X12, Y, Y1, Y2, Y11, Y12, M1, M12, N1, N12 Release All Like Y1? && 清除Y1, Y11和Y12 Release All Like X* && 清除X, X1, X11和X12 Release All Except M* && 仅保留M1和M12

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

2.2.3 输出表达式值

可以通过VFP命令输出表达式的值(即运算结果)。 命令格式1:? [<表达式表>] 命令格式2:?? [<表达式表>]

命令说明:先计算“表达式表”中每个表达式的值,再依次输出这些值。格式1从下一行开始位置输出计算结果,若省略“表达式表”,则输出一个空行。格式2从当前位置开始输出计算结果。

【 例 2.7 】

? '总成绩', 62+20

?? \分\ 输出:总成绩 82分

2.3 数值型表达式

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


第2章VFP表达式及应用.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Hypermesh总结-几何清理篇

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: