Visual-Basic程序设计-数组课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Visual-Basic程序设计-数组课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual Basic 程序设计 数组 课件
- 资源描述:
-
1、 数组的概念及定义数组的概念及定义8.1静态数组与动态数组静态数组与动态数组 8.2数组的几本操作数组的几本操作 8.3 数组的应用举例数组的应用举例8.4 控件数组控件数组8.5 8.1.1 8.1.1 引例引例例例8-1(参看教材(参看教材P127)8.1.2 8.1.2 数组的定义数组的定义 定义:定义:在中,把一组具有相同名字、不同下标在中,把一组具有相同名字、不同下标的下标变量称为数组。的下标变量称为数组。数组应当先定义后使用。定义中要声明数组名、类数组应当先定义后使用。定义中要声明数组名、类型、维数及数组的大小。数组在计算机内存中占据一型、维数及数组的大小。数组在计算机内存中占据一
2、块区域,数组名是这个区域的名称,区域的每个单元块区域,数组名是这个区域的名称,区域的每个单元都有自己的地址,该地址用下标表示。定义数组的目都有自己的地址,该地址用下标表示。定义数组的目的就是通知计算机为其留出所需的内存空间。的就是通知计算机为其留出所需的内存空间。数组的维数也就是定义时下标的个数。一个数组数组的维数也就是定义时下标的个数。一个数组如果只用一个下标就能确定一个数组元素在数组中的如果只用一个下标就能确定一个数组元素在数组中的位置,就称为一维数组。如果要用两个或多个下标才位置,就称为一维数组。如果要用两个或多个下标才能确定一个数组元素在数组中的位置,则称为二维数能确定一个数组元素在数
3、组中的位置,则称为二维数组或多维数组。组或多维数组。VB中的数组最多可以有中的数组最多可以有60维。维。在在VB中,可以用中,可以用4个语句来定义数组,它个语句来定义数组,它们的格式相同,但适用范围不同。这们的格式相同,但适用范围不同。这4个语句个语句为:为:Dim 用在窗体模块或标准模块中,也可以用于过程中用在窗体模块或标准模块中,也可以用于过程中 ReDim 用在过程中用在过程中 Static 用在过程中用在过程中 Public 用在标准模块中,定义全局数组用在标准模块中,定义全局数组 下面我们以下面我们以Dim语句为例介绍数组定义的语句为例介绍数组定义的格式,其它语句定义数组的格式与格式
4、,其它语句定义数组的格式与Dim相同。相同。在在VBVB中可以用两种格式定义数组:中可以用两种格式定义数组:1只给出每一维下标的上界,即可以使用的下标的最大值。格式如只给出每一维下标的上界,即可以使用的下标的最大值。格式如下:下:Dim 数组名(第一维下标上界,第二维下标上界,数组名(第一维下标上界,第二维下标上界,)As 类型名称类型名称 如:如:Dim Array(5)As Integer 定义了一个一维数组,该数组的名字为定义了一个一维数组,该数组的名字为Array,类型为,类型为Integer,数组,数组中共有中共有6个元素:个元素:Array(0),Array(1),Array(2)
5、,Array(3),Array(4),Array(5)。再如:再如:Dim Test(2,3)As Integer 上面定义了一个二维数组上面定义了一个二维数组Test,该数组有,该数组有3行行4列共列共12个元素,即:个元素,即:Test(0,0),Test(0,1),Test(0,2),Test(0,3),Test(1,0),Test(1,1),Test(1,2),Test(1,3),Test(2,0),Test(2,1),Test(2,2),Test(2,3),其形式,其形式如图如图8-1所示。所示。图8-1 二维数组 在一般情况下,数组下标的下界默认在一般情况下,数组下标的下界默认为为
6、0。如果希望下标从。如果希望下标从1开始,也可以通过开始,也可以通过Option Base语句来设置,其格式为:语句来设置,其格式为:Option Base n 其中其中n的值只能是的值只能是0或或1。Option Base语语句只能出现在窗体层或模块层,不能出现句只能出现在窗体层或模块层,不能出现在过程中,并且必须出现在数组定义之前在过程中,并且必须出现在数组定义之前。如果定义的是多维数组,则下标的默认。如果定义的是多维数组,则下标的默认下界对每一维都有效。下界对每一维都有效。2根据需要指定数组下标的下界。格式如下:根据需要指定数组下标的下界。格式如下:Dim 数组名(数组名(下界下界 To
7、 上界,上界,下界下界 To 上界,上界,)As 类型名称类型名称 如:如:Dim Arr(-2 To 3)As Integer 定义了一个一维数组定义了一个一维数组Arr,其下标的下界,其下标的下界为为-2,上界为,上界为3,因此该数组共有:,因此该数组共有:Arr(-2),Arr(-1),Arr(0),Arr(1),Arr(2),Arr(3)六个六个数组元素。数组元素。说明:说明:数组名的命名规则与变量名相同。但在同一个过程数组名的命名规则与变量名相同。但在同一个过程中,数组名不能与变量名同名。中,数组名不能与变量名同名。数组必须先定义,后使用。数组必须先定义,后使用。BASIC的早期版本
8、支持的早期版本支持数组的隐式定义,即如果一个数组未经定义而直接数组的隐式定义,即如果一个数组未经定义而直接使用,则该数组的各维的默认上界为使用,则该数组的各维的默认上界为10,下界为,下界为0或或1。但在。但在VB中,不允许使用隐式定义。中,不允许使用隐式定义。当用当用Dim语句定义数组时,数组中的全部元素都被语句定义数组时,数组中的全部元素都被初始化为初始化为0(数值型数组)或空字符串(字符型数组(数值型数组)或空字符串(字符型数组)。)。在第一种格式中,下标的下界只能是在第一种格式中,下标的下界只能是0或或1,而在第,而在第二种格式中,下标的范围可以是二种格式中,下标的范围可以是-3276
9、832767。注意区分注意区分“可以使用的最大下标值可以使用的最大下标值”和和“元素个数元素个数”:前者指的:前者指的是下标值的上界,后者指数组中元素个数。如:是下标值的上界,后者指数组中元素个数。如:Dim Arr(3 To 5)As Integer 在数组在数组Arr中,元素个数为中,元素个数为3,而可以使用的最大下标值为,而可以使用的最大下标值为5。在定义数组时,每一维的元素个数必须是常数,不能是变量或表在定义数组时,每一维的元素个数必须是常数,不能是变量或表达式。如:达式。如:Dim A(n)As Integer 是不合法的。是不合法的。如果需要在运行时定义数组的大小,可以用动态数组的
10、方法如果需要在运行时定义数组的大小,可以用动态数组的方法来解决这将在来解决这将在8.2节中详细讲解。节中详细讲解。数组的类型通常用数组的类型通常用As给出,如果省略给出,如果省略As,则定义的是默认数组。,则定义的是默认数组。数组的下界都必须小于上界。数组的下界都必须小于上界。VB中提供了两个函数中提供了两个函数LBound和和UBound来来测试一个数组中指定维的下界值和上界值,这两个函数的格式为:测试一个数组中指定维的下界值和上界值,这两个函数的格式为:LBound(数组名数组名,维维)UBound(数组名数组名,维维)如果测试的是一维数组,则参数如果测试的是一维数组,则参数“维维”可以省
11、略,如果测试的是多可以省略,如果测试的是多维数组,则参数维数组,则参数“维维”不能省略。如有下面的定义:不能省略。如有下面的定义:Dim A(1 to 30,0 to 50,-2 to 20)则用下面的语句可以得到该数组各维的上下界:则用下面的语句可以得到该数组各维的上下界:Print LBound(A,1),UBound(A,1)Print LBound(A,2),UBound(A,2)Print LBound(A,3),UBound(A,3)输出结果为:输出结果为:130 050 -2208.1.3 8.1.3 默认数组默认数组 所谓默认数组,就是数组类型为所谓默认数组,就是数组类型为Va
12、riant(默认)(默认)的数组。的数组。VB中允许定义默认数组。一般情况下,定义中允许定义默认数组。一般情况下,定义数组时应指明其类型。如:数组时应指明其类型。如:Static Arr(3 to 5)As Integer 定义了一个数组定义了一个数组Arr,该数组有,该数组有3个元素,每个元个元素,每个元素都是一个整型数据。素都是一个整型数据。如果把上述定义改为:如果把上述定义改为:Static Arr(3 to 5)则数组则数组Arr是一个默认数组,其类型为是一个默认数组,其类型为Variant。即等价于如下定义:即等价于如下定义:Static Arr(3 to 5)AsVariant 那
13、么,默认数组有什么作用呢?前面那么,默认数组有什么作用呢?前面我们已经知道:几乎在所有的程序设计语我们已经知道:几乎在所有的程序设计语言中,一个数组中的所有元素必须属于同言中,一个数组中的所有元素必须属于同一种数据类型,而在一种数据类型,而在VB中,一个数组中中,一个数组中的元素可以是相同类型的数据,也可以是的元素可以是相同类型的数据,也可以是不同数据类型的数据。而默认数组就是可不同数据类型的数据。而默认数组就是可以存放不同类型数据的数组。因此,默认以存放不同类型数据的数组。因此,默认数组也可以说是一种数组也可以说是一种“混合数组混合数组”。如:如:Static Arr(1 to 5)Arr(
14、1)=10 Arr(2)=3.9 Arr(3)=”Visual Basic”Arr(4)=”20”&Now Arr(5)=&HAAF 定义了一个静态默认数组定义了一个静态默认数组Arr(默认数组一般定(默认数组一般定义为静态的),共有义为静态的),共有5个元素,在接下来的赋值中我个元素,在接下来的赋值中我们看到,对这们看到,对这5个元素分别赋予了整型、实型、字符个元素分别赋予了整型、实型、字符串型、日期和时间型及十六进制整型。串型、日期和时间型及十六进制整型。8.2 8.2 静态数组与动态数组静态数组与动态数组 在定义时已确定了数组占用内存空间大小的数组称在定义时已确定了数组占用内存空间大小的
15、数组称为静态数组,前面我们所使用的数组都是静态数组。动为静态数组,前面我们所使用的数组都是静态数组。动态数组是指在声明数组时未给出数组占用内存的大小(态数组是指在声明数组时未给出数组占用内存的大小(省略括号中的下标),当要使用它时,随时用省略括号中的下标),当要使用它时,随时用ReDim语语句重新指出数组数组的下标,从新为其开辟内存区的数句重新指出数组数组的下标,从新为其开辟内存区的数组。组。因此静态数组是在程序编译时就为数组分配好了内因此静态数组是在程序编译时就为数组分配好了内存空间的,而动态数组是在程序执行时执行到存空间的,而动态数组是在程序执行时执行到ReDim语语句时为数组分配内存空间
16、的。动态数组的优点是根据用句时为数组分配内存空间的。动态数组的优点是根据用户需要,有效地利用内存空间,因为执行户需要,有效地利用内存空间,因为执行ReDim之前,之前,动态数组是不占内存空间的。动态数组是不占内存空间的。下面主要介绍动态数组的定义。下面主要介绍动态数组的定义。定义动态数组的方法是:在窗体层、标准定义动态数组的方法是:在窗体层、标准模块或过程中使用模块或过程中使用Dim或或Public语句声明一个语句声明一个没有下标(即括号内为空,但括号不能省)的没有下标(即括号内为空,但括号不能省)的数组,然后在过程中用数组,然后在过程中用ReDim语句指明该数组语句指明该数组的大小。的大小。
17、ReDim语句格式如下:语句格式如下:ReDim数组名(下标,下标数组名(下标,下标)As类型类型 其中:下标可以是常量,也可以是有了确其中:下标可以是常量,也可以是有了确定值的变量。类型可以省略,若不省略,必须定值的变量。类型可以省略,若不省略,必须与前面声明语句中的类型保持一致。与前面声明语句中的类型保持一致。如:如:Dim Test()As Single Sub Form_Load()ReDim Test(4,8)End Sub 在窗体层声明了数组在窗体层声明了数组Test为可变长数组,为可变长数组,在在Form_Load()事件过程中指明该二维数组的事件过程中指明该二维数组的大小为大小
18、为5行行9列。列。再如:再如:Public TestArr()As Integer Dim size As Integer Sub Form_Click()size=InputBox(Enter a integer value:,Data,12)ReDim TestArr(size)End Sub 首先声明了一个空数组首先声明了一个空数组TestArr和一个变量和一个变量size,然后在,然后在Form_Click()事件过程中输入一个值给事件过程中输入一个值给size,用,用ReDim语句定义语句定义数组数组TestArr的大小为的大小为size。例例8-2(参看教材(参看教材P132-13
19、3)8.3 8.3 数组的基本操作数组的基本操作8.3.1 对数组元素进行初始化对数组元素进行初始化8.3.2 数组元素的输入数组元素的输入8.3.3 数组元素的输出数组元素的输出8.3.4 数组的赋值数组的赋值8.3.5 For EachNext语句语句 定义一个数组后,可以对数组中的定义一个数组后,可以对数组中的元素进行初始化、输入、输出等操作。元素进行初始化、输入、输出等操作。在在VB中,还提供了中,还提供了For EachNext语句语句用于对数组的操作。用于对数组的操作。8.3.1 8.3.1 对数组元素进行初始化对数组元素进行初始化 早期的早期的BASIC版本中提供了版本中提供了R
20、EAD_DATA语句,它为多个变量特别是数组元素的赋值提语句,它为多个变量特别是数组元素的赋值提供了方便。但在供了方便。但在Microsoft公司公司1991年推出年推出VB1.0版时,去掉了版时,去掉了READ_DATA语句。这样就只能语句。这样就只能通过赋值语句或通过赋值语句或InputBox函数为多个变量或数函数为多个变量或数组元素赋值。但当需要赋值的变量或数组元素组元素赋值。但当需要赋值的变量或数组元素较多时,将大大增加程序代码的数量。在较多时,将大大增加程序代码的数量。在Microsoft公司随后推出的公司随后推出的VB2.0和和3.0版本中,版本中,这个问题也未能解决。直到这个问题
21、也未能解决。直到VB4.0版推出后,一版推出后,一个新的个新的Array函数取代函数取代READ_DATA语句重新出语句重新出现。现。Array函数用来为数组元素赋值,即把一个数据集读入某个数组。函数用来为数组元素赋值,即把一个数据集读入某个数组。其格式为:其格式为:数组变量名Array(数组元素值)其中:数组变量名是预先定义的数组名,它后面没有括号,之所其中:数组变量名是预先定义的数组名,它后面没有括号,之所以称为以称为“数组变量数组变量”,是因为它作为数组使用,但作为变量定义,既,是因为它作为数组使用,但作为变量定义,既没有维数,也没有上下界,并且数组变量不能是具体的数据类型,只没有维数,
展开阅读全文