两态(静、动)数组在Visual Basic中的应用

2012-12-31 00:00:00李龙
科技资讯 2012年31期

摘 要:作为迄今为止Windows应用程序很受青睐的开发环境之一的Visual Basic,主要特点就是可视化编程。本文主要对静、动数组进行概念介绍和VB程序中的功能使用,也向使用人群介绍了一些使用方法。

关键词:数组 静态数组 动态数组

中图分类号:TP311.5 文献标识码:A 文章编号:1672-3791(2012)11(a)-0028-01

为了方便解决大批量的数据处理问题,Visual Basic中提供了数组(Array)变量。数组是一种重要的数据结构,结构相对简单,灵活,使用方法容易掌握,不但在Visual Basic中,在其他的许多程序设计语言中,都要直接或间接地用到数组这种数据结构。

1 数组的概念

事实上几乎所有的应用程序开发语言都引入了数组概念,VB(Visual Basic的简称)同样也不例外,数组允许通过同一变量名和不同的下标访问一系列变量。

在VB中,如果把一组有序的数或变量作为一个整体来处理,这样的一组数或变量就是数组,而数组的每一个数或变量称为数组元素,每一个数组给定一个名称,叫做数组名,一个数组中各个元素之间的区别用数组名的下标来表示,放在数组名后的圆括号内。数组中的任意一个数组元素都可以存放一个数据,和使用简单变量一样参加各种运算。数组是用于存放一批性质相同的数据集合,其主要特点如下。

由若干个数组元素组成,数组元素的数据类型一致;各数组元素是有序存放的,下标代表它在数组中的位置;数组中各元素之间有内在联系,在内存中占连续的一段存储单元。

现在我们来举个例子,可以用M来表示一个班30个同学的计算机成绩,用M(1)表示1号同学的成绩;M(2)表示2号同学的成绩;M(3)表示3号同学的成绩;……;M(30)表示第30号同学的成绩。则M为数组名,M(1),M(2),M(3)等都称为M数组的元素。

可以用N数组来表示某班全班同学语文、数学和英语三门课程的成绩,则可以用N(1,1)表示1号同学的语文成绩;N(1,2)表示1号同学的数学成绩;N(1,3)表示1号同学的英语成绩;N(2,1)表示2号同学的语文成绩;N(2,2)表示2号同学的数学成绩;N(2,3)表示2号同学的英语成绩;……;N(30,3)表示第30号同学的英语成绩。

根据数组的形态不同可分为静态数组、动态数组、控件数组和自定义类型数组。本文重点来探讨一下静态数组和动态数组。

2 静态数组

静态数组又可分为全局数组、模块数组、局部数组。

我们首先来介绍一下全局数组,程序中的任何模块个矿体都可以对其进行访问。全局数组不能在窗体中被定义,全局数组要用Global或Public模块文件(﹒bas)中的声明部分声明。关键字在在代码模块中声明部分用Global或Public语句定义,格式如下:Global 数组名([下界To]上界[,[下界To] 上界]…)As类型,……Public数组名([下界To]上界[,[下界To]上界]…)As类型,……所有的模块和过程都可访问用Global或Public定义的全局数组。注意:语句只能用在全局模块中。例如:Global Arr 1(6,3) As Double。或Public Brr (10) As Double。

其次是模块数组。在代码模块或窗体模块的声明部分用Dim或Private语句定义。格式同Global语言,只是将Global换为Dim或Private。这样数组的作用范围只在当前模块中有效。例如:Dim Arr(8,3) As Integer。

最后是局部数组。在此过程内用Static 声明局部数组,其使用范围只限制在该过程内。如果该过程已被Static声明为静态过程,那么也可用Static或Dim来定义数组。格式与上述两种一致。例如:Static Arr(20)As Double。VB默认数组的下标从0开始,若想改变数组的缺省下界,可在声明部分之前增加一条Option语句。

对于静态数组有以下几方面。

(1)数组名的命名规则和变量命名规则相同,但是不能与一般变量同名。(2)凡是VB的数据类型,数组中均可说明和使用,当“As类型”省略时,为不定型。(3)VB中也可定义多维数组,数组的最大维数是60。(4)定义数组时的上下限可以是常量或已经赋给值的变量。

3 动态数组

下面我们来谈一下建立动态数组的常用方式:在用 Global、Public、Dim、Private 或Static声明数组,在定义数组时不要给出具体的维数,这样声明的数组就是动态数组。例如:Dim Arr()As Integer。需要确定该数组的实际大小时,在过程中用ReDim进行定义。与Dim语句、Static语句不同,ReDim 语句是一个执行语句,只能出现在过程中。

在过程中创建动态数组时,可以用 Static或Dim语句进行首次声明,但这样建立的数组的最大维数为8。如果需要更多的维数,则不用Dim进行首次声明,而直接用 ReDim声明即可。每次执行 ReDim 语句重新定义数组时,以前存在动态数组中的数据会全部丢失,相当于对其又进行了一次初始化。如果希望只改变数组的大小而不丢失原有的数据,可在ReDim语句中使用Preserve关键字,例如:ReDim Arr1(3,4)As Integer如将数组增加4个元素,又要保留原来内容,可用语句:ReDim Preserve Arr1(3,4+1)As Integer。使用 Preserve时,只有数组的最后一维的上界可以改变,也就是说,使用Preserve只能改变最后一维的大小,前面的几维的大小不能改变。

对于动态数组的一般特性有以下几点。

(1)数组名的命名规则和变量命名规则相同。

(2)Preserve的作用是保留原来数组内容。若其省略,则每次程序执行ReDim都会清除原来数组内容。

(3)数组数据的类型一经确定就不能再次改变,只能沿袭首次所指定的类型。

4 结语

使用计算机的人群,要对数组的概念进行深入理解,静、动两态数组要熟练使用方法,对一些技巧要能够灵活运用,这样可以在解决实际问题时提供很大方便,同时也会给你的程序锦上添花。本文介绍了很多数组的概念,不同的数组有不同的区别和特点,如果读者进行仔细推敲,然后是这更多的去使用它,一定会轻松自如、游刃有余的运用。

参考文献

[1]希望图书创作室.Visual Basic 6.0教程[M].北京:北京希望电子出版社,2000.

[2]谭浩强.Visual Basic程序设计[M].北京:清华大学出版社,2002.

[3]王克己.Visual Basic程序设计[M].北京:人民邮电出版社,2005.