VFP的数据及其运算.ppt

上传人:牧羊曲112 文档编号:6522867 上传时间:2023-11-08 格式:PPT 页数:77 大小:437.50KB
返回 下载 相关 举报
VFP的数据及其运算.ppt_第1页
第1页 / 共77页
VFP的数据及其运算.ppt_第2页
第2页 / 共77页
VFP的数据及其运算.ppt_第3页
第3页 / 共77页
VFP的数据及其运算.ppt_第4页
第4页 / 共77页
VFP的数据及其运算.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《VFP的数据及其运算.ppt》由会员分享,可在线阅读,更多相关《VFP的数据及其运算.ppt(77页珍藏版)》请在三一办公上搜索。

1、Visual Foxpro 程序设计教程,Visual Foxpro 程序设计教程,Visual Foxpro 程序设计教程,第3章 Visual Foxpro 的数据及其运算,3.1 Visual Foxpro 的数据类型3.2 Visual Foxpro 的常量与变量3.3 Visual Foxpro 的内部函数3.4 Visual Foxpro 的表达式3.5 小结,Visual Foxpro 程序设计教程,函数常用来执行一些特殊的数据处理,充分正确地使用函数,可简化操作和程序,增强数据处理功能。函数调用的一般形式:函数名(参数表)函数名后的括号()不能省。参数表用方括号括起来表示可省,

2、即有些函数不需要参数。,Visual Foxpro 程序设计教程,3.3 Visual Foxpro 的内部函数,3.3.1 数值函数3.3.2 字符函数3.3.3 日期和时间函数3.3.4 数据类型转换函数3.3.5 测试函数,Visual Foxpro 程序设计教程,3.3.1 数值函数,数值函数的自变量和函数值往往是数值型数据。1.求绝对值函数ABS()例如:ABS(-123)2.求平方根函数SQRT()参数值必须为非负数例如:?SQRT(25)?SQRT(3+6),Visual Foxpro 程序设计教程,3.3.1 数值函数,3.求指数函数EXP()求ex的值4.求对数函数LOG()

3、求自然对数LOG10()求常用对数,Visual Foxpro 程序设计教程,3.3.1 数值函数(续),5.取整函数INT()取数值型表达式的整数部分。CEILING()取大于或等于指定表达式的最小整数。FLOOR()取小于或等于指定表达式的最大整数。,Visual Foxpro 程序设计教程,3.3.1 数值函数(续),5.取整函数(续)x=56.72?INT(x),INT(-x)56-56CEILING(x),CEILING(-x)57-56FLOOR(x),FLOOR(x)56-57,Visual Foxpro 程序设计教程,3.3.1 数值函数(续),6.求余数函数 MOD(,)所得

4、余数的符号和表达式2相同。如果被除数和除数同号,则函数值即为两数相除的余数。如果被除数和除数异号,则函数值即为两数相除的余数再加上除数的值。,Visual Foxpro 程序设计教程,3.3.1 数值函数(续),6.求余数函数(举例)?MOD(15,4)3?MOD(-15,-4)-3?MOD(-15,4)1?MOD(15,-4)-1,如何求一个整数的某个数位上的数字?(P43),x=125x1=int(x/100)x2=int(mod(x,100)/10)x3=mod(x,10)?x1+10*x2+100*x3,Visual Foxpro 程序设计教程,3.3.1 数值函数(续),7.四舍五入

5、函数 ROUND(,)求值并保持N2位小数。若N20,则对N1的整数部分按N2的绝对值四舍五入。?ROUND(9.4245,2)9.42?ROUND(156.78,-1)160,Visual Foxpro 程序设计教程,3.3.1 数值函数(续),8.求最大值和最小值函数MAX(,)MIN(,)示例:?MAX(2005-06-23,2004-06-23)06/23/05?MIN(助教,讲师,副教授,教授)副教授,Visual Foxpro 程序设计教程,3.3.1 数值函数(续),9.函数PI()返回圆周率的近似值,Visual Foxpro 程序设计教程,3.3 Visual Foxpro

6、的内部函数,3.3.1 数值函数3.3.2 字符函数3.3.3 日期和时间函数3.3.4 数据类型转换函数3.3.5 测试函数,Visual Foxpro 程序设计教程,3.3.2 字符函数,1.宏代换函数&.字符表达式例1:X=100+200?&X300例2:Y=abcdZ=Y?&Zabcd,Visual Foxpro 程序设计教程,3.3.2 字符函数,例3 i=1j=2x12=GoodGood=MAX(96/01/02,65/05/01)?x&i.&j,&x12Good48例4m=245*SQRT(4)?34+&m524.00,Visual Foxpro 程序设计教程,3.3.2 字符函

7、数,2.求字符串长度函数LEN(字符型表达式)?LEN(ABCDEFG)?LEN(中华人民共和国)3.求子串位置函数AT(,)ATC(,),Visual Foxpro 程序设计教程,3.3.2 字符函数,3.求子串位置函数(举例)?AT(is,this is a book)3?AT(is,this is a book,2)6?AT(is,this is a book,3)0 xm=李小四?AT(李,xm),AT(PRO,Visual Foxpro)?ATC(PRO,Visual Foxpro)1011,Visual Foxpro 程序设计教程,3.3.2 字符函数,4.取子串函数LEFT(,)

8、RIGHT(,)SUBSTR(,),Visual Foxpro 程序设计教程,3.3.2 字符函数,4.取子串函数(举例)?LEFT(中华人民共和国,4)中华?RIGHT(中华人民共和国,4)和国?SUBSTR(中华人民共和国,5,4)人民,Visual Foxpro 程序设计教程,3.3.2 字符函数,5.删除字符串前后空格函数LTRIM()RTRIM()ALLTRIM()例如:?LTRIM(大学生)?RTRIM(大学生)?ALLTRIM(大学生),Visual Foxpro 程序设计教程,3.3.2 字符函数,6.生成空格函数SPACE()?A+SPACE(2)+BA B,Visual F

9、oxpro 程序设计教程,3.3.2 字符函数,7.字符串替换函数STUFF(,)STORE 中国 长沙 TO X?STUFF(X,6,4,北京)中国 北京,Visual Foxpro 程序设计教程,3.3.2 字符函数,8.产生重复字符函数REPLICATE(,)?REPLICAT(*,6)*,Visual Foxpro 程序设计教程,3.3.2 字符函数,9.大小写字母转换函数LOWER()UPPER()Yn=y?UPPER(Yn),LOWER(YEs)Yyes,Visual Foxpro 程序设计教程,3.3 Visual Foxpro 的内部函数,3.3.1 数值函数3.3.2 字符函

10、数3.3.3 日期和时间函数3.3.4 数据类型转换函数3.3.5 测试函数,Visual Foxpro 程序设计教程,3.3.3 日期和时间函数,1.系统日期和时间函数DATE()TIME()DATETIME()?DATETIME()03/07/11 10:21:30 AM,Visual Foxpro 程序设计教程,3.3.3 日期和时间函数,2.求年份、月份和天数函数YEAR(|)MONTH(|)DAY(|)d=2005/03/12?YEAR(d),MONTH(d),DAY(d)2005 3 12,Visual Foxpro 程序设计教程,3.3.3 日期和时间函数,3.求时、分和秒函数H

11、OUR()MINUTE()SEC()d=2005/03/12,8:42:56 AM?HOUR(d),MINUTE(d),SEC(d)8 42 56,Visual Foxpro 程序设计教程,3.3 Visual Foxpro 的内部函数,3.3.1 数值函数3.3.2 字符函数3.3.3 日期和时间函数3.3.4 数据类型转换函数3.3.5 测试函数,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,1.将字符转换成ASCII函数ASC()?ASC(A),ASC(a),ASC(BCD)65 97 662.将ASCII转换成相应字符函数CHR()?CHR(65),CHR(6

12、5+1.5),CHR(97)A B ach1=Mch2=chr(asc(ch1)+asc(a)-asc(A)?ch2m,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,3.将字符串转换成日期或日期时间函数CTOD()CTOT()SET DATE TO YMDSET CENTURY ONx=2005/06/23y=2004/06/23a=2007/03/12,12:30:25 P?CTOD(x)-CTOD(y),CTOT(a)3652007/03/12 12:30:25 PM,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,4.将日期或日期时间转换

13、成字符串函数DTOC(|,1)TTOC(,1)SET DATE TO YMDSET CENTURY ON?DTOC(2005/03/12,8:43:23 AM)2005/03/12?TTOC(2005/03/12,8:43:23 AM,1)20050312084323,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,5.将字符串转换成数值函数VAL()?VAL(123.45)123.45?VAL(123,45)123.00?VAL(abc123)0.00,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,6.将数值转换成字符串函数STR(,)函数在

14、的值中,从左端开始N2位数字(含小数点),保留N3位小数,组成字符串。如果N2大于值的字符数,函数在返回的结果中补上前导空格。,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,6.将数值转换成字符串函数(续)STR(,)如果N2小于值的整数部分字符数,函数返回一串星号表示数值溢出;如果N3小于值的小数部分字符数,多余的小数部分被截掉。,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,6.将数值转换成字符串函数(举例)?STR(123.456)123(未指定长度和小数位仅输出整数部分)?STR(123.456,6)123(未指定小数位仅输出整数部分

15、)?STR(123.456,7,2)123.46,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,6.将数值转换成字符串函数(举例)?STR(1234.56,9,2)1234.56?STR(123.56,2)*(规定长度不对,数据溢出错误)?STR(1234.5,2)*?STR(1234.,2)*,Visual Foxpro 程序设计教程,3.3.4 数据类型转换函数,6.将数值转换成字符串函数(举例)?STR(1234.56,9,3)1234.560?STR(1234.56,9)1235(未指定小数位仅输出整数部分)1.234E+11,Visual Foxpro 程序

16、设计教程,3.3 Visual Foxpro 的内部函数,3.3.1 数值函数3.3.2 字符函数3.3.3 日期和时间函数3.3.4 数据类型转换函数3.3.5 测试函数,Visual Foxpro 程序设计教程,3.3.5 测试函数,1.数据类型测试函数VARTYPE(,)?vartype($567),vartype(Foxpro)Y C?vartype(date(),vartype(NULL)D X,Visual Foxpro 程序设计教程,3.3.5 测试函数,2.表头测试函数BOF(|)3.表尾测试函数EOF(|)4.记录号测试函数RECNO(|),Visual Foxpro 程序设

17、计教程,3.3.5 测试函数,5.记录个数测试函数RECCOUNT(|)6.查找是否成功测试函数FOUND(|)7.文件是否存在测试函数FILE(),Visual Foxpro 程序设计教程,3.3.5 测试函数,8.判断值在两个值之间的函数BETWEEN(,,)?BETWEEN(375,260,650).T.9.条件函数IIF(,,)?IIF(65,1,2)1xb=女?IIF(xb=男,1,IIF(xb=女,2,3)2,Visual Foxpro 程序设计教程,第3章 Visual Foxpro 的数据及其运算,3.1 Visual Foxpro 的数据类型3.2 Visual Foxpro

18、 的常量与变量3.3 Visual Foxpro 的内部函数3.4 Visual Foxpro 的表达式3.5 小结,Visual Foxpro 程序设计教程,将常量、变量和函数用运算符连接起来的式子称为表达式。书写Visual FoxPro表达式应遵循以下规则:表达式中所有的字符必须写在同一水平线上。表达式中常量的表示、变量的命名以及函数的引用要符合Visual FoxPro的规定。要根据运算符运算的优先顺序,合理地加括号,以保证运算顺序的正确性。特别是分式中的分子分母有加减运算时,或分母有乘法运算时。,Visual Foxpro 程序设计教程,3.4 Visual Foxpro 的表达式,

19、3.4.1 算术表达式3.4.2 字符表达式3.4.3 日期和时间表达式3.4.4 关系表达式3.4.5 逻辑表达式,Visual Foxpro 程序设计教程,用算术运算符将数值型数据连接起来的式子叫算术表达式。算术运算符有(按优先级从高到低的顺序排列):()、*或、*、/、%,+,-。各运算符运算的优先顺序和一般算术运算规则完全相同。同级运算按自左向右的方向进行运算。各运算符的运算规则也和一般算术运算相同,其中求余运算符%和求余函数 MOD 的作用相同。余数的符号与除数一致。,3.4.1 算术表达式,Visual Foxpro 程序设计教程,将下列式子写成VFP的表达式:,Visual Fo

20、xpro 程序设计教程,3.4 Visual Foxpro 的表达式,3.4.1 算术表达式3.4.2 字符表达式3.4.3 日期和时间表达式3.4.4 关系表达式3.4.5 逻辑表达式,Visual Foxpro 程序设计教程,3.4.2 字符表达式,1.连接运算连接运算符有完全连接运算符和不完全连接运算符-两种。运算的功能是将两个字符串连接起来形成一个新的字符串。-运算的功能是去掉字符串1尾部的空格,然后将两个字符串连接起来,并把字符串1末尾的空格放到结果串的末尾。例如:?姓名-李小四+张得富姓名李小四张得富,Visual Foxpro 程序设计教程,3.4.2 字符表达式,2.包含运算格

21、式:$包含运算的结果是逻辑值。若包含在之中,其表达式值为.T.,否则为.F.。zhch=副教授?教授$zhch.T.,Visual Foxpro 程序设计教程,3.4.3 日期和时间表达式,格式1:其结果是将来的某个日期。格式2:-其结果是过去的某个日期。格式3:-其结果是两个日期之间相差的天数。,Visual Foxpro 程序设计教程,3.4.3 日期和时间表达式,格式4:其结果是若干秒后的某个日期时间。格式5:-其结果是若干秒前的某个日期时间。格式6:-其结果是两个日期时间之间相差的秒数。,Visual Foxpro 程序设计教程,3.4 Visual Foxpro 的表达式,3.4.1

22、 算术表达式3.4.2 字符表达式3.4.3 日期和时间表达式3.4.4 关系表达式3.4.5 逻辑表达式,Visual Foxpro 程序设计教程,3.4.4 关系表达式,关系表达式是由关系运算符将两个同类型的数据连接起来的式子,其值为逻辑型数据。关系运算符有:、=、=、=、或#或!=。它们的运算优先级相同。关系表达式一般形式为:e1 e2 其中e1、e2可以同为数值型表达式、字符型表达式、日期型表达式或逻辑型表达式。但=仅适用于字符型数据。,Visual Foxpro 程序设计教程,3.4.4 关系表达式,关系表达式表示一个条件,条件成立时值为.T.,否则为.F.。各种类型数据的比较规则如

23、下:(1)数值型和货币型数据根据其代数值的大小进行比较。(2)日期型和日期时间型数据进行比较时,离现在日期或时间越近的日期或时间越大。(3)逻辑型数据比较时,.T.比.F.大。(4)对于字符型数据,Visual FoxPro可以设置字符的排序次序。,Visual Foxpro 程序设计教程,3.4.4 关系表达式,在工具菜单中选择选项,在数据选项卡的排序序列下拉列表框中选择Machine、PinYin或Stroke项并确定。用命令设置字符的排序次序。命令格式为:SET COLLATE TO 排序次序名可以是Machine、PinYin或Stroke。(a)Machine,字符按照机内码顺序排序

24、。对于西文字符而言,空格最小,大写字母小于小写字母,数字字符小于字母。对于汉字字符,按其国标码的大小进行排列,对常用的一级汉字而言,根据它们的拼音顺序比较大小。,Visual Foxpro 程序设计教程,3.4.4 关系表达式,(b)PinYin,字符按照拼音次序排序。对于西文字符,空格在最前面,小写字母在前,大写字母在后。(c)Stroke,字符按笔画数多少排序,因而,字符笔画数的多少就决定其大小。比较字符串时,先取两字符串的第一个字符比较,若两者不等,其大小就决定了两字符串的大小,若相等,则各取第二个字符比较,依次类推,直到最后,若每个字符都相等,则两个字符串相等。,Visual Foxp

25、ro 程序设计教程,3.4.4 关系表达式,例:在不同的字符排序次序下,比较字符串的大小。SET COLLATE TO Machine?助教教授,abca,a,XYZa.T.F.F.F.SET COLLATE TO PinYin?助教教授,abca,a,XYZa.T.F.F.T.SET COLLATE TO Stroke?助教教授,abca,a,XYZa.F.F.F.T.,Visual Foxpro 程序设计教程,3.4.4 关系表达式,注意=(等于)和=(精确等于)两个关系运算符的区别。它们主要是对字符串进行比较时有所区别。字符串的等于比较有精确和非精确之分,精确等于是指只有在两字符串完全相

26、同时才为真,而非精确等于受到set exact命令的影响。,Visual Foxpro 程序设计教程,3.4.4 关系表达式,如果用=比较两个字符串SET EXACT ON 时:在较短的一个的右边加上空格,以使它与较长字符串的长度相等,再从左到右逐个字符进行比较直到两个表达式的末端。SET EXACT OFF 时:从左到右逐个字符进行比较,直到右端字符串的末端即可。,Visual Foxpro 程序设计教程,3.4.4 关系表达式,例:字符串比较举例。SET EXACT OFFzc=教授?zc=教授,教授=zc?教授=LEFT(zc,4),zc=教授.T.F.T.F.请注意在非精确比较状态下,

27、条件zc=教授与条件教授=zc不等价。,SET EXACT ON结果有何变化?,Visual Foxpro 程序设计教程,比较=EXACT OFF=EXACT ON=abc=abc 匹配 匹配 匹配 ab=abc 不匹配 不匹配 不匹配 abc=ab 匹配 不匹配 不匹配 abc=ab_ 不匹配不匹配 不匹配 ab=ab_ 不匹配 匹配 不匹配 ab_=ab 匹配 匹配 不匹配=ab 不匹配 不匹配 不匹配 ab=匹配 不匹配 不匹配 _=匹配 匹配 不匹配=_ 不匹配 匹配 不匹配 TRIM(_)=匹配 匹配 匹配=TRIM(_)匹配 匹配 匹配,Visual Foxpro 程序设计教程,3

28、.4 Visual Foxpro 的表达式,3.4.1 算术表达式3.4.2 字符表达式3.4.3 日期和时间表达式3.4.4 关系表达式3.4.5 逻辑表达式,Visual Foxpro 程序设计教程,3.4.5 逻辑表达式,逻辑表达式是由逻辑运算符将逻辑型数据连接起来的式子。其值仍是逻辑值。逻辑运算符有:NOT或.NOT.或!(逻辑非)、AND或.AND.(逻辑与)、OR或.OR.(逻辑或)。其运算优先级是NOT最高,OR最低。逻辑非运算符是单目运算符,只作用于后面的一个逻辑操作数,若操作数为真,则返回假,否则返回真。,Visual Foxpro 程序设计教程,3.4.5 逻辑表达式,逻辑

29、与与逻辑或是双目运算符,所构成的逻辑表达式为:L1 AND L2 L1 OR L2 其中L1和L2均为逻辑型操作数。对于逻辑与运算,只有L1和L2同时为真,表达式值才为真,只要其中一个为假,则结果为假。对于逻辑或运算,L1和L2中只要有一个为真,表达式即为真,只有L1和L2均为假时,表达式才为假。,Visual Foxpro 程序设计教程,注意,当一个表达式包含多种运算时,其运算的优先级由高到低排列为:算术运算 字符串运算 日期运算 关系运算 逻辑运算在对表进行各种操作时常常要表达各种条件,即对满足条件的记录进行操作,此时就要综合运用本章的知识。,Visual Foxpro 程序设计教程,综合

30、举例,例:学生表的结构如下:学生(学号 C 6,姓名 C 10,性别 C 2,出生日期 D,少数民族否 L,籍贯 C 10,入学成绩 N 5.1,简历 M,照片 G)针对学生表,写出下列条件:(1)姓张的学生。(2)20岁以下的学生。(3)家住湖南或湖北的学生。(4)汉族学生。(5)入学成绩在580分以上的湖南或湖北的学生。(6)20岁以下的少数民族学生。,Visual Foxpro 程序设计教程,综合举例(续),(1)姓张的学生。由于学生的姓包含在姓名字段且为第一个汉字,所以可写出4种条件:条件1:张$姓名 条件2:AT(张,姓名)=1 条件3:SUBSTR(姓名,1,2)=张 条件4:姓名

31、=张,Visual Foxpro 程序设计教程,综合举例(续),(2)20岁以下的学生。由于年龄包含在代表学生出生日期的字段中,所以关键是如何根据出生日期求出年龄。条件1:DATE()-出生日期=20*365 条件2:YEAR(DATE()-YEAR(出生日期)=20,Visual Foxpro 程序设计教程,综合举例(续),(3)家住湖南或湖北的学生。根据籍贯字段,可以写出3种条件:条件1:籍贯=湖南 OR 籍贯=湖北 条件2:湖$籍贯 条件3:AT(湖,籍贯)0,Visual Foxpro 程序设计教程,综合举例(续),(4)汉族学生。根据少数民族否字段,可写出3种条件:条件1:NOT 少

32、数民族否 条件2:少数民族否.F.条件3:IIF(少数民族否,少数民族,汉族)=汉族,Visual Foxpro 程序设计教程,综合举例(续),(5)入学成绩在580分以上的湖南或湖北的学生。根据入学成绩字段和籍贯字段,可写出3种条件 条件1:入学成绩580 AND 湖$籍贯 条件2:入学成绩580 AND(籍贯=湖南 OR 籍贯=湖北)由于AND运算优先级比OR要高,为了保证先做OR运算,条件2中的括号是必不可少的。,Visual Foxpro 程序设计教程,综合举例(续),(6)20岁以下的少数民族学生。根据出生日期字段求出年龄,再结合少数民族否字段,写出条件:YEAR(DATE()-YEAR(出生日期)=20 AND 少数民族否,Visual Foxpro 程序设计教程,作业,书面作业教材P554、7、,Visual Foxpro 程序设计教程,The End,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号