第8章 数组

上传人:一*** 文档编号:242871121 上传时间:2024-09-10 格式:PPT 页数:34 大小:634.50KB
返回 下载 相关 举报
第8章 数组_第1页
第1页 / 共34页
第8章 数组_第2页
第2页 / 共34页
第8章 数组_第3页
第3页 / 共34页
点击查看更多>>
资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 办公信息处理,V,isual Basic,语言程序设计,第,8,章 数组,第,8,章 数组,8.1,数组的概念,8.2,静态数组和动态数组,8.3,数组的基本操作,8.4,数组的初始化,8.5,控件数组,2,8.1,数组的概念,除基本数据类型外,,VB,还提供了数组类型。利用数组,可以方便灵活地组织和使用数据。,数组是有序的数据的集合。在,VB,中,一个数组中的元素可以是相同类型的数据,也可以是不同类型的数据。,8,.1.1,数组的定义,8.1.2,默认数组,3,8.1,数组的概念,一个数组如果只用一个下标就能确定一个数组元素在数组中的位置,则称为一维数组。也可以说,由具有一个下标的下标变量所组成的数组称为一维数组,而由具有两个或多个下标的下标变量所组成的数组称为二维数组或多维数组。,4,8.1.1,数组的定义,数组应当先定义后使用。可以使用,Dim, Static,Redim, Public,语句声明一个数组。,在定义数组时,,Visual Basic,提供了两种格式。,第一种格式,对于一维数组,格式如下:,Dim,数组名,(,下标上界,),As,类型名称,例如,:,Dim Array (5) As Integer,该数组的名字为,Array,,类型为整型,有,6,个数组元素(,array(0)array(5),)。,5,8.1.1,数组的定义,对于二维数组,格式如下:,Dim,数组名,(,第一维下标上界,第二维下标上界,) As,类型名称,例如:,DimTest(2,3) As Integer,定义了一个二维数组,名字为,Test,,类型为整型,该数组有,3,行,(0,2),、,4,列,(0,3),,占据,12(34),个整型变量的空间。,6,8.1,数组的概念,在,VB,中,把一组具有同一名字、不同下标的下标变量称为数组,其一般形式如下:,S(n,),S,:数组名,n,:下标。,一个数组可以含有若干个下标变量(或称数组元素),下标用来指出某个数组元素在数组中的位置,,S(8),代表,S,数组中的第八个元素。在,VB,中,使用下标变量时,必须把下标放在一对紧跟在数组名之后的括号中,必须把下标变量写成,S(8),,不能写成,S8,或,S,8,,也不能写成,S,8,。,7,8.1,数组的概念,说明,(1),数组必须先定义,后使用,如果不声明其数据类型,则自动定义为,Variant,类型。,(2),数值数组中的全部元素都初始化为,0,,而把字符串数组中的全部元素都初始化为空字符串,.,(3),下标的下界默认为,0,。可以在通用声明处使用,Option Base 1,语句来设置默认下标为,1,。,8,8.1.1,数组的定义,2.,第二种格式,第一种格式定义的数组下标的下界只能是,0,或,1,,而如果使用第二种格式,可根据需要指定数组下标的下界。格式如下:,Dim,数组名,(,下界,To,上界,下界,To,上界,) As,类型名称,例如:,Dim Arr(-2 To 3) As Integer,定义了一个一维数组,Arr,,其下标的下界为,-2,,上界为,3,,数组元素为,Arr(-2),、,Arr(-1),、,Arr(0),、,Arr(1),、,Arr(2),、,Arr(3),,共有,6,个。,9,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),输出结果为:,1100,第一维的下界和上界,050,第二维的下界和上界,-34,第三维的下界和上界,10,8.1.2,默认数组,在,VB,中,允许定义默认数组。所谓默认数组,就是数据类型为,Variant,的数组。在一般情况下,定义数组应指明其类型,例如:,Static Elec(1 To 100) As Integer,定义了一个类型为整型的数组,Elec,。如果把上面的定义改为:,Static Elec(1 To 100),则定义的数组是默认数组,其类型默认为,Variant,,该定义等价于:,Static Elec(1 To 100) As Variant,11,8.1.2,默认数组,默认数组中可以存放各种不同的数据。因此,默认数组可以说是一种“混合数组”。例如:,Sub,Form_Click,(),Static Defau(5),Defau(1) = 100,Defau(2) = 234.56,Defau(3) = Beijing ,Defau(4) = 20 & Now,Defau(5) = &HAAF,End Sub,该过程定义了一个默认数组,并且给数组元素赋予了不同类型的数据。在随机文件操作时经常使用。,12,8.2,静态数组和动态数组,为了使用数组,必须为数组开辟所需要的内存区。,根据内存区开辟时机的不同,可以把数组分为静态,(Static),数组和动态,(Dynamic),数组。,在编译时开辟内存区的数组叫做静态数组;在运行时开辟内存区的数组叫做动态数组。,8.2.1,动态数组的定义,8.2.2,数组的清除和重定义,13,8.2.1,动态数组的定义,动态数组的定义过程:,首先用,Dim,等语句定义一个没有下标的数组,然后在过程中用,ReDim,语句数组分配数组元素。,例:,Dim Test() As Integer,Dim Size%,Size=,InputBox,(“,输入数字”,),ReDim,Test(Size,),该程序段首先定义了一个动态数组,Test,然后可以通过,Inputbox,函数输入数组的大小,在程序运行过程使用,Redim,语句动态分配数组元素的个数。,14,8.2.1,动态数组的定义,说明:,Redim,语句可以随时修改数组中元素的个数。,Dim this() As String,Sub Command1_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,关键字,重新定义数组元素的时候将保留数组元素原有值。,15,8.2.2,数组的清除和重定义,数组一经定义,便在内存中分配了相应的存储空间,其大小是不能改变的。也就是说,在一个程序中,同一个数组只能定义一次。有时候,可能需要清除数组的内容或对数组重新定义。,这可以用,Erase,语句来实现,其格式为:,Erase,数组名,数组名,注意,在,Erase,语句中,只给出要刷新的数组名,不带括号和下标。,16,8.2.2,数组的清除和重定义,说明:,(1)Erase,用于静态数组,将把该数组所有数组元素置为初始值,但是数组还存在。,(2)Erase,用于动态数组,将删除该数组,释放数组内存空间,也就是说删除动态数组后,该数组消失。,17,8.3,数组的基本操作,建立一个数组之后,可以对数组或数组元素进行操作。数组的基本操作包括输入、输出及复制,这些操作都是对数组元素进行的。此外,在,Visual Basic,中还提供了,For EachNext,语句,可用于对数组的操作。,8.3.1,数组元素的输入、输出和复制,8.3.2,For EachNext,语句,18,8.3.1,数组元素的输入、输出和复制,1,数组的引用,Dim x%(8),x(8)=56,t%=x(9),该语句中,x(8),不是数组元素,而是数组说明,说明了该数组中可以使用的最大下标为,8,。,该语句中,x(8),是数组元素,代表数组,x,中序号为,8,的元素。注意使用数组元素类型和维数和定义时保持一致。,如果引用数组元素超出定义时的范围,则运行时将出现“下标越界”错。,19,8.3.1,数组元素的输入、输出和复制,2,数组元素的输入,(1),可以用,InputBox,函数为数组元素依次赋值。,Dim A(5) %,For i = 0 To 5,A(i) =,InputBox,(,请输入一个数,),Next i,(2),将数组元素赋值为有规律的数列。,Dim A(5),For i,0 To 5,A(i,),i,Next I,(3),将,数组元素赋值为某个范围的随机数,Dim A(5),For i,0 To 5,A(i,),int(rnd,()*100),Next I,20,8.3.1,数组元素的输入、输出和复制,3,数组元素的输出,通常使用,For,循环输出一维数组,用双重,For,循环输出二维数组。,例:,For i=0 To 5,Print,A(i,);,Next I,在一行输出数组,a,中的,6,个元素。,例:,For i = 0 To 4,For j = 0 To 4,Print,a(i, j);,” ”;,Next,Print,Next,按行列输出二维数组,即数字矩阵。,21,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),22,8.3.2 For EachNext,语句,For EachNext,语句类似于,ForNext,语句,两者都用来执行指定重复次数的一组操作,但,For EachNext,语句专门用于数组,其一般格式为:,For Each,成员,In,数组,循环体,Exit For,.,Next,成员,成员:变体型变量,每次循环指代数组中的一个数组元素。,数组:数组名,没有括号和上下界。,23,8.3.2 For EachNext,语句,例:,Dim MyArray(1 to 5),For Each x in,MyArray,Print x;,Next x,因为数组,MyArray,有,5,个元素,所以循环将重复执行,5,次。每次输出数组中的一个元素的值。,x,类似于,For,循环中的循环控制变量,但不需要为其提供初值和终值,而是根据数组元素的个数确定执行循环体的次数。此外,第一次循环,,x,的值代表的是,myarray(1),,第二次循环,,x,代表,myarray(2),等等。,24,8.4,数组的初始化,所谓数组的初始化,就是给数组的各元素赋初值。,Visual Basic,提供了,Array,函数。利用该函数,可以使数组在程序运行之前初始化,得到初值。,25,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,26,8.4,数组的初始化,说明:,1,数组的最小下标可以为,0,或,1,,要注意,Option base,命令的设置。,2,数组变量不能是具体的数据类型,只能是变体(,Variant,)类型。,3 Array,函数只适用于一维数组,即只能对一维数组进行初始化,不能对二维或多维数组进行初始化。,27,8.5,控件数组,在,VB,中,可以使用控件数组,它为处理一组功能相近的控件提供了方便的途径。,8.5.1,基本概念,8.5.2,建立控件数组,28,8.5.1,基本概念,控件数组由一组相同类型的控件组成,这些控件共用一个相同的控件名字,具有同样的属性设置。数组中的每个控件都有惟一的索引号(,Index Number,),即下标,其所有元素的,Name,属性必须相同。控件数组共享同样的事件过程。,29,8.5.1,基本概念,控件数组中各控件名称一样,,Index,属性从,0,开始排列。,第二、三个按钮的名称也是,command1,,,Index,属性分别为,1,和,2.,30,8.5.1,基本概念,控件数组的事件过程中加入了一个,Index,参数,用来区分发生事件的各控件数组元素,单击第一个按钮时,,index,参数为,0,,依次类推。通常使用情况语句对,index,参数加以判断,执行不同的语句段。,31,8.5.2,建立控件数组,控件数组是针对控件建立的,因此与普通数组的定义不一样。可以通过以下两种方法来建立控件数组:,第一种方法:,(1),在窗体上画出作为数组元素的各个控件,(,相同类型,),。,(2),将它们的名称属性改成相同名称。,当对第二个控件键入与第一个控件相同的名称后,,VB,将显示一个对话框,询问是否确实要建立控件数组。单击“是”将建立控件数组,单击“否” 放弃建立操作。,32,8.5.2,建立控件数组,第二种方法:,(1),在窗体上画出一个控件,单击将其选中。,(2),进行复制粘贴操作,系统将询问是否创建控件数组,单击“是”即可创建控件数组。,(3),再次复制粘贴,将不会再次询问,直接创建控件数组的下一个数组元素。,33,Thank You,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!