您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > VisualBasic程序设计与应用开发教程第5章
第5章数组本章内容5.1概述5.2一维数组5.3二维数组及多维数组5.4动态数组5.5控件数组5.1概述(1)1.数组的概念数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标2.数组元素的数据类型数组元素的数据类型必须相同,可以是前面讲过的各种基本数据类型但当数组类型被指定为变体型时,它的各个元素就可以是不同的类型5.1概述(2)3.数组的维数数组可以是一维数组,也可以是多维数组。4.数组的大小数组的每一维都有一个非零的长度。在数组的每一维中,数组元素按下标0到该维最高下标值连续排列,这个序列的个数就是该数组在该维数上的大小。5.数组的分类静态数组动态数组5.2一维数组(1)5.2.1一维数组的声明声明格式如下:Dim数组名([下界to]上界)[As数据类型]或Dim数组名[数据类型符]([下界to]上界)例如:Dima(10)AsIntegerDimb(1to10)AsIntegerDimc%(10)Dimd(10)5.2一维数组(2)说明:数组的名称必须符合变量的命名规则。数组必须先定义后使用。数组默认下界为0,若希望数组下标从1开始,可在模块的声明部分使用OptionBase语句。语句的格式为OptionBase0|1例如:OptionBase1'将所有的数组的下界设置为1一旦使用OptionBase语句,该模块所有数组的默认下界都将变为设置的值。声明数组时,上界和下界不能使用变量,必须使用常量。例如:n=5Dima(n)AsInteger数组声明是错误的。如果省略数据类型或类型说明符,则数组的类型为变体类型,可以存放任何类型的数据。要注意区分元素个数和可以使用的最大下标的区别。5.2一维数组(3)5.2.2一维数组元素的引用引用格式为数组名(下标)说明:在引用数组元素时,数组必须已经声明,否则系统会报错。在引用数组元素时,下标可以是常量,也可以是变量在引用数组元素时,数组元素的下标必须位于数组的下界和上界之间,否则系统将出现“数组越界错误”。不能通过数组名称引用数组的所有元素,如果需要引用数组的所有元素,必须通过循环遍历的方式来实现。5.2一维数组(4)5.2.3一维数组的应用【例5.1】数组的输入输出。定义一个10个元素的数组,要求每个数组元素都是一个0~100的随机整数,并将数组的内容输出到标签上。程序代码:PrivateSubCommand1_Click()Dima(9)AsIntegerDimiAsIntegerDimSAsStringFori=0To9Randomizea(i)=Int(Rnd*101)'随机生成0~100的整数,并赋值给数组元素NextFori=0To9S=S&a(i)&NextLabel1.Caption=SEndSub5.2一维数组(5)【例5.2】定义一个10个元素的数组,要求每个数组元素都是一个0~100的随机整数,并输出该数组中最大值和最小值。5.2一维数组(6)【例5.3】定义一个10个元素的数组,要求每个数组元素都是一个0~100的随机整数,并将该数组的内容进行首尾对调,即a(0)的值和a(9)对调,a(1)的值和a(8)对调……5.2一维数组(7)【例5.4】定义一个10个元素的数组,数组下标范围为1~10,要求每个数组元素都是一个0~100的随机整数,用冒泡法将该数组的内容按由小到大的顺序排序。5.3二维数组及多维数组(1)5.3.1二维数组的声明声明格式如下:Dim数组名([下界to]上界,[下界to]上界)[As数据类型]或Dim数组名[数据类型符]([下界to]上界,[下界to]上界)例如:Dima(3,4)AsIntegerDimb(1to3,1to4)AsIntegerDimc%(3,4)Dimd(3,4)5.3二维数组及多维数组(2)说明:二维数组必须先声明后使用。二维数组的变量名与一维数组一样要符合变量的命名规则。二维数组的两个下标不允许使用变量,必须是常量。二维数组的两个纬度默认下界都是0。数组的第1个纬度为行,第2个纬度为列,如a(3,4)表示第3行、第4列。数组元素的个数为:(上界1−下界1+1)*(上界2−下界2+1)。二维数组元素在内存的存放顺序为“先行后列”。5.3二维数组及多维数组(3)5.3.2二维数组元的引用二维数组的引用格式为数组名(下标1,下标2)例如:Dima(1to3,1to3)AsIntegera(1,1)=10a(1,2)=5a(1,3)=a(1,1)+a(1,2)在程序中经常采用二重循环对二维数组进行操作5.3二维数组及多维数组(4)声明格式如下:Dim数组名([下界to]上界,[下界to]上界,……)[As数据类型]或Dim数组名[数据类型符]([下界to]上界,[下界to]上界,……)例如:Dima(3,4,5)AsIntegerDima%(3,4,5,6)5.3二维数组及多维数组(5)5.3.4二维数组的应用【例5.5】求矩阵的最大值和最小值。求一个3×3矩阵的最大值和最小值,矩阵元素的值为两位的随机整数。5.3二维数组及多维数组(6)【例5.6】求矩阵的转置。将一个3×4矩阵进行转置,矩阵元素的值为随机的2位整数。5.3二维数组及多维数组(7)【例5.7】设有3位同学的英语、计算机、政治和数学4门成绩,编写程序实现用户输入5位同学的学号、姓名和各科成绩,求出各科的平均成绩。5.4动态数组(1)5.4.1动态数组的声明声明格式如下。1.声明数组Dim数组名()[As数据类型]2.指定数组大小ReDim[Preserve]数组名(下标1[,下标2…])例如:Dima()AsIntegerReDima(5)n=9ReDima(n)5.4动态数组(2)说明:在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量。在过程中可以多次使用ReDim来改变数组的大小,也可改变数组的维数。每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve关键字来保留数组中的原有数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。5.4动态数组(3)5.4.2与数组相关的函数1.Array函数语法格式为Array(参数列表)例如:Dimaa=Array(1,3,5,7,9)Dimb()b=Array(2,4,6,8,10)5.4动态数组(4)说明:参数列表中的数据以逗号分隔,逗号分割的数据的数据类型可以相同,也可以不同。使用Array函数给动态数组赋值后,该数组被确定为一维数组,数组的下界由OptionBase语句决定,默认为0。元素的个数由参数值决定。只能为变体类型的变量或仅有括号括起来的动态数组赋值。5.4动态数组(5)2.Lbound和Ubound函数语法格式为LBound(数组名[,N])UBound(数组名[,N])例如:Dimaa=array(1,3,5,7)b=LBound(a)‘b的值为0c=UBound(a)‘c的值为3Fori=LBound(a)toUBound(a)Printa(i)NextI说明:数组名是必须的。数组名必须是已经声明的数组,否则,系统会报错。N是可选的。一般为整型常量,指定返回哪一维的上界或下界,1表示第一维,2表示第二维,如果省略,默认为1。5.4动态数组(6)3.Split函数语法格式为数组名=Split(字符串表达式[,分隔符])例如:Dima()AsStringa=Split(hellohowareyou)Printa(0)'输出结果为helloDimbb=Split(2009-2-10,-)Printb(0)'输出结果为2009说明:数组名必须是动态数组或变体类型变量,不能是静态数组。经过切割后,数组元素的数据类型为字符串型,因此除了变体类型和字符串类型,不能将数组声明成其他类型。如果分隔符省略,系统默认分隔符为空格。5.4动态数组(7)4.Join函数语法格式为Join(数组名[,分隔符])例如:Dima()a=Array(2009,2,10)b=Join(a,-)c=Join(a)PrintbPrintc说明:Join函数返回的数据类型为字符串类型。数组名必须是已经定义的静态或动态数组,且数组的类型为字符串型或变体类型。分隔符如果省略,系统默认的分隔符为空格字符。5.4动态数组(8)5.4.3动态数组的应用【例5.8】用户输入一个整数n,生成一个具有n个元素的0~100的随机整数数组,并将结果输出。5.5控件数组(1)5.5.1控件数组的概念控件数组是具有相同名称的同类控件。像数组一样,这些同名控件通过索引值(Index属性)来区分不同的控件,同时,这些控件具有相同的事件,在事件中将会多出一个Index参数,里面存放激发事件的控件的索引值例如:一个名称为cmdNum的控件数组的Click事件PrivateSubcmdNum_Click(IndexAsInteger)MsgBoxcmdNum(Index).CaptionEndSub5.5控件数组(2)5.5.2控件数组的建立1.通过复制控件的方法2.通过控件相同名称的方法3.通过Load语句生成控件数组元素语法格式为Load控件数组名(索引值)Unload控件数组名(索引值)例如:LoadcmdNum(2)UnloadcmdNum(2)5.5控件数组(3)Load和Unload函数说明:在使用Load语句时,至少要有一个控件数组元素。如果需要将一个控件变为数组元素,将该控件的Index属性设置为0即可。当使用Load语句生成控件数组元素后,控件数组元素不可见,需要使用Visible属性来显示该控件数组元素。新生成的控件数组元素需要通过left和top属性确定一个新的位置。Unload语句只能删除用Load语句生成的控件数组元素,不能删除用户在设计时定义的控件数组元素。5.5控件数组(4)5.5.3控件数组的应用【例5.9】编写程序实现单击“生成按钮”按钮生成一个新的命令按钮,并将标题设置为1、2、3……最多不超过9;单击“删除按钮”按钮删除最新生成的按钮;单击“清空文本框”按钮将文本框内容清除;单击生成的命令按钮,将按钮的标题与文本框内容连接起来。5.5控件数组(5)【例5.10】在窗体上生成200个随机大写字符,每行20个字符,每个字符一个随机颜色,当用户输入一个字符时,就将这100个字符中与输入字符相同的字符删除。
本文标题:VisualBasic程序设计与应用开发教程第5章
链接地址:https://www.777doc.com/doc-2854857 .html