30
第第第 第第第 VFP VFP 第第第第第第 第第第第第第 第第第第 : 1 第第第第第第第 2 第第第第第 3 第第第第第第第 4 第第 5 VFP 第第第第第第 6 VFP 第第第第第

第二章 VFP 程序设计基础

  • Upload
    tyler

  • View
    131

  • Download
    1

Embed Size (px)

DESCRIPTION

第二章 VFP 程序设计基础. 本章要点:  1 .数据和数据类型 2 .常量与变量 3 .运算符与表达式 4 .函数 5 . VFP 的操作和界面 6 . VFP 的工作方式. 2.1.1 数据与数据类型. 一. 数据类型 数据: 是一组用来描述事物情况的物理符号序列,通常用类型和值来表示。一般地,只有相同类型的数据才能够进行运算。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第二章  VFP 程序设计基础

第二章 第二章 VFPVFP 程序设计基程序设计基础础

本章要点 :   1 .数据和数据类型 2 .常量与变量 3 .运算符与表达式 4 .函数 5 . VFP 的操作和界面 6 . VFP 的工作方式

Page 2: 第二章  VFP 程序设计基础

一 . 数据类型 数据:是一组用来描述事物情况的物理符号序列,通常用类型和值来表示。一般地,只有相同类型的数据才能够进行运算。

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 )等。

2.1.1 数据与数据类型

Page 3: 第二章  VFP 程序设计基础

3. 浮点型( Float )数据是数值型数据的一种,用字母 F 表示。它与数值型数据完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。 ( 数据表中使用 ) 4. 双精度型( Double )数据是具有更高精度的一种数值型数据,用字母 B 表示。它采用固定长度浮点格式存储,占用 8 个字节,其取值范围是: +/-4.94065645841247E-324 ~ +/-8.9884656743115E307 。 ( 数据表中使用 ) 5. 整型( Integer )数据是不包含小数部分的数值型数据,用字母 I 表示。整型数据只用来表示整数,以二进制形式存储,占用 4 个字节。其取值范围是: -2147483647 ~ 2147483647 ( 数据表中使用 )

Page 4: 第二章  VFP 程序设计基础

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. 表示假

Page 5: 第二章  VFP 程序设计基础

9. 备注型( Memo )数据是表示、存放较多字符的数据类型。用字母 M 表示。字段长度固定为 4 位,实际数据存放在与表文件同名的备注文件( .FPT )中,长度根据数据的内容而定。 ( 数据表中使用 ) 10. 通用型( General )数据是对象的数据类型,用字母 G 表示。存放电子表格、文档、图形图片等。长度固定为 4 位。 ( 数据表中使用 ) 11. 货币型( Currency )数据是为存储美元金额而使用的一种称为货币 (Currency) 的数据类型,其取值范围是: -922337203685477.5808 ~ 922337203685477.5807 ,默认保留 4 位小数,占据 8 字节存储空间。货币型数据用字母 Y 表示。 12. 二进制字符型和二进制备注型 这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。 ( 数据表中使用 )

其中双精度型、浮点型、通用型、整型、备注型、二进制字符型和二进制备注型只能应用于字段,其余则可以用于变量、数组和字段。

Page 6: 第二章  VFP 程序设计基础

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. 表示假。

Page 7: 第二章  VFP 程序设计基础

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 类。 ( 变量也可以分为字段变量和内存变量两大类。 ) 一个变量,有变量名、数据类型和变量值。

Page 8: 第二章  VFP 程序设计基础

1. 内存变量 是计算机内存中一个命名的存储单元。分为用户、系统、数组内存变量。

2. 字段变量 就是字段,也是变量。与其他变量不同的是,字段变量是表中的变量,它的值随表的记录变化,又是永久性多值变量。字段名就是变量名;变量的数据类型为 VFP 中任意数据类型,字段值就是变量值。

3. 变量 在 VFP 中的命名:

1 )使用字母、下划线、数字和汉字构成变量名。

2 )数字不能打头,自由表中字段名最多只能 10 个字符,最长

可使用 1 ~ 128 个字符。

3 )不能使用 Visual FoxPro 的保留字。

Page 9: 第二章  VFP 程序设计基础

三.内存变量的操作 1 )内存变量的数据类型:内存变量的数据类型包括:数值型、

字符型、逻辑型、日期型和日期时间型; 2 )内存变量的建立:建立内存变量就是给内存变量赋值。内存

变量赋值既可定义一个新的内存变量,也可改变已有内存变量的值或数据类型。

赋值命令格式 1 : STORE < 表达式 > TO < 内存变量表 > 功能:计算 <表达式 >的值并赋值给各个内存变量。 赋值命令格式 2 : <内存变量 > = <表达式 > 功能:计算 <表达式 >的值并赋值给指定内存变量。

Page 10: 第二章  VFP 程序设计基础

3 )内存变量的显示输出 显示输出指定的内存变量值。 命令格式: ? | ?? <表达式表 > 功能:计算表达式表中各表达式的值,并在屏幕上指定位置显示输出各式的值。 ?:先回车换行,再计算并输出表达式的值; ??:在屏幕上当前位置,计算并直接输出表达式的值; 显示输出系统内存变量的值。 命令格式: DISPLAY | LIST MEMORY [LIKE < 通配符 >] 功能:显示指定变量的信息。 内存变量的操作 例 2-1 教材 P24

Page 11: 第二章  VFP 程序设计基础

2.1.3 运算符与表达式 在 VFP 中,表达式是由常量、()、变量、函数、对象和运算符

组成的运算式子。

表达式分为算术表达式、字符表达式、日期时间表达式、逻辑表达式和关系表达式五类。

运算符分为算术、字符、日期时间、逻辑和关系运算符五类。

各类运算的优先顺序如下: 圆括号 -> 算术和日期运算 -> 字符运算 -> 关系运算 -> 逻辑运算 算术运算符 : () -> **或 ^ -> *和 / -> % -> + 和 - 逻辑运算 : not -> and -> or

Page 12: 第二章  VFP 程序设计基础

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() 为函数 )

Page 13: 第二章  VFP 程序设计基础

2. 字符表达式 由字符运算符将字符型数据连接起来的式子。 “+”: 完全连接运算符。 “-”: 不完全连接运算符。

运算符 功 能 表达式举例 运算结果

+ 串 1+ 串 2 :两串顺序相连接

‘12 ’+’56’ ‘12 56’

_ 串 1- 串 2 :串 1尾空格移到串 2尾后再顺序相连接

‘12 ’-‘56’ ‘1256 ’

$ 串 1$ 串 2 :串 1 是否为串 2子串

‘1234’$ ‘a12345’

‘1234’$ ‘34512’

.T.

.F.

Page 14: 第二章  VFP 程序设计基础

3. 日期表达式 日期运算符分为“ +” 和“ -” 两种,其作用分别是在日期数据上增加或减少一个天数,在日期时间数据上增加或减少一个秒数。两个运算的优先级别相同。两个日期可相减不能相加。

例如:{^1999/12/19}-{^1999/11/16} && 结果为数值型数据 33{^1999/11/16}+33 && 结果为日期型数据: {^1999/12/19

}{^1999/12/19}-33 && 结果为日期型数据: {^1999/11/16

}

Page 15: 第二章  VFP 程序设计基础

4.关系表达式 由关系运算符连接两个同类数据进行关系比较的运算式称为关系表达式。表达式的值为逻辑值,关系表达式成立则其值为“真”,否则为“假”。

关系运算符

运算符 功 能 表 达 式 举 例 结果< 小于 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.

Page 16: 第二章  VFP 程序设计基础

5. 逻辑表达式 由逻辑运算符将逻辑型数据连接而成的式子称为逻辑表达式。逻辑表达式由逻辑运算符、逻辑常量、变量和函数组成。 VFP提供的逻辑运算符如表 2.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.

Page 17: 第二章  VFP 程序设计基础

课堂练习 设 X=6 , Y=9 时,求 ?.not.(X>Y).or.3+X=Y.and.X*Y<X+Y+8 的值,并说明各个运算符的运算顺序。

Page 18: 第二章  VFP 程序设计基础

2.2 常用函数

在程序设计过程中,经常将一段常用的程序保存计算机中,这段程序称为子程序。

子程序可以被其它程序调用。调用子程序的程序称为上级程序。被调用的程序称为调用程序的下级程序。

VFP 为了程序设计方便将一些最常用的子程序设计好了。并保存在 DBMS 中。这些特殊的子程序称为函数。函数又分为系统函数和自定义函数。

VFP函数由函数名和参数组成。有 380 多个。

Page 19: 第二章  VFP 程序设计基础

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的值必须为正数。

Page 20: 第二章  VFP 程序设计基础

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( )

Page 21: 第二章  VFP 程序设计基础

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 个字符的子串。

Page 22: 第二章  VFP 程序设计基础

5 .字符串长度函数 LEN( ) 【格式】 LEN(<cExp>) 【功能】返回指定字符表达式值的长度,即所包含的字符个数。6.删除字符串前导空格函数 LTRIM( ) 【格式】 LTRIM(<cExp>)7.删除字符串尾部空格函数 RTRIM( ) | TRIM( ) 【格式】 RTRIM | TRIM(<cExp>)8.删除字符串前未置空格函数 ALLTRIM( ) 【格式】 ALLTRIM(<cExp>) 【功能】返回指定字符表达式值去掉前尾部空格后形成的字符串。 9.空格函数 SPACE( ) 【格式】 SPACE (<nExp>)

Page 23: 第二章  VFP 程序设计基础

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的值。

Page 24: 第二章  VFP 程序设计基础

2.2.3 日期时间函数

日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式或日期时间型表达式。

1 .系统日期函数 DATE( ) 【格式】DATE( ) 【功能】返回当前系统日期,此日期由 Windows 系统设置。函数

值为 D 型。 2 .系统时间函数 TIME( ) 【格式】 TIME([<nExp>]) 【功能】返回当前系统时间,时间显示格式为 hh:mm:ss 。若选择

了 nExp ,则不管为何值,返回的系统时间还包括秒的小数部分,精确至小数点后两位。函数值为 C 型。

Page 25: 第二章  VFP 程序设计基础

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型。

Page 26: 第二章  VFP 程序设计基础

2.2.4 转换函数

在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。 VFP 系统提供了若干个转换函数,较好地解决了数据类型转换的问题。

1 . ASCII码函数 ASC( ) 【格式】 ASC (<cExp>) 【功能】返回首字符的 ASCII码值。函数值为 N型。 2 . ASCII字符函数 CHR( ) 【格式】 CHR(<nExp >) 【功能】返回以 nExp值为 ASCII码的 ASCII字符。函数值为 C型。

Page 27: 第二章  VFP 程序设计基础

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型。

Page 28: 第二章  VFP 程序设计基础

2.2.5 测试函数 在数据库应用的操作过程中,用户需要了解数据的类型等属性, Visual FoxPro提供了相关的测试函数。尤其是在运行应用程序时,常常需要根据测试结果 来决定下一步的处理方法或程序走向。

1 .数据类型函数 VARTYPE( ) TYPE( ) 【格式】 VARTYPE(<cExp >) 【功能】返回 cExp 串表示的数据对象的数据类型,返回值是一个表

示数据类型的大写字母。注: U为未定义。2 .表结束标志测试函数 EOF( ) 【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真,否则为假。

3. 表起始标识测试函数 BOF( ) 【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真,否则为假。

Page 29: 第二章  VFP 程序设计基础

1.VFP 界面及各个部分作用

2.3 VFP 的操作和界面

Page 30: 第二章  VFP 程序设计基础

2. VFP 的工作方式 命令工作方式 菜单工作方式 程序工作方式