
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
第五章 数 组
5.1 知识要点
1.数组的概念
数组:存放具有相同性质的一组数据,也就是数组中的数据必须是同一个类型和性质。
数组元素:数组中的某一个数据项。数组元素的使用同简单变量的使用。
2.静态数组的声明
静态数组:在声明时已确定了数组元素个数。
声明形式:Dim数组名([下界To]上界[,[下界To]上界[,…]])As 类型
此语句声明了数组名、数组维数、数组大小、数组类型。
[注意] 下界、上界必须为常数,不能为表达式或变量:省略下界,默认为0,也可用Option Base语句重新设置下界的值。
3.动态数组的声明
声明形式: Dim数组名 ()
ReDim [Preserve]数组名([下界To]上界[,[下界To]上界[,…]])
[注意]
此时的上界、下界可以是赋了值的变量或表达式。若有Preserve关键字,表示当改变原有数组最末尾的大小时,使用此关键字可以保持数组中原来的数据。
4.控件数组
即相同类型的控件组成的数组。
控件数组的建立:在设计时的窗体上,通过对某控件的复制和粘贴操作:在程序运行时通过Load方法实现。
控件数组元素:由控件的Index属性值表示数组的F标。
5.数组的操作
应掌握的基本操作有:数组初始化、数组输入、数组输出、求数组中的最大(最小)元素及下标、求和、平均值、排序和查找等。
5.2 常见错误和难点分析
1.Dim数组声明
有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:
n=InputBox("输入数组的上界")
Dim a(1 To n) As Integer
程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:
Dim a() As Integer
n=InputBox ("输入数组的上界")
ReDim a(1 To n)As Integer
2.数组下标越界
引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。例如,要形成有如下30项的斐波那契数列:
1,1,2,3,5,8,13,21,34,…,317811,514229,832040
正确的程序段如下:
Dim a(1 To 30) As Long, i%
若将For i=3 To 30改为For i=1 To 30,程序运行时会显示"下标越界"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下界1。
同样若将上例:a(i)+a(i-2)+a(i-1) 语句改为:a(i+2)=a(i)+a(i+1)
程序运行时也会显示"下标越界"的出错信息,这时是数组下标大于上界30。
3.数组维数错
数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3×5的矩阵:
Dim a(3,5) As Long
For i=1 To 3
For j=1 To 5
a(i)=i*j
Print a(i);"";
Next j
Next i
程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。
4.Aarry函数使用问题
Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。
例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。
Aarry函数表示方法
|
错误的Aarry函数赋值, |
改正的Aarry函数赋值 |
|
Dim a(1 To 8) a=Array(1,2,3,4,5,6,7,8) |
Dim a( ) a=Array(1,2,3,4,5,6,7) |
|
Dim a As Integer a=Array(1,2,3,4,5,6,7) |
Dim aa=Array(1,2,3,4,5,6,7) |
|
Dim aa()=Array(1,2,3,4,5,6,7) |
Dim aa=Array(1,2,3,4,5,6,7) |
5.如何获得数组的上界、下界
Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问。
在上例中,若要打印a数组的各个值,可通过下面程序段实现:
For i=Lbound(A) To Ubound(A)
Print a(i)
Next l
6.给数组赋值
VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1
这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:
Dim数组名2() 或Dim数组名2 (下标)
程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。