2.1 程序设计概述
1. 程序设计方法简介
设计方法 |
主要概念 |
设计过程 |
程序执行方式 |
结构化程序设计 | 功能模块(即过程、自定义函数) | 编制各个功能模块,再用主程序将它们串起来 | 将应用程序分解成若干功能模块,通过各模块的相互调用来完成整个执行过程,是过程驱动的。 |
面向对象程序设计 | 类、对象、属性、事件、方法 | 设计类、子类、对象(设计外观、设置属性、为事件编写方法程序) | 将应用程序分解成具有特定属性的对象,通过调用各对象的不同方法来完成相关事件,是事件驱动的。 |
2.数据类型
VFP 包含下列数据类型:
通用的数据类型 |
字符型
Character |
货币型
Currency |
日期型
Date |
日期时间型
DateTime |
逻辑型
Logical |
数值型
Numeric |
仅用于字段的数据类型 |
双精度型
Double |
浮点型
Float |
整型
Integer |
通用型
General |
备注型
Memo |
|
3. 数据容器
VFP中用来存储数据的容器有:常量、变量、数组、记录和对象。
(1) 常量(constants):
一个在操作过程中保持不变的数值或字符串。
常用的常量类型
常量类型 |
数值型常量 |
字符型常量 |
逻辑型常量 |
日期型常量 |
表示方式 |
-25.36 |
"abc","123","中国" |
.T. .F. |
{^2005/07/10} |
(2)变量(variables):
是内存中的一个存储单元的位置,其中的内容可以变化,但标识该存储位置的名称(即变量名)不变。
变量的命名习惯: 类型变量代号
如:cStud 、nCj 、dCsrq ——
分别代表一个字符型、数值型、日期型的变量名
变量的赋值方式: 1) 用 STORE 命令 如:STORE "王兰" TO cStud
2) 用赋值操作符 = 如:cStud = "王兰"
变量的作用域: 即变量起使用的有效范围。
变量作用域 |
定义作用域的关键字 |
特点 |
局部变量 local variable(本地变量) |
LOCAL | 只能在一个函数或过程中被访问,其他过程或函数不能访问此变量的数据。当其所属程序停止运行时,局部变量将被释放。 |
私有变量
private variable |
PRIVATE | 私有变量在 VFP 中是默认的,不需要特殊的关键字定义。但是,如果在更高一级例程(routine)中已经有同名变量,可以用PRIVATE 关键字予以声明,以限定其范围。当定义此变量的例程结束时,此变量也被相应释放。可使用私有变量在被调用的函数中共享数据。 |
公共变量
public variable |
PUBLIC | 可用于所有过程和函数,而不限于定义该变量的过程和函数。可使用全局变量在多个过程或函数之间共享数据,在命令窗口中创建的任何变量自动具有全局属性。 |
变量的访问:
当变量和字段同名时,字段有优先被访问权。要在变量名前加 m. 或 m -> 以示区别,如 m.cStud
(3)数组(array):
是存储在一个变量中由单个变量名引用的有序数据集合。在 VFP中,一个数组中的数据不必是同一种数据类型。常用的有一维数组,二维数组。
数组元素的标识:通过一个数值下标来引用,如 AA[2],AA[2,3]
数组类型的声明:
私有数组 ——用DECLARE 或 DIMENSION定义
全局数组 ——用PUBLIC命定义
局部数组 ——用LOCAL定义
数组元素的赋值:
用赋值语句: 如 AA=45
用SCATTER从当前记录中取特定字段的值赋给数组:
如: scatter fields xh, xm, xb to aa
(数组长度、类型自动与所给字段相同)
用 COPY TO ARRAY从当前记录中取所有字段的值赋给数组:
如: copy to array aa
(数组长度、类型自动与表中全部字段相同)
把数组中的数据传给当前表中的当前记录:
gather from 数组名 [fields 字段名表]
用数组向当前表添加记录:
append from array 数组名 [for 条件] [[fields 字段名表]
(用二维数组可以同时添加多条记录)
数组处理的常用函数:
排序SORT(),搜索ASCAN(),删除ADEL(),插入AINS()
(4) 记录:
表中的一行,由字段组成。
(5) 对象:
对象是类的一个实例,类是对拥有数据和一定行为特征的对象集合的描述。VFP对象可以是表单、表单集、控件。