300 likes | 515 Views
第二章 VFP 程序设计基础. 本章要点: 1 .数据和数据类型 2 .常量与变量 3 .运算符与表达式 4 .函数 5 . VFP 的操作和界面 6 . VFP 的工作方式. 2.1.1 数据与数据类型. 一. 数据类型 数据: 是一组用来描述事物情况的物理符号序列,通常用类型和值来表示。一般地,只有相同类型的数据才能够进行运算。
E N D
第二章 VFP程序设计基础 本章要点: 1.数据和数据类型 2.常量与变量 3.运算符与表达式 4.函数 5.VFP的操作和界面 6.VFP的工作方式
2.1.1 数据与数据类型 一. 数据类型 数据:是一组用来描述事物情况的物理符号序列,通常用类型和值来表示。一般地,只有相同类型的数据才能够进行运算。 1.字符型(Character)用字母C表示。字符型数据包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0~254个字符。 2.数值型(Numeric)数据由数字、小数点、正负号和字母E组成,用字母N表示。数值型数据的取值范围是:-0.9999999999E+19~0.9999999999E+20,包括正负号、小数点和字母E在内,其长度(数据位数)最大20位。通常用于表示实数。如23,-103.45,1.3E-5(即1.3×10-5)等。
3. 浮点型(Float)数据是数值型数据的一种,用字母F表示。它与数值型数据完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。(数据表中使用) 4.双精度型(Double)数据是具有更高精度的一种数值型数据,用字母B表示。它采用固定长度浮点格式存储,占用8个字节,其取值范围是:+/-4.94065645841247E-324 ~ +/-8.9884656743115E307。(数据表中使用) 5.整型(Integer)数据是不包含小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储,占用4个字节。其取值范围是:-2147483647~2147483647(数据表中使用)
6.日期型(Date)数据是表示日期的数据,用字母D表示。日期的默认格式是{^yyyy/mm/dd},其中mm表示月份,dd表示日期,yyyy表示年度,固定长度8位。6.日期型(Date)数据是表示日期的数据,用字母D表示。日期的默认格式是{^yyyy/mm/dd},其中mm表示月份,dd表示日期,yyyy表示年度,固定长度8位。 7.日期时间型(Date Times)数据是表示日期和时间的数据,用字母T表示。日期时间的默认格式是{^yyyy/mm/dd hh:mm:ss},其中mm、dd、yyyy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。日期时间型数据也是采用固定长度8位。 8.逻辑型(Logic)表示逻辑判断的结果,用字母L表示。逻辑型数据只有真和假两种,固定长度1位。通常用小圆点括起来的.T.、.t.、.Y.、.y.表示真,.F. 、.f.、.N.、.n.表示假
9. 备注型(Memo)数据是表示、存放较多字符的数据类型。用字母M表示。字段长度固定为4位,实际数据存放在与表文件同名的备注文件(.FPT)中,长度根据数据的内容而定。(数据表中使用) 10.通用型(General)数据是对象的数据类型,用字母G表示。存放电子表格、文档、图形图片等。长度固定为4位。(数据表中使用) 11.货币型(Currency)数据是为存储美元金额而使用的一种称为货币(Currency)的数据类型,其取值范围是:-922337203685477.5808 ~ 922337203685477.5807,默认保留4位小数,占据8字节存储空间。货币型数据用字母Y表示。 12.二进制字符型和二进制备注型 这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。(数据表中使用) 其中双精度型、浮点型、通用型、整型、备注型、二进制字符型和二进制备注型只能应用于字段,其余则可以用于变量、数组和字段。
2.1.2 常量与变量 一.常量 在数据处理过程中其值不发生变化的量叫常量。Visual FoxPro常量分为5种类型:数值型常量、字符型常量、逻辑型常量、日期型常量、日期时间型常量。 1)数值型常量: 由数字、小数点和正负号组成,表示整数或实数值。 如;100,-21,15.31,-21092.5041等分别是数值型常量中的整数和实数。 2)字符型常量: 由ASCII字符、汉字组成的字符型数据,字符型常量又称为字符串。用一对双引号"或单引号'或方括号[]作为定界符。 如“I am a student..”,‘中华人民共和国’,[Visual FoxPro 6.0系统]都是字符串。 3)逻辑型常量: 是表示逻辑判断结果“真”或“假”的逻辑值。逻辑常量只有真和假两种值,通常用小圆点括起来的.T.、.t.、.Y.、.y.表示真,.F. 、.f.、.N.、.n.表示假。
4)日期型常量 是表示日期值的数据,其默认格式是{^yyyy/mm/dd}。如{^10/01/02}和{^10/01/2002}均表示2002年10月1日这一日期常量值。 5)日期时间型常量 表示日期和时间值的日期时间型常量,其默认格式是:{^yyyy/mm/dd[,] hh:mm:ss[a|p]} 其中a和p分别表示AM(上午)和PM(下午) 如: {^l999-04-24 10:00am} 6)货币型常量 $123,$321.1234 二.变量 在命令操作、程序运行过程中其值可以变化的量。 在Visual FoxPro系统中变量分为字段变量、内存变量、数组变量和系统变量4类。(变量也可以分为字段变量和内存变量两大类。) 一个变量,有变量名、数据类型和变量值。
1.内存变量 是计算机内存中一个命名的存储单元。分为用户、系统、数组内存变量。 2.字段变量 就是字段,也是变量。与其他变量不同的是,字段变量是表中的变量,它的值随表的记录变化,又是永久性多值变量。字段名就是变量名;变量的数据类型为VFP中任意数据类型,字段值就是变量值。 3. 变量 在VFP中的命名: 1)使用字母、下划线、数字和汉字构成变量名。 2)数字不能打头,自由表中字段名最多只能10个字符,最长 可使用1~128个字符。 3)不能使用 Visual FoxPro的保留字。
三.内存变量的操作 1)内存变量的数据类型:内存变量的数据类型包括:数值型、字符型、逻辑型、日期型和日期时间型; 2)内存变量的建立:建立内存变量就是给内存变量赋值。内存变量赋值既可定义一个新的内存变量,也可改变已有内存变量的值或数据类型。 赋值命令格式1: STORE <表达式> TO <内存变量表> 功能:计算<表达式>的值并赋值给各个内存变量。 赋值命令格式2: <内存变量> = <表达式> 功能:计算<表达式>的值并赋值给指定内存变量。
3)内存变量的显示输出 显示输出指定的内存变量值。命令格式: ?| ?? <表达式表> 功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。 ?:先回车换行,再计算并输出表达式的值; ??:在屏幕上当前位置,计算并直接输出表达式的值;显示输出系统内存变量的值。命令格式:DISPLAY | LIST MEMORY [LIKE <通配符>] 功能:显示指定变量的信息。 内存变量的操作 例2-1 教材P24
2.1.3 运算符与表达式 • 在VFP中,表达式是由常量、()、变量、函数、对象和运算符组成的运算式子。 • 表达式分为算术表达式、字符表达式、日期时间表达式、逻辑表达式和关系表达式五类。 • 运算符分为算术、字符、日期时间、逻辑和关系运算符五类。 • 各类运算的优先顺序如下: 圆括号->算术和日期运算->字符运算->关系运算->逻辑运算 算术运算符: () -> **或^ -> *和/ -> % -> +和- 逻辑运算: not -> and -> or
1.算术表达式 又称数值表达式,是由算术运算符和数值组成。其值为数值型数据。(教材P25) 表达式的书写规则 1)每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:23要写成2^3,X1+X2要写成X1+X2。 2)原来在数学表达式中省略的内容必须重新写上。例如:2x要写成2*x。 3)所有括号都用小括号(),括号必须配对。 4)要把数学表达式中的有些符号,改成VISUAL FOXPRO中可以表示的符号。例如:要把2πr改为 2*pi()*r。(pi()为函数)
运算符 功 能 表达式举例 运算结果 + 串1+串2:两串顺序相连接 ‘12 ’+’56’ ‘12 56’ _ 串1-串2:串1尾空格移到串2尾后再顺序相连接 ‘12 ’-‘56’ ‘1256 ’ $ 串1$串2:串1是否为串2子串 ‘1234’$ ‘a12345’ ‘1234’$ ‘34512’ .T. .F. 2.字符表达式由字符运算符将字符型数据连接起来的式子。 “+”:完全连接运算符。 “-”:不完全连接运算符。
3.日期表达式 日期运算符分为“+”和“-”两种,其作用分别是在日期数据上增加或减少一个天数,在日期时间数据上增加或减少一个秒数。两个运算的优先级别相同。两个日期可相减不能相加。 例如: {^1999/12/19}-{^1999/11/16} &&结果为数值型数据33 {^1999/11/16}+33 &&结果为日期型数据:{^1999/12/19} {^1999/12/19}-33 &&结果为日期型数据:{^1999/11/16}
运算符 功能 表达式举例 结果 < 小于 15<4*6 .T. > 大于 ‘A’ > ‘1’ .T. = 等于(字符串右值) 2+4 = 3*5 .F. <>、#、!= 不等于 5 <> -10 .T. <= 小于或等于 'abc' <= 'AB' .F. >= 大于或等于 {10-10-02}>={10/01/02} .T. == 精确等于 ‘abc’==’abcabc’ .F. 4.关系表达式 由关系运算符连接两个同类数据进行关系比较的运算式称为关系表达式。表达式的值为逻辑值,关系表达式成立则其值为“真”,否则为“假”。 关系运算符
A B A .AND.B A .OR. B .NOT A .T. .T. .T. .T. .F. .T. .F. .F. .T. .F. .F. .T. .F. .T. .T. .F. .F. .F. .F. .T. 5. 逻辑表达式由逻辑运算符将逻辑型数据连接而成的式子称为逻辑表达式。逻辑表达式由逻辑运算符、逻辑常量、变量和函数组成。VFP提供的逻辑运算符如表2.4所示。一个逻辑表达式可包含多个逻辑运算符。对于较复杂的条件判断必须采用逻辑表达式才能完成。参加逻辑运算的对象为逻辑对象,其表达式的值也是一个逻辑值。 对于逻辑运算, 其逻辑运算真 表如右:
课堂练习 设X=6,Y=9时,求 ?.not.(X>Y).or.3+X=Y.and.X*Y<X+Y+8 的值,并说明各个运算符的运算顺序。
2.2 常用函数 • 在程序设计过程中,经常将一段常用的程序保存计算机中,这段程序称为子程序。 • 子程序可以被其它程序调用。调用子程序的程序称为上级程序。被调用的程序称为调用程序的下级程序。 • VFP为了程序设计方便将一些最常用的子程序设计好了。并保存在DBMS中。这些特殊的子程序称为函数。函数又分为系统函数和自定义函数。 • VFP函数由函数名和参数组成。有380多个。
2.2.1数值函数(返回值和参数都是数值) 1.取绝对值函数 ABS( ) 见教材P29 例2-2 【格式】ABS(<nExp>) 【功能】计算nExp的值,并返回该值的绝对值。 2.指数函数 EXP( ) 【格式】EXP(<nExp>) 【功能】求以e为底、nExp值为指数的幂,即返回ex的值。 3.取整函数 INT( ) 见教材P29 例2-5 【格式】INT(<nExp>) 【功能】计算nExp的值,返回该值的整数部分。 4.自然对数函数 LOG( ) 【格式】LOG(<nExp>) 【功能】求nExp的自然对数。nExp的值必须为正数。 5.常用对数函数 LOG10( ) 【格式】LOG10(<nExp>) 【功能】求nExp的常用对数。nExp的值必须为正数。
6.平方根函数 SQRT( ) 见教材P29 例2-3 【格式】SQRT(<nExp>) 【功能】返回nExp的平方根 7.最大值函数 MAX( )和最小值函数MIN( ) 【格式】MAX(<nExp1>,< nExp2>[,< nExp3>...]) MIN(<nExp1>,< nExp2>[,< nExp3>...]) 【功能】返回 最大值MAX( )和最小值MIN( )。8.四舍五入函数 ROUND( ) 见教材P29 例2-6 【格式】ROUND(<nExp1>,< nExp2>)9.求余数函数 MOD( ) 见教材P30 例2-7 【格式】MOD(<nExp1>,<nExp2>)【功能】返回两个数值相除后的余数。 <nExp1>是被除数 10.π函数 PI( ) 【格式】PI( )
2.2.2 字符函数 字符函数是处理字符型数据的函数,其参数或函数值中至少有一个是字符型数据。 1.子串位置函数 AT( ) 【格式】AT(<cExp1>,< cExp 2>) 【功能】返回串cExp1在串cExp2中的起始位置。 2.取左子串函数 LEFT( ) 【格式】LEFT(<cExp>,<nExp>) 【功能】从cExp左边第一个字符开始,截取nExp个字符的子串。 3.取右子串函数 RIGHT( ) 【格式】RIGHT(<cExp >,< nExp>) 【功能】从cExp右边第一个字符开始,截取nExp个字符的子串。 4.取子串函数 SUBSTR( ) 【格式】SUBSTR (<c1>,<n1> [,< n2>] ) 【功能】从串c1第n1个字符开始,截取n2个字符的子串。
5.字符串长度函数 LEN( ) 【格式】LEN(<cExp>) 【功能】返回指定字符表达式值的长度,即所包含的字符个数。6.删除字符串前导空格函数 LTRIM( ) 【格式】LTRIM(<cExp>)7.删除字符串尾部空格函数 RTRIM( ) | TRIM( ) 【格式】RTRIM | TRIM(<cExp>)8.删除字符串前未置空格函数 ALLTRIM( ) 【格式】ALLTRIM(<cExp>) 【功能】返回指定字符表达式值去掉前尾部空格后形成的字符串。9.空格函数 SPACE( ) 【格式】SPACE (<nExp>)
10.字符串替换函数 STUFF( ) 【格式】STUFF(<c1>,<n1>,<n2>,<c2>) 11.字符串匹配函数 LIKE( ) 【格式】LIKE(< cExp1>,< cExp2 >) 【功能】比较两个字符串对应位置上的字符,若所有对应字 符都相匹配,函数返回逻辑真(.T.),否则返回逻辑假(.F.)。 <字符表达式1>中可以包含通配符“*”和“?”。“*”可与任 何数目的字符相匹配,?可以与任何单个字符相匹配。 12.宏替换函数 & 【格式】& < cVar > 【功能】替换出字符型变量cVar中字符。 例1:x=“bc”,abc=“abcd” ,abcd=“dcba”求:?&a&x的值。 例2:设:n=“886.6”求:?23+&n的值。
2.2.3 日期时间函数 日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式或日期时间型表达式。 1.系统日期函数 DATE( ) 【格式】DATE( ) 【功能】返回当前系统日期,此日期由Windows系统设置。函数值为D型。 2.系统时间函数 TIME( ) 【格式】TIME([<nExp>]) 【功能】返回当前系统时间,时间显示格式为hh:mm:ss。若选择了nExp ,则不管为何值,返回的系统时间还包括秒的小数部分,精确至小数点后两位。函数值为C型。
3.日期函数 DAY( ) 【格式】DAY(<dExp>) 【功能】返回dExp式中的天数。函数值为N型4.星期函数 DOW( )、CDOW( ) 【格式】DOW(<dExp>) 【功能】DOW( )函数返回dExp式中星期的数值,用1~7表示星期日~星期六。CMONTH( )函数则返回星期的英文名。函数值为N型。5.月份函数 MONTH( )、CMONTH( ) 【格式】MONTH(<dExp>) | CMONTH(<dExp>) 【功能】MONTH( )函数返回dExp式中月份数。函数值为N型。CMONTH( )函数则返回月份的英文名。函数值为C型。6.年份函数 YEAR( ) 【格式】YEAR(<dExp>) 【功能】函数返回dExp式中年份值。函数值为N型。
2.2.4 转换函数 在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。VFP系统提供了若干个转换函数,较好地解决了数据类型转换的问题。 1.ASCII码函数 ASC( ) 【格式】ASC (<cExp>) 【功能】返回首字符的ASCII码值。函数值为N型。 2.ASCII字符函数 CHR( ) 【格式】CHR(<nExp >) 【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。
3.字符日期型转换函数 CTOD( ) 【格式】CTOD(<cExp>) 【功能】把“××/××/××”格式的cExp串转换成对应日期值。4.日期字符型转换函数 DTOC( ) 【格式】DTOC(<dExp >) 【功能】把日期dExp转换成相应的字符串。函数值为C型。5.数值字符型转换函数 STR( ) 【格式】STR(<nExp1>[,< nExp2>][,< nExp3>]) 【功能】将nExp1的数值转换成字符串形式。函数值为C型。6.字符数值型转换函数 VAL( ) 【格式】VAL (<cExp>) 【功能】将由数字符号(包括正负号、小数点)组成的字符型数据转换成相应的数值型数据。从第一个字符开始转换,遇到不符合数值书写规则的字符立即停止转换,若第一个字符不是数字符号,则返回数值0。函数值为N型。
2.2.5 测试函数 在数据库应用的操作过程中,用户需要了解数据的类型等属性,Visual FoxPro提供了相关的测试函数。尤其是在运行应用程序时,常常需要根据测试结果 来决定下一步的处理方法或程序走向。 1.数据类型函数 VARTYPE( ) TYPE( ) 【格式】VARTYPE(<cExp >) 【功能】返回cExp 串表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。注:U为未定义。 2.表结束标志测试函数 EOF( ) 【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真,否则为假。 3. 表起始标识测试函数 BOF( ) 【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真,否则为假。
2.3VFP的操作和界面 1.VFP界面及各个部分作用
2. VFP的工作方式 • 命令工作方式 • 菜单工作方式 • 程序工作方式