第七章 数组一、数组的概念数组是由一个统一的名称表示的、顺序排列的一组变量。数组中的数据是顺序存放的,因而是有序的,数组中的每一个元素都可以通过一个数值下标被引用。如 A(5)
数组名 用来标识数组,命名规则与简单变量相同 。
维数 是指数组的下标个数 。 下标个数为 1则为一维数组;下标个数为 2则为二维数组 。 Visual FoxPro 系统只支持一,二维数组 。
维长 是指数组每一维的元素个数。
注意:下标必须用括号括起来;下标可以是常数,变量或表达式;下标必须是整数,否则自动取整 (去掉小数部分 )
数组的大小 是指数组元素的个数,由数组的维数和维长决定。
二、数组类型数组的数据类型是指数组元素的数据类型。数组元素的数据类型默认为逻辑型,系统规定各元素的初值均为逻辑值,F.。
数组元素的数据类型因取值类型而动态变化,一个数组中的数据不必是同一种数据类型,即数组元素的数据类型可因需要而改变,可互不相同。
三、数组的定义、赋值与引用使用数组前必须先定义声明 。 定义的内容包括数组名,维数和维长 。 定义数组的语法格式为:
DIMENSION | DECLARE <数组名 >( N1[,N2]) [,<数组名 >
( K1[,K2]) …… ]
全局数组 定义全局数组的语法格式为:
PUBLIC <数组名 > ( N1[,N2]) [,<数组名 >( K1[,K2]) …… ]
局部数组 定义局部数组的语法格式为:
LOCAL <数组名 > ( N1[,N2]) [,〈 数组名 〉 ( K1[,K2])
…… ]
l 举例:
DIMENSION a (8),b (2,3) && 定义私有数组
PUBLIC c(6),d(2,4) && 定义全局数组
LOCAT e(10),f(2,5) && 定义局部数组说明:
( 1)可一次定义一个或多个数组;
( 2)系统规定数组下标下限为 1,N1,N2,K1、
K2等均为数组下标的上限。
( 3)系统在定义声明的同时,将所有的元素赋初值,f,
四、数组的赋值
a=45 && 将数组 a的所有元素赋值为 45
b(1,1)={^2003-06-12} && 将数组 b的第一个元素赋日期型数据
b(1,2)= "book1" && 将数组 b的第二个元素赋字符型数据
b(1,3)=5 && 将数组 b的第三个元素赋数值型数据
STORE "001" TO d(1,1) && 将数组 d的第一个元素赋字符型数据
STORE "李冬 " TO d(1,2) && 将数组 d的第二个元素也赋字符型数据
STORE 78 TO d(1,3) && 将数组 d的第三个元素赋数值型数据
STORE "OK" TO s && 将数组 s的所有元素赋值为 "OK"
l 举例:
DIME a(5),b(2,3)
a = 60
b(1,1) = 8
b(2,2) = "book"
t = a(4) && 引用数组 a的第四个元素
p = b(1,1) && 引用数组 b的第一个元素
k = b(5) && 引用数组 b的第五个元素,b(5) 也就是 b(2,2)
以上数组 a 的 5个元素依次为,a(1),a(2),a(3),a(4),a(5),
数组 b 的 6个元素依次为,b(1,1),b(1,2),b(1,3),b(2,1),b(2,2),b(2,3)。
由于 b(2,2)是数组 b 的第五个元素,故可以记为,b(5),同理,b(1,2)
可以记为 b(2),b(2,1)可以记为 b(4)
五、数组的引用程序实例 (计算文本框中输入的 8个数的最大值、最小值和平均值 )
二维数组
【 例 7-2】 在列表框中输出九九乘法表。
1 数组的重新定义和释放重新定义数组重新定义数组 是指重新设置数组的维数和维长,即改变数组的维数和大小 。
重新定义数组的语法格式为:
DIMENSION <数组名 >( N1[,N2]) [,<数组名 >( K1[,K2])
……]
释放数组释放数组 是指从内存中释放数组变量 。
语法格式为:
RELEASE <变量列表 > | <数组列表 >
如:
DIMENSION a (8),b (2,3) && 定义私有数组
RELEASE a,b && 释放数组 a,b
六、数组的处理七、处理数组的函数
1,数组元素的排序数组元素的排序 一维数组的排序是指数组元素按其值的大小重新排列;二维数组的排序是指数组行按某列数组元素的值重新排列。
在 Visual FoxPro 系统中,将数组元素排序的函数为:
ASORT (<数组名 >[,N1[,N2[,N3]]])
l 说 明:
⑴ N1为排序数组元素的起始序号; N2为排序数组元素或数组行的数目。
⑵ N3为 0则为升序,为 1或非 0则为降序。
⑶ 二维数组是按 N1号元素所在的列元素值排序,以 N1号元素所在的行为排序起始行。
⑷ 排序的数组元素的数据类型必须相同。
举例:
DIMENSION a (8),b (4,3) && 定义数组
ASORT( a) && 将一维数组的所有元素排序
ASORT( b,5) && 将二维数组的第二、三、四行按第二列元素的值排序