收藏 分享(赏)

第8章 数组.ppt

上传人:j35w19 文档编号:8833891 上传时间:2019-07-14 格式:PPT 页数:34 大小:634KB
下载 相关 举报
第8章 数组.ppt_第1页
第1页 / 共34页
第8章 数组.ppt_第2页
第2页 / 共34页
第8章 数组.ppt_第3页
第3页 / 共34页
第8章 数组.ppt_第4页
第4页 / 共34页
第8章 数组.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、Visual Basic语言程序设计,第8章 数组,2,第8章 数组,8.1 数组的概念,8.2 静态数组和动态数组,8.3 数组的基本操作,8.4 数组的初始化,8.5 控件数组,3,8.1 数组的概念,除基本数据类型外,VB还提供了数组类型。利用数组,可以方便灵活地组织和使用数据。 数组是有序的数据的集合。在VB中,一个数组中的元素可以是相同类型的数据,也可以是不同类型的数据。,8.1.1 数组的定义 8.1.2 默认数组,4,8.1 数组的概念,一个数组如果只用一个下标就能确定一个数组元素在数组中的位置,则称为一维数组。也可以说,由具有一个下标的下标变量所组成的数组称为一维数组,而由具有

2、两个或多个下标的下标变量所组成的数组称为二维数组或多维数组。,5,8.1.1 数组的定义,数组应当先定义后使用。可以使用Dim, Static, Redim, Public语句声明一个数组。 在定义数组时,Visual Basic提供了两种格式。 第一种格式 对于一维数组,格式如下: Dim数组名(下标上界) As类型名称 例如: Dim Array (5) As Integer 该数组的名字为Array,类型为整型,有6个数组元素(array(0)array(5))。,6,8.1.1 数组的定义,对于二维数组,格式如下: Dim数组名(第一维下标上界, 第二维下标上界) As类型名称 例如:

3、 DimTest(2,3) As Integer 定义了一个二维数组,名字为Test,类型为整型,该数组有3行(02)、4列(03),占据12(34)个整型变量的空间。,7,8.1 数组的概念,在VB中,把一组具有同一名字、不同下标的下标变量称为数组,其一般形式如下: S(n) S:数组名 n:下标。 一个数组可以含有若干个下标变量(或称数组元素),下标用来指出某个数组元素在数组中的位置,S(8)代表S数组中的第八个元素。在VB中,使用下标变量时,必须把下标放在一对紧跟在数组名之后的括号中,必须把下标变量写成S(8),不能写成S8或S8,也不能写成S8。,8,8.1 数组的概念,说明(1) 数

4、组必须先定义,后使用,如果不声明其数据类型,则自动定义为Variant类型。 (2) 数值数组中的全部元素都初始化为0,而把字符串数组中的全部元素都初始化为空字符串. (3) 下标的下界默认为0。可以在通用声明处使用Option Base 1语句来设置默认下标为1。,9,8.1.1 数组的定义,2.第二种格式 第一种格式定义的数组下标的下界只能是0或1,而如果使用第二种格式,可根据需要指定数组下标的下界。格式如下: Dim 数组名(下界To 上界,下界To 上界) As 类型名称 例如: Dim Arr(-2 To 3) As Integer 定义了一个一维数组Arr,其下标的下界为-2,上界

5、为3,数组元素为Arr(-2)、Arr(-1)、Arr(0)、Arr(1)、Arr(2)、Arr(3),共有6个。,10,8.1.1 数组的定义,UBound和LBound函数 返回一个数组中指定维数的上下界。 例: Dim A(1 To 100,0 To 50,-3 To 4) Print LBound(A,1), UBound(A,1) Print LBound(A,2), UBound(A,2) Print LBound(A,3), UBound(A,3) 输出结果为: 1 100 第一维的下界和上界 0 50 第二维的下界和上界 -3 4 第三维的下界和上界,11,8.1.2 默认数组

6、,在VB中,允许定义默认数组。所谓默认数组,就是数据类型为Variant的数组。在一般情况下,定义数组应指明其类型,例如: Static Elec(1 To 100) As Integer 定义了一个类型为整型的数组Elec。如果把上面的定义改为: Static Elec(1 To 100) 则定义的数组是默认数组,其类型默认为Variant ,该定义等价于: Static Elec(1 To 100) As Variant,12,8.1.2 默认数组,默认数组中可以存放各种不同的数据。因此,默认数组可以说是一种“混合数组”。例如: Sub Form_Click ()Static Defau(

7、5)Defau(1) = 100Defau(2) = 234.56Defau(3) = “Beijing “Defau(4) = “20“ & NowDefau(5) = &HAAF End Sub,该过程定义了一个默认数组,并且给数组元素赋予了不同类型的数据。在随机文件操作时经常使用。,13,8.2 静态数组和动态数组,为了使用数组,必须为数组开辟所需要的内存区。 根据内存区开辟时机的不同,可以把数组分为静态(Static)数组和动态(Dynamic)数组。 在编译时开辟内存区的数组叫做静态数组;在运行时开辟内存区的数组叫做动态数组。,8.2.1 动态数组的定义 8.2.2 数组的清除和重定

8、义,14,8.2.1 动态数组的定义,动态数组的定义过程: 首先用Dim等语句定义一个没有下标的数组,然后在过程中用ReDim语句数组分配数组元素。 例: Dim Test() As Integer Dim Size% Size=InputBox(“输入数字”) ReDim Test(Size),该程序段首先定义了一个动态数组Test,然后可以通过Inputbox函数输入数组的大小,在程序运行过程使用Redim语句动态分配数组元素的个数。,15,8.2.1 动态数组的定义,说明: Redim语句可以随时修改数组中元素的个数。 Dim this() As String Sub Command1_

9、Click ()ReDim this(4)this(2) = “Microsoft“Print this(2)ReDim Preserve this(6)this(5) = “Visual Basic“Print this(5) End Sub,注意:Redim语句不可以改变原有定义的数据类型。,注意:当redim语句中带有Preserve关键字,重新定义数组元素的时候将保留数组元素原有值。,16,8.2.2 数组的清除和重定义,数组一经定义,便在内存中分配了相应的存储空间,其大小是不能改变的。也就是说,在一个程序中,同一个数组只能定义一次。有时候,可能需要清除数组的内容或对数组重新定义。 这

10、可以用Erase语句来实现,其格式为: Erase 数组名, 数组名 注意,在Erase语句中,只给出要刷新的数组名,不带括号和下标。,17,8.2.2 数组的清除和重定义,说明: (1)Erase 用于静态数组,将把该数组所有数组元素置为初始值,但是数组还存在。 (2)Erase用于动态数组,将删除该数组,释放数组内存空间,也就是说删除动态数组后,该数组消失。,18,8.3 数组的基本操作,建立一个数组之后,可以对数组或数组元素进行操作。数组的基本操作包括输入、输出及复制,这些操作都是对数组元素进行的。此外,在Visual Basic中还提供了For EachNext语句,可用于对数组的操作

11、。,8.3.1 数组元素的输入、输出和复制 8.3.2 For EachNext语句,19,8.3.1 数组元素的输入、输出和复制,1 数组的引用Dim x%(8) x(8)=56 t%=x(9),该语句中,x(8)不是数组元素,而是数组说明,说明了该数组中可以使用的最大下标为8。,该语句中,x(8) 是数组元素,代表数组x中序号为8的元素。注意使用数组元素类型和维数和定义时保持一致。,如果引用数组元素超出定义时的范围,则运行时将出现“下标越界”错。,20,8.3.1 数组元素的输入、输出和复制,2 数组元素的输入,(1)可以用InputBox函数为数组元素依次赋值。Dim A(5) %For

12、 i = 0 To 5A(i) = InputBox(“请输入一个数“)Next i,(2) 将数组元素赋值为有规律的数列。Dim A(5)For i0 To 5A(i)iNext I,(3)将数组元素赋值为某个范围的随机数Dim A(5)For i0 To 5A(i)int(rnd()*100)Next I,21,8.3.1 数组元素的输入、输出和复制,3 数组元素的输出 通常使用For循环输出一维数组,用双重For循环输出二维数组。,例:For i=0 To 5Print A(i);Next I,例: For i = 0 To 4For j = 0 To 4Print a(i, j);”

13、”;NextPrint Next,22,8.3.1 数组元素的输入、输出和复制,4 数组元素的复制 单个数组元素可以像简单变量一样从一个数组复制到另一个数组。例如: Dim B(4,8),A(6,6)B(2,3)=A(3,2) 二维数组中的元素也可以复制给一个一维数组中的某个元素,并且反之亦然。例如: Dim A(8),B(3,2)A(3)=B(1,2) B(2,1)=A(4),23,8.3.2 For EachNext语句,For EachNext语句类似于ForNext语句,两者都用来执行指定重复次数的一组操作,但For EachNext语句专门用于数组,其一般格式为: For Each

14、成员 In 数组循环体Exit ForNext 成员,成员:变体型变量,每次循环指代数组中的一个数组元素。 数组:数组名,没有括号和上下界。,24,8.3.2 For EachNext语句,例: Dim MyArray(1 to 5) For Each x in MyArrayPrint x; Next x,因为数组MyArray有5个元素,所以循环将重复执行5次。每次输出数组中的一个元素的值。x类似于For循环中的循环控制变量,但不需要为其提供初值和终值,而是根据数组元素的个数确定执行循环体的次数。此外,第一次循环,x的值代表的是myarray(1),第二次循环,x代表myarray(2)等

15、等。,25,8.4 数组的初始化,所谓数组的初始化,就是给数组的各元素赋初值。Visual Basic提供了Array函数。利用该函数,可以使数组在程序运行之前初始化,得到初值。,26,8.4 数组的初始化,Array函数格式为: 数组变量名=Array(数组元素值) 例: Dim abc as variant abc=array(9,4,6,5,8)作用是:将array函数中的数据序列分别赋予数组abc中的各个数组元素,相当于 abc(0)=9,abc(1)=4 abc(4)=8,27,8.4 数组的初始化,说明: 1 数组的最小下标可以为0或1,要注意Option base 命令的设置。

16、2 数组变量不能是具体的数据类型,只能是变体(Variant)类型。 3 Array函数只适用于一维数组,即只能对一维数组进行初始化,不能对二维或多维数组进行初始化。,28,8.5 控件数组,在VB中,可以使用控件数组,它为处理一组功能相近的控件提供了方便的途径。,8.5.1 基本概念 8.5.2 建立控件数组,29,8.5.1 基本概念,控件数组由一组相同类型的控件组成,这些控件共用一个相同的控件名字,具有同样的属性设置。数组中的每个控件都有惟一的索引号(Index Number),即下标,其所有元素的Name属性必须相同。控件数组共享同样的事件过程。,30,8.5.1 基本概念,控件数组中

17、各控件名称一样,Index属性从0开始排列。,第二、三个按钮的名称也是command1,Index属性分别为1和2.,31,8.5.1 基本概念,控件数组的事件过程中加入了一个Index参数,用来区分发生事件的各控件数组元素,单击第一个按钮时,index参数为0,依次类推。通常使用情况语句对index参数加以判断,执行不同的语句段。,32,8.5.2 建立控件数组,控件数组是针对控件建立的,因此与普通数组的定义不一样。可以通过以下两种方法来建立控件数组: 第一种方法: (1) 在窗体上画出作为数组元素的各个控件(相同类型)。 (2) 将它们的名称属性改成相同名称。 当对第二个控件键入与第一个控件相同的名称后,VB将显示一个对话框,询问是否确实要建立控件数组。单击“是”将建立控件数组,单击“否” 放弃建立操作。,33,8.5.2 建立控件数组,第二种方法: (1) 在窗体上画出一个控件,单击将其选中。 (2) 进行复制粘贴操作,系统将询问是否创建控件数组,单击“是”即可创建控件数组。 (3)再次复制粘贴,将不会再次询问,直接创建控件数组的下一个数组元素。,Thank You,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报