您好,欢迎访问三七文档
第七章数组•熟记:数组的定义方法和应用•掌握与应用:一维数组、二维数组、静态数组、动态数组概念和使用方法•理解:ForEach…Next语句、数组的初始化、控件数组的概念教学目的要求:第七章数组7.1数组的基本概念7.2数组的基本操作7.3控件数组简单变量用一个变量名标识,不同的变量使用不同的变量名表示。处理成批的数据时,可以使用数组来处理。例如表示100个学生的成绩:s1,s2,s3,…s99,s100采用数组来表示:s(0),s(1),s(2),…s(98),s(99)s(k)(k=0,1,2,…99)为数组元素(或称下标变量),它表示第k个学生的成绩,k称为下标变量的下标。7.1数组的基本概念数组的一个主要特点是通过下标(相当于索引)来引用数组元素数组的概念:数组是一组按一定顺序排列的数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。数组长度:数组:一组具有相同名字、不同下标的下标变量.数组元素:数组中的基本元素.下标:数组元素的编号,通过下标区分数组元素.数组元素个数.通常,数组的元素类型必须相同。数组类型是变体型,这时它的各个元素就可以是不同类型。基本概念又称有序的变量——下标变量默认情况下,下标从0开始例如,有一行共5个元素组成的数组x,它的5个下标x(0)x(1)x(2)x(3)x(4)由三行四列元素组成的数组y,它的12个下标变量可y(0,0)y(0,1)y(0,2)y(0,3)y(1,0)y(1,1)y(1,2)y(1,3)y(2,0)y(2,1)y(2,2)y(2,3)下标变量与简单变量具有基本相同的性质和作用数组元素下标用来标明该下标变量在数组中的位置下标VB规定:数组的下标用圆括号括起来,如:s(20),代表数组s中序号为20的数组元素?以下属于VisualBasic合法数组元素的是()A)a8B)a[8]C)a(0)D)a{6}c7.1.1数组的定义使用数组之前必须要先定义,这样可以通知计算机为该数组分配一定的内存空间,便于存储数组中的数据。数组名是这个区域的名称,区域的每个单元都有自己的地址,该地址用下标表示。数组元素就是其中的单元。VB有两种定义数组的格式一、第一种格式一维数组的格式:Dim数组名(下标上界)[As类型]定义时,只给出上界,只给出下标的最大值下标边界应为正整数,用括弧括起来。多维数组的每维下标用逗号相隔说明:(1)数组不能隐式定义(即无默认的上界值)(2)在vb中,数组每一维下标是从0开始的。可以使用OptionBase语句指定下标的下界是从0开始还是从1开始如:OptionBase1表示从这条语句开始所有下标均从1开始OptionBase0表示从这条语句开始所有下标均从0开始(3)Dim语句定义的数组:数值数组的元素初始值为0,字符串数组的元素初始值为空字符串。(4)数组的最大下标值与数组元素个数的区别如:Dima(5)AsIntegerOptionBase1:下标最大值与数组元素个数均为5OptionBase0:下标最大值是5,数组元素个数是6?使用语句dima(10)asinteger声明数组a之后,以下说法正确的为()AA)a数组中的所有元素值为0B)a数组中的所有元素值不确定C)a数组中的所有元素值为EmptyD)执行Erasea后,a数组中的所有元素值不为0二、第二种格式:可以指定下标的起始值,不仅仅是0或1格式:Dim数组名([下界To]上界[,[下界To]上界]…)[As类型]下标下界是0时,下界和“To”可以省略Dima(0To100,0To200)可以写成:Dima(100,200)例:Dima(-5to5)AsInteger‘声明了a数组有11个元素-5是下标的下界5是下标的上界数组元数的数据类型VB有4种语句用于定义数组,格式相同,但适用范围不同4)Public在标准模块中定义全局数组1)Dim在窗体模块或标准模块或过程中,定义窗体或标准模块数组2)ReDim在过程中定义动态数组3)Static在过程中定义静态数组注意:★数组不能与其它变量重名★数组下标的下界和上界必须是常数,不能是变量或表达式可以使用动态数组或ReDim语句修改数组元素的个数★可以使用类型说明符指定数组元素的类型如:Dimb%(50),c$(100),d#(10,12)★使用to方式定义数组,下界不能超过上界可以用LBound和Ubound函数测试数组的下界和上界Ubound()函数和Lbound()函数分别用来确定数组某一维的上界和下界值。使用形式如下:UBound(数组名[,N])LBound(数组名[,N])其中:数组名:必需的。数组变量的名称,遵循标准变量命名约定。N:可选的;一般是整型常量或变量。指定返回哪一维的上界。1表示第一维,2表示第二维,如此等等。如果省略默认是1。格式:LBound(数组[,维])和UBound(数组[,维])PrivateSubForm_Click()Dimx(-10To100,-5To40)PrintLBound(x,1)PrintUBound(x,2)EndSub例:7-17.1.2默认数组数组的默认数据类型:VariantStaticsalary(1to200)asvariantStaticsalary(1to200)例:7-27.1.3一维数组和二维数组一、一维数组:一个数组如果只用一个下标就能确定一个数组元素在整个数组中的位置,则称该数组为一维数组。例7-3实现成绩的输入、排序及输出。其中成绩用一维数组来存储,使用inputbox函数输入成绩。在窗体上画一个命令按钮控件,caption属性为“排名”。要求:运行程序后,单击窗体弹出inputbox输入框,并通过inputbox输入框输入6组成绩,输入完毕后,单击命令按钮进行成绩的排序,再在窗体上输出名次。二、二维数组:一个数组如果需要两个下标才能确定一个数组元素在整个数组中的位置,则称该数组为二维数组。格式:S(x,y)数组名第一维下标上界第二维下标上界二维数组的定义格式:•定义时,每一维只给出上界,只给出下标的最大值Dim数组名(第一维的下标上界,第二维的下标上界)[As类型]•使用TO格式Dim数组名([下界To]上界[,[下界To]上界]…)[As类型]例7-4设计一个程序,实现矩阵的输入、及输出,使用inputbox函数和二维数组实现矩阵数据的输入。要求:运行程序后,单击窗体后弹出inputbox输入框,并通过inputbox输入框输入9个数据,输入完毕后,在窗体上输出矩阵。例S(2,3)第0列第1列第2列第3列第0行S(0,0)S(0,1)S(0,2)S(0,3)第1行S(1,0)S(1,1)S(1,2)S(1,3)第2行S(2,0)S(2,1)S(2,2)S(2,3)?下列的数组定义语句中,正确的是()BA)Dimx[4,4]AsIntegerB)Dimx(4,4)AsIntegerC)Dimx[4:4]AsIntegerD)Dimx(4:4)AsInteger动态数组:动态数组的元素个数,在程序运行时可以改变;在运行时开辟内存区;程序不运行,动态数组不占据内存,定义时可用变量;7.1.4静态数组和动态数组根据数组在内存区域的不同,把数组分为静态数组和动态数组静态数组:静态数组是指数组元素的个数固定不变;在编译时开辟内存区,定义时用数值常量或符号常量一、静态数组的定义Staticsalary(1To200)AsIntegerDimsalary(1To200)AsIntegerStaticsalary(1To200)Dimsalary(1To200)publicnum(1To200,1To300)AsInteger二、动态数组的定义格式:ReDim[Preserve]变量(下标)[As类型名称]建立动态数组的步骤:第一步:声明一个没有下标(或称空维数)的数组为动态数组第二步:在过程中用ReDim语句重新定义带下标的动态数组功能:重新定义动态数组,按定义的上下界重新分配存储单元Preserve参数:保留数组中原来的数据例a.窗体:Dims()AsStringb.事件中:SubCommand1_Click()ReDims(4)s(2)=onePrints(2)ReDims(6)s(5)=VBPrints(5)EndSub用来改变已定义的同名数组的大小,重新分配存储单元当重新分配动态数组时,数组中的内容将被清除在ReDim语句中使用Preserve选择项,将保留数组内容,并且只能重定义数组最末维的大小,不能改变维数的数目ReDim语句不能改变数组元素的类型不能改变数组维数要改变维数,需要首先声明一个没有下标(或称空维数)的数组为动态数组.(1)在窗体层或标准模块中用Dim语句定义的数组如果只有类型,没有指定维数,那么ReDim语句最多可以指定为8维数组。(2)可以用ReDim语句直接定义数组。定义的维数最多可达60维。(3)在一个程序中,可以多次用ReDim语句定义同一个数组,任意指定数组中元素的个数。说明:例a.窗体:Dima()AsStringPrivateSubForm_Click()ReDima(8)a(5)=finePrinta(5)=;a(5)ReDima(9)AsDoublea(7)=12.3Printa(7)EndSubPrivateSubCommand1_Click()ReDima(5)a(3)=abcPrinta(3)=;a(3)ReDima(3,4)a(1,1)=goodPrinta(1,1)=;a(1,1)EndSub例:7-5三、数组的清除和重定义格式:Erase数组名[,数组名]……功能:该语句用来清除静态数组的内容,或者释放动态数组占例如:DimArray1(20)AsIntegerDimArray2()AsSingleReDimArray2(9,10)……EraseArray1,Array2说明:(1)语句中只写数组名(2)用于静态数组时,数值数组置0;字符串数组置为空串;记录数组根据每个元素的类型重新设置初值(3)用于动态数组时,删除整个数组结构并释放它所占据的内存(4)用于变体数组时,每个元素置为“空”(Empty)对静态数组,Erase语句将数组重新初始化;对动态数组,Erase语句将释放动态数组所使用的内存PrivateSubForm_Click()Statica(6)AsIntegerPrint数组的初始化后的值:Fori=1To6a(i)=3*iPrinta(;i;)=;a(i);NextiPrintPrint用Erase语句清除后:EraseaFori=1To6Printa(;i;)=;a(i);NextiEndSub例7-67.2.1数组元素的输入、输出和复制1.数组的引用和输入方法:数组名后面的括号中指定下标,如:x(8),y(2,3),z%(3)注意:引用数组元素时,数组名、类型和维数必须与定义数组时一致引用数组元素时,下标值应该在建立数组时所指定的范围内引用时可以使用类型符在同一过程中,数组和变量不允许同名7.2数组的基本操作使用形式:数组名(下标)其中:下标可以是整型变量、常量或表达式。例如:设有下面的数组DimA(10)asinteger,B(10)AsInteger则下面的语句都是正确的。A(1)=A(2)+B(1)+5'取数组元素运算A(i)=B(i)'下标使用变量B(i+1)=A(i+2)'下标使用表达式一维数组元素的引用数组元素一般通过循环语句和输入函数输入用InputBox函数输入数组元素时,得到的是字符串类型。要输入数值型数据,应显式定义数组为数值类型二维数组的引用引用形式:数组名(下标1,下标2)例如:a(1,2)=10a(i+2,j)=a(2,3)*2在程序中常常通过二重循环来操作使用二维数组元素。例:7-7例:7-82.数组元素的输出可以用Print实现3.数组元素的复制单个数组元素可以像简单变量一样从
本文标题:VB60课件第七章
链接地址:https://www.777doc.com/doc-2865674 .html