Visual Basic程序设计
第七章 数组
万博科技职业学院
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
数组
?一组变量, 名字相同, 数据类型相同, 用下标
( 索引 -Index) 来区分 。 例如:
a(0),a(1),…, a(n)
称为数组 a的成员 ( 元素, 下标变量 )
?两种类型的数组:
?静态数组,成员数量不变,
?动态数组,成员数量可变 。
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
静态数组
? 定义 ( 声明 ),
Dim | Private | Public | Static _
数组名 ( [下界 To ] 上界 ) [As 数据类型 ]
?缺省的下界为 0 ( 或 1,如有 Option Base 1 )
?除 Variant型外, 数组内所有元素有相同类型 。
?例:
Dim a(4) As Integer ‘含 5个元素 a(0),…,a(4)
Dim s(10 To 20) As String ‘含 11个元素
Dim b(3,2) ‘2维数组, 变体型, 4× 3个元素
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
多维数组
Dim a%(3,4) ‘定义了 1个二维数组
A(0,0) A(0,1) A(0,2) A(0,3) A(0,4)
A(1,0) A(1,1) A(1,2) A(1,3) A(1,4)
A(2,0) A(2,1) A(2,2) A(2,3) A(2,4)
A(3,0) A(3,1) A(3,2) A(3,3) A(3,4)
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
数组的使用
? 数组元素与一般变量一样使用。
? 注意:
– 声明后初值为 0(数值型)或空(字符型)
– 声明数组和引用数组元素时,都用圆括号括
住下标。
– 下标值不能超过定义范围
– 数组与简单变量在同一范围内不能同名。
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
赋值
? 每个数组元素都是一个变量,一般应逐个
赋值。例如:
For i=0 to ubound(a)
a(i)=i
Next i
? 使用 Array函数。例如:
Dim a as variant ?a是一个变体型变量
a=Array(1,3,6)
?结果 a成为数组,且,a(0)=1,a(1)=3,a(2)=6
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
与数组有关函数
? Lbound(a) 数组 a的下界
? Ubound(a) 数组 a的上界
? Array(a1,a2,…) 创建一个数组
各元素初值为 a1,a2,..
? Split(A[,c]) A-String,c-Character
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
使用 InputBox()函数输入
? 逐个输入:
For i=0 to 5
a(i)=inputbox(“a(,& i &,)=“)
Next I
? 一次输入:
Dim a as Variant,s as String
s= inputbox(“输入数据,用逗号隔开”)
a=split(s,”,”)
for I=0 to ubound(a)
print a(I)
next i
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
动态数组( 1)
创建动态数组的步骤:
1,声明动态数组, 给数组附以一个空维数表,
例如,Dim DynA ( ) as integer
2,用 ReDim 语句在程序执行过程中给数组指定
维数和分配实际的元素个数,例如:
ReDim [Preserve] DynA (4 to 12)
3,Preserve 保留数组内容 。 此时只能改变最后
一维上界 。
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
动态数组( 2)
值得注意的是,ReDim 语句与 Dim 语句不
同, ReDim 语句是一个可执行语句, 通过在
应用程序中执行 ReDim 语句, 给维数和元素
个数待定的数组指定维数和元素个数 。
在程序中还可以使用变量设置动态数组的
边界 。
例如:
ReDim DynA (X,Y)
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,控件数组
?一组控件,名字相同,类相同,用下标
(索引 -Index)来区分。 例如:
Command1(0),Command1(1),…,
Command1(n)
Font
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
For Each...Next循环
For Each...Next 循环是以对象集合中的每一
个元素作为重复依据的,如果不知道一个集合有
多少元素, For Each...Next 循环非常有用 。
语法格式:
For Each <元素 > In <集合 >
语句块
Next <元素 >
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.例:移动窗体中所有控件
( Controls)
Private Sub form_Click()
Dim ob1 As Object
For Each ob1 In Controls
ob1.Left = ob1.Left + 20
Next ob1
End Sub
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
数据排序( Sort)
? 冒泡排序( Buble Sort)
? 选择排序( Selection Sort)
? 插入排序( Insertion Sort)
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
数据查找
? 顺序查找
? 折半查找