当前位置:首页 >> 其它课程 >> VB程序设计第四章数组_图文

VB程序设计第四章数组_图文

第四章 数组
数组的概念 数组的定义 数组的应用 控件数组

数组的概念
数组并不是一种数据类型,而是一组相同 类型数据的集合。用一个统一的名字(数 组名)代表逻辑上相关的一批数据,每个 元素用下标变量来区分;下标变量代表元 素在数组中的位置。
其表示形式:A(1), A(10)

X(1,1),

X(1,10), X(2,10)

Y(0,0,0), Y(1,2,5)

Visual Basic 中的数组,按不同的方式可分为 以下几类:
按数组的大小是否可以改变来分为:定长(固 定大小)数组、动态(可变大小)数组。 按元素的数据类型可分为:数值型数组、字符 串数组、日期型数组、变体数组等。 按数组的维数可分为:一维数组、二维数组、 多维数组。 对象数组:控件数组。

数组的定义
静态数组及声明:
形式为:
Dim 数组名(下标1[,下标2…]) [As 类型]

或:
Dim 数组名[<数据类型符>]([<下界>to]<上界>)
例:Dim a(1 to 10) As Integer

? 声明了a数组有10个元素
与上面声明等价形式: Dim a%(1 to 10)

说明:

1.数组名的命名规则与变量的命名相同。 2.数组的元素个数:上界-下界+1。 3.缺省<下界>为0,若希望下标从 1开始,可在 模块的通用部分使用Option Base语句将设为1。 其使用格式是: Option Base 0|1 例如: Option Base 1 ' 将数组声明中缺省<下界>下标设为1

4 . < 下界 > 和 < 上界 > 不能使用变量,必须是常量, 常量可以是直接常量、符号常量,一般是整型 常量。 5 .如果省略 As 子句,则数组的类型为变体类型。 6 .数组中各元素在内存占一片连续的存储空间, 一维数组在内存中存放的顺序是下标大小的顺 序。 7. 可以使用Erase语句清除静态数组中各元素的 值。形式如下: Erase <数组名>

动态数组:在声明数组时未给出数组的大小
(省略括号中的下标),当要使用它时,随时用 ReDim语句重新指出数组大小。 形式如下:
ReDim 数组名(下标[,下标2…]) [As 类型]

例: Private Sub Form_Load( ) Dim x( ) As Single … n =Inputbox(“输入n”) ReDim x(n) … End Sub

说明:
1.ReDim语句是一个可执行语句,只能出现在过 程中,并且可以多次使用,改变数组的维数和 大小。 2.定长数组声时中的下标只能是常量,而动态 数组ReDim 语句中的下标是常量,也可以是有 了确定值的变量。

3.在过程中可以多次使用ReDim来改变数组的大小, 也可改变数组的维数。 例:ReDim x(10) ReDim x(20) x(20) = 30 Print x(20)

4.每次使用ReDim语句都会使原来数组中值丢失,可 以在ReDim后加Preserve 参数来保留数组中的数据。 但此时只能改变最后一维的大小。
5.可以使用Erase语句释放动态数组所占的存储空间。 形式如下: Erase<数组名>

与数组操作有关的几个函数
1. Aarry函数
Aarry函数可方便地对数组整体赋值,但它只能 给声明Variant的变量或仅由括号括起的动态数 组赋值。赋值后的数组大小由赋值的个数决定。 例如,要将1,2,3,4,5,6,7 这些值赋值给数组a, 可使用下面的方法赋值。

Dim a()
Dim a

?动态数组a
?变体类型的变量a

A=array(1,2,3,4,5,6,7)

A=array(1,2,3,4,5,6,7)

2.求数组的上界Ubound( )函数和下界 Lbound( ) 函数
Ubound函数和Lbound函数分别用来确定数组某一维的上 界和下界值。 使用形式如下: UBound(<数组名>[, <N>])

LBound(<数组名> [, <N>])
其中: <数组名>:必需的。 <N> :可选的;一般是整型常量或变量。指定返回哪 一维的上界。1 表示第一维,2 表示第二维,如此等

等。如果省略默认是1。

3.Split函数
使用格式: Split(<字符串表达式> [,<分隔符>]) 说明: 使用Split函数可从一个字符串中,以某 个指定符号为分隔符,分离若干个子字符 串,建立一个下标从零开始的一维数组。

例如: 结果输出: a Dim x, s$ b s = "a,b,c,d,e" x = Split(s, ",") c For i = 0 To UBound(x) d Print x(i) e Next I

例如:
Dim a() As Variant, b() As Variant, i% a = Array(1, 2, 3, 4, 5) ReDim b(UBound(a)) b = a 等价于如下语句:
For i = 0 To UBound(a) b(i) = a(i) Next i

数组的应用
一、For each –Next 循环 格式为: For each <变量> In <数组名> [<语句组1>] [Exit For] [<语句组2>] Next 变量 说明: 变量只能是一个可变类型的变量,表示 数组中的任意一个元素。

例1.分析以下代码。

Dim a() Private Sub Form_Load() Dim x a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) For Each x In a List1.AddItem x Next x End Sub

二、应用举例: 使用数组可以高效处理大批量的数据,也 可以缩短和简化程序。 例1. 求数组中最大元素及所在下标。 Dim Max As Integer,iMax As Integer Max=a(0):iMax=0 For i = 0 To 9 If a(i)>Max Then Max=a(i):iMax=i End If Next I Print “最大元素为:”; Max Print “所在下标是:”; iMax

例2. 将数组中各元素交换
For i = LBound(a) To UBound(a) \ 2 t = a(i) a(i) = a(UBound(a) - i) a(UBound(a) - i) = t Next i

控件数组
控件数组:是由一组相同类型的控件组成。 控件数组共用一个控件名,具有相同的属 性,建立时系统给每个元素赋一个唯一的索引 号(Index)。 控件数组共享同样的事件过程,通过返回 的下标值区分控件数组中的各个元素。

控件数组的建立
设计时建立控件数组的方法,有以下三种: 方法1:将多个控件取相同的名字。

方法2:复制现有的控件,并将其粘贴到窗体上。 方法3:给控件设置Index属性值。 在一个控件数组中,控件的索引必须唯一。

以下是控件数组应用的例子:

数组中常见错误和注意事项
1.静态数组声明时,下标出现变量: n = InputBox("输入数组的上界") Dim a(1 To n) As Integer 2.数组下标越界:引用的下标比数组声明时的下标范 围大或小。 Dim a(1 To 30) As Long, i% a(1) = 1: a(2) = 1 For i = 2 To 30 a(i) = a(i - 2) + a(i - 1) 注意: Next i ‘a(0)并不存 在

3.数组维数错:数组声明时的维数与引用数 组元素时的维数不一致。 Dim a(3, 5) As Long a(i)=10

4.Aarry函数与Split函数使用问题: Aarry 函数与 Split 函数只能对 Variant 类 型的变量或动态数组赋值。


友情链接:省心范文网 | 省心范文网 | 省心范文网 | 省心范文网 | 省心范文网 | 省心范文网 | 学习资料共享网 | 兰溪范文 | 伤城文章网 | 酷我资料网 | 省心范文网 | 海文库 | 学习资料共享网 | 兰溪范文 | 伤城文章网 | 学习资料共享网 | 兰溪范文 | 伤城文章网 | 酷我资料网 | 省心范文网 | 海文库 | 学习资料共享网 | 兰溪范文 | 伤城文章网 | 学习资料共享网 | 兰溪范文 | 伤城文章网 | 酷我资料网 | 省心范文网 | 海文库 | 学习资料共享网 | 兰溪范文 | 伤城文章网 |
. | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:3088529994@qq.com