第二章VisualFoxPro中数据和运算_第1页
第二章VisualFoxPro中数据和运算_第2页
第二章VisualFoxPro中数据和运算_第3页
第二章VisualFoxPro中数据和运算_第4页
第二章VisualFoxPro中数据和运算_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章VisualFoxPro中数据和运算本章要点2.1VisualFoxPro的数据类型

2.2VisualFoxPro的常量与变量

2.3VisualFoxPro的函数

2.4VisualFoxPro的表达式

2.1VisualFoxPro中的数据类型

1.字符型数据(C)13.二进制备注型2.数值型数据(N)4.浮点型数据(F)5.双精度符型数据(B)7.逻辑型数据(L)6.货币型数据(Y)3.整型数据(I)8.日期型数据(D)9.日期时间型数据(T)10.备注型数据(M)11.通用型数据(G)12.二进制字符型字符型(Character)数据是不具计算能力的文字数据类型,用字母C表示。字符型数据包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0~254个字符。

注意:如果将阿拉伯数字定义为字符型数据时,它不具备数学上的数值含义,不能参加数学运算,如号码,等。

字符型数值型数据由数字、小数点、正负号和表示乘幂的字母E组成,数值精度达16位。

1.数值型数值型(Numeric)数据由数字、小数点、正负号和字母E组成,用字母N表示。通常用于表示实数。如23,-103.45,1.3E-5(即1.3×10-5)等;2.1.2数值型

2.浮点型浮点型(Float)数据是数值型数据的一种,用字母F表示。它与数值型数据完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。

3.双精度型双精度型(Double)数据是具有更高精度的一种数值型数据,用字母B表示。它采用固定长度浮点格式存储,占用8个字节

4.整型整型(Integer)数据是不包含小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储,占用4个字节。2.1.2数值型日期型(Date)数据是表示日期的数据,用字母D表示。日期的默认格式是{mm/dd/[yy]yy},其中mm表示月份,dd表示日期,yyyy表示年度,固定长度8位。有效的日期型和日期时间型数据分隔符为:连字符"-”、正斜杠"/”、句点".”和空格。如{09/16/2002}表示2002年9月16日。2.1.3日期型日期时间型(DateTimes)数据是表示日期和时间的数据,用字母T表示。日期时间的默认格式是{mm/dd/yyyyhh:mm:ss},其中mm、dd、yyyy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。日期时间型数据也是采用固定长度8位。如{10/01/200210:30:30}表示2002年10月1日10时30分30秒。

2.1.4日期时间型逻辑型(Logic)数据是描述客观事物真假的数据类型,表示逻辑判断的结果,用字母L表示。逻辑型数据只有真(.t.或.y.)和假(.f.或.n.)两种,固定长度1位。为区别其他数据类型,一般需在表示逻辑值的字母t、y、f、n的前后加圆点符".”。

2.1.5逻辑型备注型(Memo)数据是表示、存放较多字符的数据类型。可以把它看成是字符型数据的特殊形式,用字母M表示。备注型数据没有数据长度限制,仅受限于磁盘空间。它只用于表中字段类型的定义,字段长度固定为4位,实际数据存放在与表文件同名的备注文件(.FPT)中,长度根据数据的内容而定。2.1.6备注型2.1.7通用型通用型(General)数据是存储OLE(对象链接嵌入)对象的数据类型,用字母G表示。通用型数据中的OLE对象可以是电子表格、文档、图形图片等。它只用于表中字段类型的定义。通用型数据字段长度固定为4位,实际数据长度仅受限于磁盘空间。2.1.8货币型

货币型(Currency)数据是为存储美元金额而使用的一种称为货币(Currency)的数据类型,其取值范围是:-922337203685477.5808~922337203685477.5807,默认保留4位小数,占据8字节存储空间。货币型数据用字母Y表示。

2.1.9二进制字符型和二进制备注型这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。所存储的数据不受代码页改变的影响。

2.1.10数据类型的应用范围以上数据类型均可应用于表中字段数据类型的定义,但其中双精度型、浮点型、通用型、整型、备注型、二进制字符型和二进制备注型只能应用于字段,其余则可以用于变量、数组和字段。(1)字符型常量:用定界符(单引号、双引号和方括号)括起来的字符串。

(示例:"ade"'568'[book]"'book'的中文意思是'书'。")(2)数值型常量(示例:538,-10.5)(3)浮点型常量(示例:-1.05E+20)(4)逻辑型常量(示例:.t..T..f..F..Y..N..y..n.)(5)日期时间型常量(示例:{05/16/9912:00:00})(6)日期型常量:表示一个确切的日期,用大括号作为定界符,默认格式为{mm/dd/yy}。示例:{05/23/99}

严格的日期格式:{^YYYY-MM-DD}

(示例:{^2001-08-16})2.2.1常量

日期常量常用的系统输出格式:mm/dd/yy

日期常量常用的系统输入格式:{^yyyy/mm/dd}SETDATE[TO]AMERICAN/MDY/DMY/YMDSETCENTURYON/OFF:显示的日期中年份用4/2位SETMARKTO<字符>:指定显示的日期中的分界符SETSTRICTDATETO[0|1|2]关开严格的日期检测例如:*注意显示的日期格式

?{^2008/9/3} SETCENTURYON ?{^2008/9/3} SETDATETOYMD ?{^2008/9/3}日期型常量变量是在操作过程中可以改变其取值或数据类型的数据项。在VisualFoxPro系统中变量分为字段变量、内存变量、数组变量和系统变量4类。确定一个变量,需要确定其三个要素:变量名、数据类型和变量值。2.2.2变量1.变量名:变量名由字母、汉字、数字和下划线组成,但必须以字母或汉字开头,中间不能有空格。如:年龄,nl,A_2是合法的变量名

2A,A2是不合法的变量名2.建立内存变量(1)直接赋值

C="中国"KDATE={^2002/01/02}婚否=.T.练习2:R=3 S=3.14*R*R ?"S=",S练习1:A=1 A=A+1?A2.2.2变量(2)STORE命令

STORE<表达式>TO<内存变量表>例如:STORE0TOA,B,C,D优点:同时给多个变量赋相同的值练习3:交换两个变量的值

X=3 Y=4 ?"X=",X,"Y=",YTemp=XX=YY=Temp?"X=",X,"Y=",Y4x3y3x4y2.建立内存变量内存变量与常量比较?"中国"中国="china"?"中国",中国?{^2008-1-1}?1e3d={^2008-1-1}?d+1内存变量与字段变量如果内存变量与数据表中的字段变量同名时,用户在引用内存变量时,要在其名字前加一个m.或(m->)。姓名="张三"?姓名USESTUD?姓名姓名="李四"?姓名?m.姓名命令格式:?|??<表达式表>[AT<列号>]

命令功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。?:先回车换行,再计算并输出表达式的值;??:在屏幕上当前位置,计算并直接输出表达式的值;

<表达式表>:多个以逗号两两分隔的表达式,各表达式的值输出时,以空格分隔;

AT<列号>子句指定表达式值从指定列开始显示输出。`(3)内存变量的显示输出格式:LIST/DISPLAYMEMORY[LIKE<通配符>]说明:LIST和DISPLAY区别为:

LIST连续显示;DISPLAY分页显示。(4)显示和打印全部内存变量示例:A="中国”

A1=5LISTMEMORYLIKEA*格式:SAVETO<内存变量文件名>/TOMEMO<备注型字段>[ALLLIKE/ALLEXCEPT<通配符>]说明:内存变量文件的扩展名为.MEM示例:SAVETOAASAVETOMMALLLIKEX*SAVETOBBALLEXCEPT?Y(5)建立内存变量文件保存变量(6)内存变量文件的调入格式:RESTOREFROM<内存变量文件名>/FROMMEMO<备注型字段名>[ADDITIVE]示例:RESTOREFROMMMRESTOREFROMBBADDITIVE格式:RELEASE<内存变量名表>或RELEASEALL[LIKE<通配符>/EXCEPT<通配符>]或CLEARMEMORY或CLEARALL说明:释放指定的内存变量,但不清除系统内存变量;

CLEARALL在关闭所有表文件的同时清除所有的内存变量。示例:RELEASEALLRELEASEX,Y,ZRELEASEALLLIKEA*(7)释放内存变量定义命令格式:DIMENSION/DECLARE<数组名1>(<数值表达式1>[,<数值表达式2>])[,<数组名2>(<数值表达式3>[,<数值表达式4>])]…示例:DIMENSIONAB(3),C[2,3]赋值数组元素的赋值与普通内存变量一样,可以通过STORE命令或"=”来实现。示例:给二维数组X和一维数组Y进行赋值。

DIMENSIONX(3,4),Y(3)STORE5TOXY(1)=325Y(2)="ABC”Y(3)=.T.X(2)={^2005/3/31}4.数组变量

系统变量是VisualFoxPro系统特有的内存变量,它由VisualFoxPro系统定义、维护。系统变量有很多,其变量名均以下划线"_”开始。5.系统变量2.3VisualFoxPro的函数按函数提供方式,可分为系统(标准)函数和用户自定义函数按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、逻辑型函数、日期时间型函数、数据转换函数等数值函数名功能说明ABS(<X>)绝对值返回X的绝对值SIGN(<X>)符号函数当X为正数、负数和0时返回1、-1、0SQRT(<X>)平方根返回X的平方根PI()圆周率没有自变量,直接返回圆周率INT(<X>)求整数返回X的整数部分CEILING(<X>)求整数返回大于等于X的最小整数FLOOR(<X>)求整数返回小于等于X的最大整数ROUND(<X>,<Y>)四舍五入由Y指定X的舍入时小数点后的位数,返回X的四舍五入的结果。MOD(<X>,<Y>)求余数返回X除以Y时的余数MAX(<X>,<Y>[,...])最大值返回所有自变量中的最大值MIN(<X>,<Y>[,...])最小值返回所有自变量中的最小值?abs(-3),abs(5),abs(0)?sign(-3),sign(5),sign(0)?sqrt(4),sqrt(abs(-81))?pi(),round(pi(),8)?int(5.7),int(-5.7)?ceiling(5.7),ceiling(-5.7)?floor(5.7),floor(-5.7)?round(3.678,2),round(-5.2345,3)?mod(5,3)?max(3,2,5,6),min(3,2,5,6)数值函数举例?max('23','5','123')5函数名功能说明LEN(<X>)字符串长度返回X的字节数.字符占1个,汉字占2个LOWER(<X>)转换为小写返回X所有英文字符转换为小写的字符串UPPER(<X>)转换为大写返回X所有英文字符转换为大写的字符串SPACE(<Y>)空格字符串返回Y个空格的空格字符串TRIM(<X>)压缩尾部空格返回去掉X尾部空格的字符串LTRIM(<X>)压缩前导空格返回去掉X左部空格的字符串ALLTRIM(<X>)压缩头尾空格返回去掉X头尾空格的字符串LEFT(<X>,<Y>)取左子串返回X从左部开始的Y个字符的字符串RIGHT(<X>,<Y>)取右子串返回X从右部开始的Y个字符的字符串SUBSTR(<X>,<Y1>,[<Y2>])取子串返回X从中间Y1位置开始的Y2个字符的字符串AT(<X1>,<X2>[,<Y>])子串位置返回X1在X2中第Y次出现的首字符位置,区分大小写STUFF(<X1>,<Y1>,<Y2>,<X2>)子串替换返回用X2替换X1中从Y1位置开始的Y2个字符CHRTRAN(<X1>,<X2>,<X3>)字符替换返回所有X2在X1中的内容被X3替换后的字符串LIKE(<X1>,<X2>)字符串匹配返回X2是否和X1对应位置上的内容匹配,X1可以含通配符函数名功能说明注:X1,X2,X3均为字符串表达式,Y1,Y2均为数值表达式?Len("VisualFoxPro中文版")?Lower("VisualFoxPro")?Upper("VisualFoxPro")?"aaa"+space(2)+"bbb"?"bbb"+trim("aaaaaa")+"bbb"?"bbb"+ltrim("aaaaaa")+"bbb"?"bbb"+alltrim("aaaaaa")+"bbb"?Left("中国人民解放军",4)?right("中国人民解放军",6)?substr("中国人民解放军",5,4)?at("a","aABCAa")字符函数举例字符函数----&宏替换函数功能:替换出字符型变量中的字符。举例1:Hello="Howareyou?"H="Hello"?H?&H?H,&H举例2:STORE"stud"TODBUSE&DBXM="姓名"?&XM-"你好"Skip?XM,&XM等价于?Hello等价于?"Hello"日期和时间函数

函数名功能说明DATE()系统日期返回系统日期TIME()系统时间返回系统时间DATETIME()系统日期时间返回系统日期时间YEAR(<X>)年份返回X中的年份MONTH(<X>)月份返回X中的月份DAY(<X>)天数返回X中月份里的天数HOUR(<Y>)小时返回Y中的小时部分(24小时制)MINUTE(<Y>)分钟返回Y中的分钟部分SEC(<Y>)秒返回Y中的秒钟部分注:X为日期型表达式或日期时间型表达式,Y为日期时间型表达式日期和时间函数举例?date(),time()?datetime()?year(date())?month({^2008-8-18})?day(datetime())?hour(datetime())?minute(datetime())?sec(datetime())数据类型转换函数

函数名功能说明STR(Y[,L[,n]])数值转换为字符串将Y转换为长度为L,小数点后n位的数值字符串VAL(X)字符串转换为数值返回X从左开始的数字字符串转换为数值的结果CTOD(X)字符串转换为日期将X转换为日期型的数据,字符串要与日期格式一致CTOT(X)字符串转换为日期时间将X转换为日期时间型的数据,字符串要与日期格式一致注:X为字符串表达式,Y为数值表达式,D为日期表达式或日期时间表达式,T为日期时间表达式ASC(X)返回串首字符的ASCII码值CHR(X)返回ASCII码为X的字符DTOC(日期)?"计算结果="+STR(10/3,5,3)STORE"1E3"TOC?3*VAL(C)?VAL("1.257")?VAL("1A.256")?VAL("A1.256")?ASC("A"),ASC("a")?CHR(99),CHR(49)转换函数举例?ALLTRIM(学号)+"的成绩:"+STR(成绩,2)?"今天是:"+DTOC(DATE())函数名功能说明BETWEEN(X,Y,Z)值域测试函数当X的值大于等于Y并且小于等于Z,结果为真;否则为假。X、Y、Z可以是字符型、日期型、日期时间型、浮点型、整形、双精度型或货币型。3个自变量类型必须一致。EOF([工作区号|表别名])表文件尾测试测试指定工作区或指定表的记录指针是否指到文件尾。无自变量时,测试当前工作区BOF([工作区号|表别名])表文件首测试测试指定工作区或指定表的记录指针是否指到文件头。无自变量时,测试当前工作区RECNO([工作区号|表别名])记录号测试返回指定工作区或指定表的记录指针指向的记录的记录号。无自变量,测试当前工作区RECCOUNT([工作区号|表别名])记录个数测试返回指定工作区或指定表的记录的记录个数。无自变量时,测试当前工作区IIF(L,X,Y)条件测试当L的结果为真时,返回X,否则返回YDeleted()测试当前记录是否被逻辑删除文件头:BOF()记录号:1记录1记录2记录3记录4记录5记录6文件尾:EOF()记录号:7TOPBOTTOM如果是空表呢?usesc?recno(),reccount()?Eof(),bof()skip-1?bof()gobottom?eof()skip?eof()go4?recno()?iif(成绩>=60,"及格","不及格")?deleted()测试函数举例数据类型测试函数:VARTYPE(X)TYPE(字符串)功能:测试表达式X的结果的数据类型。返回的数据类型由字符表示,如下表:返回的字符数据类型返回的字符数据类型C字符型或备注型G通用型N数值型、整型、浮点型、双精度型D日期型Y货币型T日期时间型L逻辑型XNull值O对象型U未定义举例1:a=5b="abc"?vartype(a),vartype(b)?TYPE('A'),TYPE('B')举例2:K=[AA=10]?TYPE(K),TYPE('K')AA=-10?TYPE(K),TYPE('K')2.4VisualFoxPro的表达式表达式是由常量、变量、函数及其他数据容器单独或与运算符组成的有意义的运算式子。运算符分为算术(数值)运算符、字符运算符、日期时间运算符、逻辑运算符和关系运算符五类。相应的,表达式也分为算术表达式、字符表达式、日期时间表达式、逻辑表达式和关系表达式五类。常量、变量和函数可以作为表达式的特例。今后涉及到表达式的描述,除特别指明,均可包含这些特殊的形式。算术表达式又称数值表达式,其运算对象和运算结果均为数值型数据。运算符功能表达式举例运算结果优先级别()圆括号(2-5)*(3+2)-15最高

||||

最低-取相反数-(3-8)5**、^乘幂2**5、3^232、9*、/乘、除2*10、25/520、5%取余数20%50+、-加、减36+19、29-4755、-182.4.1算术表达式练习1:写出下列数学表达式的VisualFoxPro表达式1.2.3.4.5.6.(a+b)/(c-d)B2-4ACB*B-4*A*C或B^2-4*A*C3sin30°+lg1003*sin(3.14159*30/180)+log10(100)5[x+2(y+z)]5*(x+2*(y+z))2πR2*3.14159*RSQRT((52+73)/55)将数学表达式转换成数值表达式时,应注意以下规则:(1)所有符号要写在同一水平线上;(2)所有运算符不能省略;(3)所有括号都是小括号;(4)三角函数的单位是弧度;(5)注意运算符的优先级。数学表达式转换成数值表达式

字符表达式是由字符运算符将字符型数据对象连接起来进行运算的式子。2.4.2字符表达式运算符功能表达式举例运算结果+串1+串2:两串顺序相连接'12

'+'56''1256'-串1-串2:串1尾空格移到串2尾后再顺序相连接'12'-'56''1256'$串1$串2:串1是否为串2子串‘1234’$‘a12345’‘1234’$‘34512’.T..F.2.4.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论