您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > VB程序设计 第七章 数组
VisualBasic程序设计教程ptc.imust.cn内蒙古科技大学实践训练中心第七章数组7.1数组的基本概念7.1.1数组的基本概念数组:由一定数目的同类元素按一定顺序排列而成的结构类型数据,是一组具有同一名字、不同下标的下标变量。一般格式:s(n)其中:s称为数组名,n是下标一个数组可以含有若干个下标变量(或称数组元素),下标用来指出某个数组元素在数组中的位置。如s(3)代表s数组中的下标为3的元素。数组应先定义(声明)后使用,数组的声明包括明确数组名、类型、维数和数组的大小。静态(定长)数组:声明数组时确定大小;动态(可变长)数组:声明数组时不确定大小;7.1数组的基本概念7.1.1数组的基本概念例:dimmark(1to100)asinteger声明了一个一维定长数组,数组的名字为mark,类型为整型;共有100个元素,下标的取值范围:1~100。mark的数组元素依次为mark(1)、mark(2)、…mark(100);mark数组内存分配示意图:mark(1)mark(2)mark(i)…mark(99)mark(100)每组数组元素有一个唯一的顺序号,下标不能超出数组声明时的上、下界范围。一个下标表示一维数组;多个下标,表示多维数组。下标可以是整型的常数、变量、表达式;一般情况下,数组中的各元素类型必须相同;但若数组类型为Variant时,可包含不同类型的数据。…7.1数组的基本概念7.1.2数组的定义数组的定义方式;◆Dim:用在窗体模块或标准模块及过程中,定义窗体或标准模块级数组;◆ReDim:用来重新定义动态数组;◆Static:用来说明该数组为静态数组;◆Global(Public):用在全局模块中(标准模块)中,说明数组为全局的;1、一维数组一个数组若只有一个下标就能确定一个数组元素的数组中的位置,则称为一维数组;定义形式:Dim数组名([下标下界To]下标上界)As类型名称如:Dima(1to10)asintegerDimb(10)asinteger7.1数组的基本概念7.1.2数组的定义2、二维数组由具有两个或多个下标变量所组成的数组称为二维或多维数组。定义形式:Dim数组名([第一维下标下界To]第一维下标上界,[第二维下标下界To]第二维下标界)As类型名称如:Dima(1to10,3To20)asString说明:①格式中的数组名的命名与简单变量名相同,可以是任意合法的变量名②类型名称可以是任何VB所定义的合法类型,包括基本类型和用户自定义类型;③格式[]中部分为可选部分,若省略,则下标下界默认为0,或通过下面方式定义下标下界的默认值:OptionBasen其中:n只能为0或1;Option只能出现在窗体层或模块层,且该定义必须在数组定义之前完成,若是多维数组则对每一维都有效。7.1数组的基本概念7.1.2数组的定义例如:OptionBase1‘设置下标默认为1Dima(5)asinteger‘a数组的各元素下标取值为:1~5Dimx(3,2)assingle‘x数组的第一维下标取值:1~3,第二维下标取值:1~2④数组必须先定义后使用,未定义不能使用,下标为整型常量;⑤当用Dim语句定义数组时,该语句把数组元素初始化为0或空字符串;⑥同一过程中,数组名不能与其他数组名或变量名相同;⑦数组声明中的下标不能是变量,只能是常量;例【7-1】定义数组实例及相关概念释义Dima(5)asinteger‘定义整型数组a,下标上界为5a(1)=1:a(2)=2‘对数组元素赋值k=a(1)+a(2)‘将数组元素相加再赋给变量ka(0)a(1)a(2)a(3)a(4)a(5)7.1数组的基本概念7.1.2数组的定义例【[7-2】定义一个二维数组及概念释义TextDimA(-3to1,1to5)asinteger第二维下标下界第二维下标上界第一维下标下界第一维下标上界A(-3,1)A(-3,2)A(-3,3)A(-3,4)A(-3,5)A(-2,1)A(-2,2)A(-2,3)A(-2,4)A(-2,5)A(-1,1)A(-1,2)A(-1,3)A(-1,4)A(-1,5)A(0,1)A(0,2)A(0,3)A(0,4)A(0,5)A(1,1)A(1,2)A(1,3)A(1,4)A(1,5)7.1数组的基本概念例【7-3】用循环方式对数组赋值。PrivateSubForm_Click()dimiasintegerdima(5)asintegerfori=0to5a(i)=inextfori=0to5printa(i)nextEndSub一维数组赋值PrivateSubForm_Click()dimi,jasintegerdima(5,10)asintegerfori=0to5forj=0to10a(i,j)=inextnextEndSub二维数组赋值7.1数组的基本概念7.1.3多维数组和数组下标界值如果在数组中需要通过两个或两个以上的下标才能确定数组元素在数组中的位置称为多维数组。两个下标称为二维数组,三个下标称为三维数组等等。定义方法:Dim数组名([第一维下标下界To]第一维下标上界,[第二维下标下界To]第二维下标上界,[第三维下标下界To]第三维下标上界,…)As类型名称多维数组在内存中所占的空间大小为(所占空间长度应小于64KB):维数1×维数2×维数3×…×维数n×类型字节数(长度)如:Dimx(4,3,2,5)AsInteger其所占内存长度=5×4×3×6×2=720(字节)7.1数组的基本概念7.1.3多维数组和数组下标界值确定数组的上下界值的函数:LBound(数组名,[维])-返回数组指定维的下界;UBound(数组名,[维])-返回数组指定维的上界;如:DimA(-3to4,1to2,3to5,-1to6)asintegerLbound(a,1)=-3’数组a的第一维下界为-3;Ubound(a,3)=5‘数组a的第3维上界为5;如:Dima(2,1,1)asinteger共有3个下标值,即a为三维数组,该数组共有3×2×2=12个元素;排列顺序如下:a(0,0,0)a(0,0,1)a(0,1,0)a(0,1,1)a(1,0,0)a(1,0,1)a(1,1,0)a(1,1,1)a(2,0,0)a(2,0,1)a(2,1,0)a(2,1,1)7.2静态数组与动态数组7.2.1静态数组及其定义静态数组:在声明时就确定其大小的数组。静态数组是用数值常量或符号常量作为下标定维的。(静态数组是由关键字Static定义的数组)静态数组在计算机内存中运行:静态数组在编译阶段给数组分配内存空间,即静态数组没有运行时已有了相应的内存区间,故在定义静态数组时要求在编译阶段就知道该数组的元素个数。静态数组元素的值在定义该数组的运行后,该数组所拥有的内存空间不释放,变量的值仍在内存中,再次运行时,将上次运行的结果作为该变量的初始值,只有当整个应用程序退出后,所占内存才会被释放。7.2静态数组与动态数组7.2.1静态数组及其定义上述效果的数组定义方法:⑴在全局模块中使用Global语句定义;⑵在窗体或模块级用Dim定义;⑶静态定义:在过程中用Static语句定义;或用Static定义过程,而在过程中使用Dim语句定义数组。例[7-4]静态数组与非静态数组的对比Statica(4)AsInteger'定义静态数组aStaticstartAsInteger'定义静态变量Dimb(4)AsInteger'定义非静态数组bDimiAsIntegerIfstart=0ThenPrint静态数组:,,非静态数组:EndIfFori=0To4a(i)=a(i)+i'赋值给静态数组ab(i)=b(i)+i'赋值给非静态数组bNextFori=0To4Printa(i);NextPrint,Fori=0To4Printb(i);NextPrintstart=17.2静态数组与动态数组7.2.2动态数组及其定义动态数组在定义时并不知道数组的大小,要在运行期确定,并根据需要在运行期可改变数组的大小。动态数组的定义过程:⑴在窗体、标准模块和过程中用Dim或Public声明一个没有下标的数组(括号不能省略);如:dima()asinteger⑵数组重定义。在过程中需要使用该数组前,用Redim语句定义数组的大小(数组元素个数),下标可为常量、变量或表达式,但变量或表达式此时必须有值。如:Redima(4)7.2静态数组与动态数组7.2.2动态数组及其定义动态数组定义格式:Dim数组名()As类型名‘定义数组名Redim[Preserve]变量名(下标)‘重定义数组大小在重定义时,按下标说明的上、下界重新分配内存存储单元。当重新定义动态数组时,数组的内容将被清除;若在Redim语句中使用了Preserve选项,则不清除数组中的内容,但使用“Preserve”只能改变最后一维的大小,前面几维的大小不能改变。7.2静态数组与动态数组7.2.2动态数组及其定义使用动态数组时应注意以下几点:⑴使用动态数组可重新定义数组的大小和维数,但不能改变数组的类型:Dima()asintegerRedima(4)Redima(3,2)Redima(6)a(1)=“VisualBasic”‘此句有错误,试图改变数组的类型⑵建立局部动态数组时,可省略Dim语句,由Redim语句直接定义数组。使用Dim时,所定义数组的维数不超过8维,直接使用Redim定义数组,维数可达到60维。⑶在同一过程中,可多次使用Redim语句定义同一个数组,以改变数组的大小和维数;7.3数组的基本操作7.3.1数组元素的输入、输出和复制1、数组元素的输入对于数组元素较少的数组,可通过单个赋值语句进行输入操作;对于数组元素较多的数组,一般通过For语句和InputBox函数输入。OptionBase1‘默认下标下界为1dimb(2,3)assinglefori=1to2fori=1to3b(i,j)=inputbox(“输入b(”&i&“,”&j&”)的值”)nextnext对数组元素的的赋值和使用,可将数组看作简单变量,任何简单变量能使用和出现的地方,数组元素均可出现。7.3数组的基本操作7.3.1数组元素的输入、输出和复制使用数组时要注意下标不能出界;使用多维数组时,下标之间用逗号隔开;Dima(10)asinteger,b(2,4)aslong…a(16)=100‘错误,下标出界b(1,4)=a(6)*5‘使用b数组的一个元素7.3数组的基本操作7.3.1数组元素的输入、输出和复制2、数组元素的输出数组的输出同样是以数组元素为操作对象,可通过Print方法来实现。例【7-5】输出方阵中下三角元素。Dimsc(5,5)AsInteger,iAsInteger,jAsIntegerFori=1To5Forj=1To5sc(i,j)=i*j‘数组赋初值NextNextFori=1To5Forj=1Toi'内循环控制每行输出的元素个数Printsc(i,j);,'以紧凑格式输出数组元素NextPrintNext7.3数组的基本操作7.3.1数组元素的输入、输出和复制3、数组元素的复制单个数组可以像简单变量一样,从一个数组复制到另一个数组。Dimb(4,8),a(6,5)‘数组定义…b(2,3)=a(3,2)‘数组复制7.3数组的基本操作7.3.1数组元素的输入、输出和复制二维数组中的元素也可以复制给另一个二维数组中的某个元素,也可以复制给一个一维数组中的某个元素,并且反之亦然。Dima(8),b(3,2)a(3)=b(1,2):b(3,2)=a(7)为了复制整个数组,仍要使用For循环语句。optionbase1dimname1(),name2()…redimname1(10),name2(10)fori=1to10‘给name1的10个元素赋值name1(i)=inputbox(“请输入姓名:”)nextfori=1to10‘利用For循环将name1的数据复制给n
本文标题:VB程序设计 第七章 数组
链接地址:https://www.777doc.com/doc-3179663 .html