VisualFoxPro的数据及其运算.ppt_第1页
VisualFoxPro的数据及其运算.ppt_第2页
VisualFoxPro的数据及其运算.ppt_第3页
VisualFoxPro的数据及其运算.ppt_第4页
VisualFoxPro的数据及其运算.ppt_第5页
已阅读5页,还剩46页未读, 继续免费阅读

下载本文档

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

文档简介

1、第三章 Visual Foxpro中的数据与运算,本章目录,3.1 Visual FoxPro的数据类型 3.2 Visual FoxPro的常量与变量 3.3 Visual FoxPro的函数 3.4 Visual FoxPro的表达式,3.1 Visual FoxPro的数据类型,数据包括两个方面:数据内容与形式 数据内容指的是数据的值 数据形式指的是数据的存储形式和操作使用方式也就是数据类型 在VF中为了数据存储和使用方便我们把数据分为这以下几种类型: (字符型、数据型、货币型、日期型、日期时间型、逻辑型、备注型和通用型等8种数据类型),字符型(C)(character) 1字节 数值型

2、(N)(numeric) 包括:数值型(N)、浮点型(F)、整型(I)、双精度型(B) 8字节 货币型(Y)(currency) 8字节 日期型(D)(date) 8位 日期时间型(T) (datetime) 8位 逻辑型(L)(logical) 1位 备注型(M)(memo) 4字节 通用型(G)(general) 二进制字符型和备注型,3.2 Visual FoxPro的常量与变量,运行过程中,保持不变的数据为“常量”VF中的常量类型有:字符型、数值型、逻辑型、日期型和日期时间型。 字符型常量 用字符串定界符括起来的一串字符,字符串定界符有单引号或双引号和方括号,如:ABCD,字符,123

3、ABC 数值型常量 如:-20,16.68,3.14,1.6E-12表示1.610-12 在内存中占用8个字节, 货币型常量 货币型常量与数值型数据书写方法类似,但数字前面要加上$,如:$123,$321.123456小数部分保留4位,多余的位数四舍5入 逻辑型常量 逻辑值只有真和假两种,通常用小圆点括起来的.T.、.t.、.Y.、.y.表示真,.F. 、.f.、.N.、.n.表示假 日期型常量和日期时间型常量 表示时间,年 月 日 各部分和分隔符分开。系统默认斜杠(/)分隔符,还可以用(-),(.) 如:1999/04/22,1999-04-22,l999-04-24 10:00a 1999

4、.04.22 ,4:21:22 p,日期格式的中世纪值 命令方式:SET CENTURY ON|OFF|TONcentury 菜单方式:工具-选项-区域 设置日期的显示格式 SET DATE TO american|french|british 设置日期分隔符 SET MARK TO日期分隔符 严格的日期格式 SET STRICTDATE TO0|1|2,3.2.2变量,在程序的执行过程中可取不同数值的量称为变量。有2种形式的变量:内存变量和字段变量。 字段变量就是表中的字段名,我们建的“学生表”中的字段就是字段变量 字段是定义在表中,是永久性变量。而内存变量是内存中的一个存储区域,放在内存中

5、的叫内存变量。,1.命名规则,每个变量都有一个名称,叫做变量名,变量名的命名规则是 (1)以字母、数字及下划线组成,可以使用汉字作变量名。 (2)以字母或下划线开始。 (3)长度为1128个字符,每个汉字占2字节 (4)不能使用VISUAL FOXPRO的保留字。,2字段变量,字段变量就是表中的字段名,它是表中最基本的数据单元。 它的值就是表记录指针所指的那条记录对应字段的值。 字段变量的类型可以是Visual FoxPro的任意数据类型。字段变量的名字、类型、长度等是在定义表结构时定义的。,3内存变量,Visual FoxPro中,除了字段变量外,还有一种变量,它独立于表,是一种临时工作单元

6、,称为内存变量。内存变量的类型有字符型、数值型、货币型、逻辑型、日期型和日期时间型等。 可直接用内存变量名对内存变量进行访问,但若它与字段变量同名时,则应该用如下格式进行访问: M.内存变量名 M-内存变量名,内存变量的操作,1).内存变量的赋值 格式1:STORE TO 格式2: = 2)内存变量的显示 格式1:LIST MEMORY LIKE TO PRINTER | TO FILE 格式2:DISPLAY MEMORY LIKE TO PRINTER | TO FILE LIST MEMORY,如果内存变量多,一屏显示不下,则自动向上滚动。DISPLAY MEMORY分屏显示与通配符匹配

7、的所有内存变量,如果内存变量多,显示一屏后暂停,按任意键之后再继续显示下一屏。,3)内存变量的建立 指的是将内存变量保存到一个文件中。 格式:SAVE TO ALLLIKE|EXCEPT 举例: 4)内存变量的恢复 指的是将内存变量重新调入内存 格式:RESTORE FROM ADDITIVE 5) 内存变量的清除 格式1:CLEAR MEMORY 格式2:RELEASE ALL LIKE | EXCEPT 功能:格式1清除所有内存变量。格式2清除指定的内存变量。 例 P40,4.数组变量,数组变量指的是一组变量的集合,也就是我们把多个变量组合到一起。数组变量和其它变量不同的是必须先定义后使用

8、。 1.数组的定义 格式1:DIMENSION(, 格式2:DECLARE(, 说明:下标上界非负,可以是常量、变量,表达式等,下标下界为1,二维数组用,分开。,举例 例如:DIMENSION a(8),b(3,4) 分别定义了一个一维数组a,和二维数组b 一维数组为:a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8) 二维数组分别为: b(1,1), b(1,2) , b(1,3) , b(1,4), b(2,1), b(2,2).b(3,1),b(3,2).b(4,4) 数组的赋值 a=80 b(1,1)=24 b(2,1)=“hello” P41

9、 例。,3.3 Visual FoxPro的函数,函数是一段代码,用来进行特定的数据运算或转换。大家可以回忆一下我在EXCEL中用的“sum(),average()函数,它们的功能是求和,求平均值。 VISUAL FOXPRO的函数有两种 一种是用户自定义的函数 (用户自已写程序定义) 一种是系统函数(系统已经写好了的函数用户直接调用就可以了)调用方法:函数名(参数) 3.3.1 数值函数 3.3.2 字符函数 3.3.3 日期类和时间函数 3.3.4 转换函数 3.3.5 测试函数,3.3.1、数值函数, 绝对值函数 格式:ABS() 功能:ABS()返回指定的数值表达式的绝对值。 例如:

10、? abs(-5) (2)求最大值和最小值函数 格式:MAX(,) MIN(,) 例 ? MAX(2,12,05),MIN(汽车,飞机,轮船) 结果: 2 飞机,后面的函数我们就举举例子: (4)求平方根函数 格式:SQRT() ? SQRT(2*SQRT(4) (5)求指数函数 格式:EXP() 功能:求出以e为底,指数的值。 (6)求对数函数 格式:LOG() (7)取整数函数 格式:INT()(取整) 格式: CELING ()(取大于或等于指定表达式的最小整数) 格式: FLOOR ()(取小于或等于指定表达式的最大整数) x=56.72 ? INT(x),INT(-x), CEILI

11、NG(x),CEILING(-x),FLOOR(x),FLOOR(-x),(8)求余数函数 格式:MOD(,) 功能:返回两个数值相除后的余数。余数的正负号与除数相同。如果被除数与除数同号,那么函数值即为两数相除的余数;如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。 例6 ? MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3) 1 -2 2 -1,(9)四舍五入函数 格式:ROUND(数值表达式1,数值表达式2) 功能:数值表达式2表示保留的小数位数 说明:如果数值表达式2的值为负,其绝对值表示整数部分四舍五入的位数,从后往前。 例5 x34

12、5.345 ? ROUND(X,2), ROUND(x,1),ROUND(X,0),ROUND(x,一1) 345.35 345.3 345 350 (10)pi函数 格式:PI() (11)符号函数 SIGN() 功能:返回表达式的符号。(-1 0 1),3.3.2、字符函数,(1)宏替换函数 & 【格式】& .字符表达式 【功能】替换出字符内存变量中的字符。若与后面的字符无空格分界,则&函数后的“.”必须有。 记住一话 去掉定界符(即字符的“”),举例,a1=ABC a2=a1 ?&a2 ma=* mb=14&ma.50 ?mb ma=* mb=14&ma50 ?mb ma=* mb=14

13、&ma 50 ?mb P44 例子,(2)字符串长度函数LEN( ) 【格式】LEN() 【功能】求字符串的长度。函数值为N型 (3)空格函数SPACE( ) 【格式】SPACE(数值表达式) 【功能】生成“数值表达式”指定数目的空格组成的字符串。 ?hello+space(4)+boy,(4)大小写转换函数 格式:LOWER() UPPER() 功能:LOWER()将指定表达式值中的大写字母转换成小写字母,其他字符不变。 UPPER()将指定表达式值中的小写字母转换成大写字母,其他字符不变。 例9 ? LOWER(xly2A*),UPPER(n1) xly2a* N1 (5)求子串位置函数

14、【格式】AT(,) 【功能】返回在中的起始位置。函数值为整数。如果串不包含串 ,函数返回值为零。 例:?AT(“you”,”Are you ok”),AT(“hi”,”who are you”),(6)取左子串函数LEFT( ) 【格式】LEFT( , ) 【功能】从中第一个字符开始,截取个字符的子串。若数值型表达式的值大于0,且小于等于字符串的长度,则子串的长度与数值型表达式值相同。若数值型表达式的值大于字符串的长度,则给出整个字符串。若数值型的表达式小于或等于0,则给出一个空字符串。 例如:?LEFT(“会计管理学院”,8) (7 )取右子串函数RIGHT( ) 【格式】RIGHT( ,

15、) 【功能】返回从中右边第一个字符开始,截取个字符的子串。有关说明同LEFT( )函数。 例如:?RIGHT(“会计管理学院”,8),(8)取子串函数SUBSTR( ) 格式:SUBSTR (, , ) 功能:返回从中第个字符开始,截取个字符的子串。若字符个数省略,或字符个数多于从起始位置到原字符串尾部的字符个数,则取从起始位置起,一直到字符串尾的字符串作为函数值。若起始位置或字符个数为0,则函数值为空串。 例:ss=“中华人民共合” ?SUBSTR(SS,5,4),SUBSTR(SS,3) (9)删除字符串前后空格函数 【格式】LTRIM() RTRIM | TRIM() ALLTRIM()

16、 【功能】 LTRIM删除前导空格字符 RTRIM | TRIM删除尾部空格字符 ALLTRIM删除所有空格字符,(10)字符串替换函数STUFF( ) 【格式】STUFF(,) 【功能】从nExp1指定位置开始,用cExp2串替换 cExp1串中nExp2个字符。 说明: 和被替换的个数不一定相等,若小于0则直接插入,若的值是空串,则删除中个字符,若小于等于0,则从首字开始替换。 例:x=“计算机科学与技术学院”?STUFF(x,7,4,信息) ?STUFF(x,7,0,信息) ?STUFF(x,0,4,信息) (11)复制函数 ? 【格式】REPLICATE (,) 【功能】返回将cExp

17、串重复nExp次的字符串 例:?REPLACE(ABC,3),3.3.3、日期类和时间函数,1.系统日期函数DATE( ) 【格式】DATE() 【功能】返回当前系统日期 2系统时间函数TIME( ) 【格式】TIME 【功能】返回当前系统时间,时间显示格式为hh:mm:ss 3.系统日期和时间函数 【格式】 DATETIME() 【功能】返回当前系统日期时间,4日期函数DAY( ) 【格式】DAY() 【功能】返回中的天数。函数值为N型 5月份函数MONTH( )、CMONTH( ) 【格式】MONTH() CMONTH() 【功能】MONTH( )函数返回dExp式中月份数。函数值为N型。

18、CMONTH( )函数则返回月份的英文名。函数值为C型。 6年份函数YEAR( ) 【格式】YEAR() 【功能】函数返回dExp式中年份值。函数值为N型。 例如:d=2006-06-05 ? YEAR(d),month(d),day(d),7.求时、分和秒函数 Hour() minute() sec() 例:d=2005-05-12,4:25:24 p ? Hour(d),minute(d),sec(d) 8星期函数DOW( )、CDOW( ) 【格式】DOW() CDOW() 【功能】DOW( )函数返回dExp式中星期的数值,用17表示星期日星期六。函数值为N型。CDOW( ) 函数返回

19、dExp式中星期的英文名称 例:dow(2005-05-12,cdow(2005-05-12),3.3.4、转换函数,1将字符转换成ASCII码函数 【格式】ASC () 【功能】返回cExp串首字符的ASCII码值。函数值为N型。 2ASCII转换为字符函数CHR( ) 【格式】CHR() 【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。 例:?asc(“b”),chr(98) 3.字符转换数值型函数VAL( ) 【格式】VAL () 【功能】将cExp串中数字转换成对应数值,转换结果取两位小数。 4.数值转换字符型函数STR( ) 【格式】STR(,) 【功能】将nE

20、xp1的数值转换成字符串形式。P48 x=1234.587 ? STR(x,10,2), STR(x,10,4), STR(x,7,2), STR(x,7), STR(x,3), STR(x),5字符转换日期型函数CTOD( ) 【格式】CTOD() 【功能】把“/”格式的cExp串转换成对应日期值。函数值为D型。 6日期转换字符型函数DTOC( ) 【格式】DTOC(, 1) 【功能】把日期dExp转换成相应的字符串。函数值为C型。,3.3.5、测试函数,1数据类型函数 【格式】VARTYPE() 【功能】返回cExp 串表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。C:字符

21、型,D:日期型,N:数值型,L:逻辑型,M:备注型,G:通用型,U:未定义。 例:?vartype(12),vartype(“hello”) 2.表头测试函数BOF ( ) 【格式】BOF ( | ) 【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真(.T.),否则为假(.F.)。 3.表尾测试函数EOF( ) 【格式】EOF( | ) 【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真(.T.),否则为假(.F.)。,4.文件是否存在测试函数 【格式】FILE() 【功能】根据cExp串中指定路径查找文件,如未指定路径,则在默认目

22、录中查找。文件存在,返回逻辑真(.T.) 值,否则为逻辑假(.F.)值。 5. 记录号测试函数 【格式】RECNO( | ) 【功能】返回指定工作区中表的当前记录的记录号。对于空表返回值为1。 6.记录个数函数 【格式】RECCOUNT ( | ) 【功能】返回指定工作区中表的记录个数。如果工作区中没有打开表则返回0。 7.查找是否成功测试函数 【格式】FOUND ( | ) 【功能】在当前或指定表中,找数据,找到函数据值为.T.,否则为.F.。,8.判断值介于两个值之间的函数 【格式】BETWEEN( ,) 【功能】在之间为.T.否则为.F. 例:st=200 ?BETWEEN(sr,100

23、,310) 9.条件测试函数IIF( ) 【格式】IIF(,) 【功能】逻辑表达式lExp值为真(.T.),返回表达式eExp1的值,否则返回表达式eExp2的值。eExp1和eExp2可以是任意数据类型的表达式。 10.记录删除测试函数 【格式】DELETED( | ) 【功能】测试指定工作区中表的当前记录是否被逻辑删除。如果当前记有逻辑删除标记,函数返回真(.T.),否则为假(.F.)。,3.4 Visual FoxPro的表达式,在Visual FoxPro系统中,表达式是由常量、变量、函数单独或与运算符组成的有意义的运算式子。 在Visual FoxPro中表达式分为: 3.4.1 算

24、术表达式 3.4.2 字符表达式 3.4.3 日期时间表达式 3.4.4 关系表达式 3.4.5 逻辑表达式,3.4.1、算术表达式,如表2-2所示。表中运算符按运算优先级别从高到低顺序排列。 表2-2 算术运算符,3.4.2、字符表达式,字符表达式是由字符运算符将字符型数据对象连接起来进行运算的式子。 “+”与 “-”都是字符连接运算符,都将两字符串顺序连接,但“+”是直接连接,“-”则将串1尾部所有空格移到串2尾部后再连接; “$”运算实质上是比较两个串的包含关系,其作用是比较、判断串1 是否为串2的子串,如果串1是串2的子串,运算结果为“真”,否则为“假”。,3.4.3、日期时间表达式,

25、格式1: 其结果是将来的某个日期。 格式2: 其结果是过去的某个日期。 格式3: 其结果是两个日期之间相差的天数。 例如:?date()-10,格式4: 其结果是若干秒后的某个日期时间。 格式5: 其结果是若干秒前的某个日期时间。 格式6: 其结果是两个日期时间之间相差的秒数。 例 ?datetime()+20,3.4.4、关系表达式,关系运算符有: (大于)、= (大于等于)、= (等于)、= (精确等于)、或#或!=(不等于)。它们的运算优先级相同。 关系表达式一般形式为: e1 e2 其中e1、e2可以同为数值型表达式、字符型表达式、日期型表达式或逻辑型表达式。但=仅适用于字符型数据。关

26、系表达式表示一个条件,条件成立时值为.T.,否则为.F.。,各种类型数据的比较规则如下: (1)数值型和货币型数据根据其数值的大小进行比较。 (2)日期型和日期时间型数据进行比较时,离现在日期或时间越近的日期或时间越大。 (3)逻辑型数据比较时,.T.比.F.大。 (4)对于字符型数据,可以设置字符的排序次序 方法:1.菜单法 2.命令法 格式为: SET COLLATE TO “” 排序次序名可以是“Machine”、“PinYin”或“Stroke”。 比较字符串时,先取两字符串的第一个字符比较,若两者不等,其大小就决定了两字符串的大小,若相等,则各取第二个字符比较,依次类推,直到最后,若

27、每个字符都相等,则两个字符串相等。,“Machine”、“PinYin”或“Stroke” 。 “Machine”,按照机内码顺序排序。 对于西文字符而言,按其ASCII码值大小进行排列 空格数字大写字母小写字母。 对于汉字字符,按其国标码的大小进行排列,对常用的一级汉字而言,根据它们的拼音顺序比较大小。 “PinYin”,按字符按照拼音次序排序。 对于西文字符,空格数字小写字母大写字母 “Stroke”,按字符按笔画数多少排序 字符笔画数的多少就决定其大小。 接下来我们看一个例子,举例,SET COLLATE TO “Machine” ? “助教”教授”,“abc”a” ,“”a”,“XYZ

28、”a” .T. .F. .F. .F. SET COLLATE TO “PinYin” ? “助教”教授”,“abc”a” ,“”a”,“XYZ”a” .T. .F. .F. .T. SET COLLATE TO “Stroke” ? “助教”教授” ,“abc”a” ,“”a”,“XYZ”a” .F. .F. .F. .T. 思考: “abc”a” ,”a”“abc” ,”a”=“abc”,精确比较,字符串的“等于”比较有精确和非精确之分 要注意=(等于)和= =(精确等于)两个关系运算符的区别。 精确等于是指只有在两字符串完全相同时才为真,而非精确等于是指当“=”号右边的串与“=”号左边的串的前几个字符相同时,运算结果即为真。 命令 SET EXACT ON 精确比较 此时,=和

温馨提示

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

评论

0/150

提交评论