Visual Basic 程序设计
5.1 数组的概念
5.2 数组的基本操作
5.3 动态数组
5.4 控件数组第 5节 数组
Visual Basic 程序设计
☆ 数组元素是带有 下标 的变量,其一般形式为:
数组名(下标 1 [,下标 2,……] ) 如,A(2) B(2+2,1) C(1*2,3,1)
A(2) =(A(0) A(1) A(2))
B(0,0) B(0,1)
B(1,0) B(1,1)
B(2,0) B(2,1)
B(2,1)=
第 1行第 2行第 3行第 1列 第 2列
5.1 数组的概念数组是一组具有 相同类型 的有序变量的集合。数组可用于存储成组的有序数据。使用数组就是用一个相同的名字引用这一组变量中的数据,这个名字称为数组。
Visual Basic 程序设计
通常,数组是由 一组 具有 同一类型 的变量组成的,在使用一个数组之前必须对数组进行定义,确定其名称、类型及其规模。
在 VB中有两种类型的数组,固定大小的数组 — 在定义时就确定了数组大小,并且在程序运行过程中,它总是保持同样的大小; 动态数组 —在定义时不指明其大小,并且在运行时其大小可以改变。
声明 固定大小 数组应包含的信息:
数组名? 数组的维数
数组的大小(体积)? 数组的类型数组定义
Visual Basic 程序设计
⒈ 一维数组格式:
Dim|Private| Public| static 数组名 ([维界定义 ]) [As 数组类型 ]
功能,定义一个一维数组,并初始化所有数组元素。
说明,① 数组的维界定义必须为常数或常量符号,不能是表达式或变量。例如:
Const k as integer=10
Dim x(10) As Single 正确
Dim a(k) as long 正确而 n=10
Dim x(n) As Single 错误,下标不能是变量,只能是常数或常量符号。
Visual Basic 程序设计
② 下标的形式是,[下界 To ]上界 。一般情况下,当 [下界 To]缺省时,默认值为 0。下界 ≤上界。维的大小是,上界-下界+ 1。
维界说明如果不是整数,将自动进行四舍五入处理。
③ As 数据类型,用来说明数组元素的类型,如果缺省,默认为是 变体型( Variant) 。
例如:
Dim a (12) As Single ˊ 声明 a数组为单精度型,下标范围为 0~ 12,
Dim x (1 To 50 ) As Integer ˊ 声明 x数组为整型,下标范围为
1~ 50,
Dim y (1 To 10 ) ˊ 声明 y是一个下标范围为 1到 10的变体型数组,
Visual Basic 程序设计
④ 数组必须先声明后使用 。
⑤ Dim语句声明数组,该语句把数值数组中的全部数组元素都初始化为 0,把变体字符串数组中的数组元素初始化为空字符串,把定长字符串数组的元素初始化为给定长度的空格,把逻辑型数组元素初始化为 False,
变体型初始化为 Empty。
⑥ Dim语句中的维界定义可以是常数,也可以为空 。
下标为常数时为固定大小的数组,下标为空时则为动态数组 。
Visual Basic 程序设计
⑦ 可以使用以下方法声明数组:
建立公用数组,在模块的声明段用 Public 语句声明数组 。
建立模块级数组,在模块的声明段用 Private 或 Dim语句声明数组 。
建立局部数组,在过程中用 Dim或 Static语句声明数组 。
例如:
Public Counters ( 14 ) As Double
定义 Counters为 15个元素的公用数组
Private Sums ( 1 To 20 ) As Double
定义 Sums为 20个元素的模块级数组
s b form_click( )
Dim Subs ( 20 ) As Double?定义 Subs 为 21个元素的局部数组
End sub
Dim a (4) as Integer?声明模块级数组
private sub command1_click( )

end sub
Visual Basic 程序设计用 static定义静态局部数组
Private sub form_click( )
Static s(3) as Integer
End sub
与前述的静态变量类似,静态数组的特点是,在调用过程时,它的各个元素会继承上次退出该过程时对应元素的值。
Visual Basic 程序设计
⒉ 多维数组格式:
Dim|Private| Public| static 数组名 ([维界定义 ]) [As 数组类型 ]
说明,此时的维界定义是对两维下标的定义 。 每一维的大小为,上界-下界+ 1;数组的大小为 每一维大小的乘积 。
Dim Arr( 3,4) As Integer
声明 Arr是整型数组,4行 5列,
共 20个元素。
Dim MultiD (3,1 To 10,1 To 15)
声明 MultiD是一个变体数组,大小为 4 * 10* 15
数组声明中定义的数组名,用来说明数组的名字、
维数、大小和类型。数组元素是数组中的一个成员,
只能放在可执行语句中。两者虽然形式相同但意义不同。
例如,Dim b(1,2) as Single ‘声明 2行 3列的二维数组
b(1,2) = 3.2 ‘给数组元素 b(1,2)赋值
Visual Basic 程序设计数组是由 一组 具有 同一类型 的变量组成的。
数组元素是 连续存放 的 。
..,A1,.,A0 A5,.,A3,.,A2,.,A4,..
普通变量:独立存放数组元素变量:连续存放(带下标的变量)
A(1,1) A(2,1) A(1,2) A(2,2) A(1,3) A(2,3)
数组的结构
Visual Basic 程序设计一维数组的存储方式按下标由小到大的线性顺序存放在一串连续的内存单元中。
Dim x(5) as Integer X(0)
X(1)
X(2)
X(3)
X(4)
X(5)
存储结构逻辑存储结构
X(0) X(1) X(2) X(3) X(4) X(5)
Visual Basic 程序设计
A(0,0)
A(1,0)
A(0,1)
A(1,1)
A(0,2)
A(1,2)
二维数组的存储方式二维数组的数组元素,按列,顺序存放。
Dim A(1,2) as Single Dim A(2,1) as Single
逻辑存储结构
A(0,0) A(0,1) A(0,2)
A(1,0) A(1,1) A(1,2)
A(2,0) A(2,1)
A(0,0) A(0,1)
A(1,0) A(1,1)
逻辑存储结构
A(0,0)
A(1,0)
A(2,0)
A(0,1)
A(1,1)
A(2,1)
第 1列第 2列第 3列第 1列第 2列
Visual Basic 程序设计
5.2 数组的基本操作数组是程序设计中最常用的结构类型,将数组元素的下标和循环语句结合使用,能解决大量的实际问题。数组在定义时用数组名表示该数组的整体,但在具体操作时是针对每个数组元素进行的。
1、数组元素的赋值利用循环语句对数组元素进行逐一地赋值。
Private sub form_click()
dim a(5) as integer,I as integer
for I=0 to 5
A(I)=Int(100*rnd)+1
print a(I);
next I
end sub
Private sub form_click()
dim a(5) as integer,I as integer
for I=0 to 5
a(I)=Inputbox(“给数组元素赋值”,“数组 A赋值,)
print a(I);
next I
end sub
Visual Basic 程序设计
利用 Array函数可以把一个数据集赋值给一个 Variant变量,再将该 Variant
变量创建成一个一维数组。
– <变体变量名 >=Array([数据列表 ])
– Option Base 1
private sub form_click( )
dim a as variant,I as integer,b(4) as variant
a=array(5,4,3,2,1)
print a(0);a(1); a(2); a(3); a(4)
a=array(1.5!,2.3!,3.6!,4.1! )?!为单精度类型
print a(0); a(1); a(2); a(3)
a=“no array”
print a
B=array(1,2,3,4,5,6)?错误语句 why?
end sub
逗号间隔,,如果不提供参数,则创建一个长度为 0的数组。
把一组数据赋给一个数组
B为一个变体数组,而 A为一变体型变量。
Dim b As Variant
b=Array(1,2,3,4,5)
For I=Lbound(b) To Ubound(b)
Picture1.Print b(i) ;,,;
Next i
0 4
Visual Basic 程序设计
2,数组元素的输出数组元素的输出可以使用 For循环和 Print语句来实现 。
例:用 Array函数给数组提供初值,然后用 For循环将数组的值输出。例:
Static Number As Variant
Number = Array ( 1,2,3,4,5 )
For i % = 0 To 4
Print Number (i % )
Next
例,输出方阵
sc中的下三角元素。
Private Sub Command1_Click()
Dim sc(4,4) As Integer
For i = 0 To 4
For j = 0 To i
sc(i,j) = i * 5 + j
Print sc(i,j); " ";
Next j
Print
Next i
End Sub
隐式说明方式,%为 Integer
Visual Basic 程序设计
3,数组元素的引用要使用数组中的元素,应使用这样的格式:
格式,数组名(下标,… )
说明,① 下标的个数必须与数组定义时的维数一致。对于多维数组元素,下标之间用逗号隔开。
☆ ② 对数组元素的引用必须在各维的上下界之内。否则就会产生“下标越界”的错误。
Visual Basic 程序设计固定大小的数组动态数组定义时指明大小,运行时不变在声明数组时未给出数组的大小,在程序运行期间可变
Visual Basic 程序设计
5.3 动态数组动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用该数组时,随时可用 ReDim语句重新定义数组的大小。使用动态数组的优点是:用户可以根据需要有效地利用存储空间,它是在程序执行到 ReDim语句时分配存储空间。
建立动态数组的方法是,使用 Dim,Private,Public等语句声明括号内为空的数组,给数组赋予一个空维数表。
如,Dim Dyn() as Integer
然后在过程中 用 Redim语句指明该数组的大小。
格式,Redim [preserve ] 数组名 ( 下标 1 [,下标 2 …])
功能:声明动态数组的大小。
Visual Basic 程序设计说明,① ReDim语句中的下标可以是常量,也可以是有了确定值的变量 。
② 在过程中可以多次使用 ReDim语句来改变数组的大小 。
③ 每次使用 Redim语句都会使原来数组中的值丢失,即数组中的内容全部被重新初始化 。
用 Preserve选项,则在对数组重新说明时,将会保留数组中原来的数据 。 但该参数只能改变 最后一维 的大小,前面维的大小不能改变 。
例如,Dim sArray( ) As Single
Sub Form_click( )
……
ReDim sArray(4,8)
……
End Sub
在窗体级声明了数组 sArray为动态数组,在 Form_click( )事件函数中重新指明该数组的大小是 5行 9列。
Di a( ) as Integer
N=4
redim a(n)
N=9
redim a(n)
n=10
redim a(n,n)
Dim att( ) as Integer
I=2,J=2
redim att(i,j)
j=j+1
redim preserve att(i,j)
Visual Basic 程序设计
Private sub form_click( )
Dim a( ) as integer,I as integer,j as integer,n as integer
n =5
redim a(n)?重新说明 A为一维数组
for I=1 to n
A(I)=inputbox(“x=”,,1)
print a(I);
next I
print
print
redim a(n,n)?重新说明 A为二维数组
for I=1 to n
for J=1 to n
a(i,j)=i+j
print a(i,j);
next j
print
next i
End Sub
Visual Basic 程序设计
基本概念,由一组具有名称和相同类型的控件组成,数组中的每一控件共享同样的事件过程。当建立控件数组时,系统给每个元素赋一个唯一的索引号( Index),通过属性窗口的 Index属性,可以知道该控件的下标是多少,
第 1个下标是 0。
– 例如:一个控件数组有三个 option按钮,不论单击哪一个,都会调用同一个 Click事件过程。
建立的方法,1、创建同名控件。 2、复制现存控件。
5.4 控件数组
Test11.vbp