1、2022-8-91 Visual Basic Visual Basic 程序设计程序设计2022-8-9221.1.了解数组的基本概念了解数组的基本概念2.2.熟练掌握一维数组的使用方法熟练掌握一维数组的使用方法 3.3.掌握数组的基本操作掌握数组的基本操作 4.4.灵活应用静态数组与动态数组灵活应用静态数组与动态数组 5.5.掌握数组的常用算法掌握数组的常用算法6.6.掌握用户自定义类型的基本用法掌握用户自定义类型的基本用法 教学重点教学重点数组和控件数组的应用数组和控件数组的应用教学难点教学难点控件数组控件数组2022-8-9335.1 5.1 数组的概念数组的概念引例引例1.1.己知己知
2、5050名学生的一门课成绩,要求找出高于平均名学生的一门课成绩,要求找出高于平均分的所有学生的成绩。分的所有学生的成绩。2.2.输入输入5050个数,要求程序按输入时的逆序把这个数,要求程序按输入时的逆序把这5050个个数输出来。即按输入时的相反顺序输出这数输出来。即按输入时的相反顺序输出这5050个数。个数。少量的数据可以使用简单变量方便地存取或处理。若数据少量的数据可以使用简单变量方便地存取或处理。若数据量很大,采用这种处理方法几乎是难以做到的。而量很大,采用这种处理方法几乎是难以做到的。而数组数组可以可以很方便地处理这种大量的数据很方便地处理这种大量的数据 。2022-8-944数组是一
3、组数组是一组按一定规律进行排列的按一定规律进行排列的相同类型变量相同类型变量的集合。的集合。数组用于表示一组性质相同的有序的数,这一组数用一个数组用于表示一组性质相同的有序的数,这一组数用一个统一的名称来代替,称为统一的名称来代替,称为数组名数组名。数组名的命名规则与简单。数组名的命名规则与简单变量的命名规则相同。变量的命名规则相同。数组中的每一个变量称为数组中的每一个变量称为数组元素数组元素。为了在处理时能够。为了在处理时能够区分数组中的每一个元素,需要用一个索引号加以区别,该索区分数组中的每一个元素,需要用一个索引号加以区别,该索引号称为引号称为下标下标。数组中的每一个元素可以用数组名和下
4、标唯。数组中的每一个元素可以用数组名和下标唯一表示,写成:一表示,写成:数组名数组名(下标下标)。数组元素在程序中的使用与简单变量类似,在简单变量允数组元素在程序中的使用与简单变量类似,在简单变量允许出现的地方也允许出现数组元素。所以,许出现的地方也允许出现数组元素。所以,数组元素又称为数组元素又称为下标变量。下标变量。2022-8-955 表示数组元素时,应注意表示数组元素时,应注意1)1)需用圆括号也只能用把下标括起来。需用圆括号也只能用把下标括起来。2)2)下标可以是常量、符号常下标可以是常量、符号常量或表达式,其值必须是整数量或表达式,其值必须是整数。3)3)下标的最小值称为下界,下标
5、的最大值称为上界。在没有任下标的最小值称为下界,下标的最大值称为上界。在没有任何说明的情况下,数组的下界默认值为何说明的情况下,数组的下界默认值为0 0。例如例如dim score(48)as dim score(48)as single(integersingle(integer)Option Base Option Base 1 1 一个班一个班(48(48个个)学生的成绩学生的成绩 Score Score或或3030种图书的名字种图书的名字 BookNameBookName或或100100种商品的价格种商品的价格 Cost Cost 数组元素数组元素数组中的各个变量数组中的各个变量,使用
6、唯一的下标(索引)使用唯一的下标(索引)来标识来标识。Score(1)Score(1)、Score(2)Score(48)Score(2)Score(48)或或BookName(0)BookName(0)BookName(29)BookName(29)或或Cost(0)Cost(0)Cost(99)Cost(99)2022-8-9665.2 5.2 数组的定义数组的定义5.2.1 5.2.1 定义数组的一般格式定义数组的一般格式Dim Dim 数组名数组名(第一维说明第一维说明 ,第二维说明,第二维说明)As)As 类型名称类型名称 说明:说明:(1)(1)数组须先定义后使用,未定义不能使用。
7、数组须先定义后使用,未定义不能使用。(2)(2)格式中的部分为可选部分。格式中的部分为可选部分。(3)(3)省略省略 As As 类型名称类型名称 定义数组,默认为变体类型的数组。定义数组,默认为变体类型的数组。(4)(4)维说明的形式为:维说明的形式为:下标下界下标下界 to to 下标上界下标上界 其中当下标的下界为默认值其中当下标的下界为默认值0 0时,可以省略不写时,可以省略不写(5)(5)也可以下面方式定义下标下界的默认值:也可以下面方式定义下标下界的默认值:Option Base Option Base n n (其中其中n n为为0 0或或1 1)。(6)(6)用用DimDim语
8、句定义数组时,该语句把数组元素初始化为语句定义数组时,该语句把数组元素初始化为0 0或空字符或空字符串。串。(7)(7)在同一过程中,数组名不能与其他数组名或变量名相同。在同一过程中,数组名不能与其他数组名或变量名相同。2022-8-97数组的维数数组的维数 一个数组元素只有一个下标,则称为一个数组元素只有一个下标,则称为一维数组一维数组。例如,要表示某班例如,要表示某班4040名同学的英语成绩可以表示成名同学的英语成绩可以表示成G(1)G(1)、G(2)G(2)、G(3)G(40)G(3)G(40)。用两个下标来表示的数组称为用两个下标来表示的数组称为二维数组二维数组。对于可以表示成表。对于
9、可以表示成表格形式的数据,如矩阵、行列式等,用二维数组来表示则比较格形式的数据,如矩阵、行列式等,用二维数组来表示则比较方便。方便。例如,要表示六个班例如,要表示六个班(各班各班4040人人)共共240240个学生的英语成绩,就个学生的英语成绩,就可以用二维数组表示可以用二维数组表示G(6,40)G(6,40),第一个下标表示班级,第二个,第一个下标表示班级,第二个下标表示学号,则一班下标表示学号,则一班3030号学生的成绩可以表示成号学生的成绩可以表示成G(1,30)G(1,30)。根据需要,还可以使用三维数组、四维数组等,根据需要,还可以使用三维数组、四维数组等,VBVB最多最多允允许有许
10、有6060维。维。2022-8-9885 5.2.2.2.2 数组的引用数组的引用引用数组元素的格式引用数组元素的格式 数组名数组名(下标下标1,1,下标下标2)2)说明:说明:(1)(1)在程序中,凡是能用变量的地方,都可用数组元素来替换。在程序中,凡是能用变量的地方,都可用数组元素来替换。(2)(2)引用数组元素时,要注意数组名、类型及维数要与定义的引用数组元素时,要注意数组名、类型及维数要与定义的一致。一致。(3)(3)数组元素的下标要在定义的范围之内数组元素的下标要在定义的范围之内,否则出现下标越界否则出现下标越界错误。错误。2022-8-999 一般通过循环语句及一般通过循环语句及I
11、nputBoxInputBox函数给数组输入数据。函数给数组输入数据。数组的输出一般用数组的输出一般用PrintPrint方法、标签或文本框实现。方法、标签或文本框实现。赋值赋值For i=1 To 10For i=1 To 10 a(i)=Val(InputBox(a(i)=Val(InputBox(输入第输入第&i&i&个数个数)Next Next i i输出输出For i=1 To 10For i=1 To 10 Print a(i);Print a(i);Next iNext i5.2.3 5.2.3 数组的赋值和输出数组的赋值和输出2022-8-91010对输入的对输入的2020个整
12、数按每行个整数按每行5 5个数的格式输出。个数的格式输出。Private Sub Command1_Click()Private Sub Command1_Click()Dim b(20)As Integer,i%Dim b(20)As Integer,i%For i=1 To 20 For i=1 To 20 b(i)=InputBox(b(i)=InputBox(请输入一个整型数请输入一个整型数)Next i Next i For i=1 To 20 For i=1 To 20 Print b(i);Print b(i);If i Mod 5=0 Then Print If i Mod 5
13、=0 Then Print Next i Next iEnd SubEnd Sub2022-8-91111由键盘输入由键盘输入1010个数,再逆序输出。个数,再逆序输出。Private Sub Command1_Click()Private Sub Command1_Click()Dim a(10)As Integer,i%Dim a(10)As Integer,i%Print Print 输入的数据为输入的数据为 For i=1 To 10For i=1 To 10 a(i)=InputBox(a(i)=InputBox(请输入第请输入第&i&i&个数个数)Print a(i),Next i
14、 End SubPrivate Sub Command2_Click()Dim a(10)As Integer,i%PrintPrintPrint Print 逆序输出为逆序输出为 For i=10 To 1 step-1For i=10 To 1 step-1 Print a(i),Print a(i),Next iNext iEnd SubEnd Sub2022-8-91212由由键盘上输入键盘上输入4040人的考试成绩,输出高于平均成绩的分人的考试成绩,输出高于平均成绩的分数。数。分析:该问题需分析:该问题需处理处理三部分,一输入三部分,一输入4040个人的成绩;二求平均分;个人的成绩;
15、二求平均分;三把这三把这4040个分数逐一和平均成绩进行比较,若高于平均成绩,则个分数逐一和平均成绩进行比较,若高于平均成绩,则输出。输出。程序程序代码代码如下:如下:Private Sub Command1_Click()Private Sub Command1_Click()Dim score(40)As Single,aver!,i%Dim score(40)As Single,aver!,i%aver=0aver=0For i=1 To 40For i=1 To 40 score(i)=InputBox(score(i)=InputBox(请输入成绩请输入成绩)aver=aver+sc
16、ore(i)aver=aver+score(i)Next iNext iaver=aver/40aver=aver/40For i=1 To 40For i=1 To 40 If score(i)aver Then Print score(i)If score(i)aver Then Print score(i)Next iNext iEnd SubEnd Sub2022-8-91313定义一个可存放不同类型数据的一维数组并输出。定义一个可存放不同类型数据的一维数组并输出。Option Base 1Option Base 1Private Sub Command1_Click()Private
17、 Sub Command1_Click()Dim abc(4)Dim abc(4)abc(1)=dateabc(1)=dateabc(2)=abc(2)=你的考试得了你的考试得了 abc(3)=100abc(3)=100abc(4)=abc(4)=分分 PrintPrintFor i=1 To 4For i=1 To 4Print abc(i)Print abc(i)Next iNext iEnd SubEnd Sub2022-8-914145.2.4 5.2.4 二维数组的定义和引用二维数组的定义和引用1.1.二维数组定义格式二维数组定义格式 Dim Dim 数组名数组名(下标下标1 1,下
18、标,下标2)As 2)As 类型名类型名称称 说明:说明:(1 1)两个下标形式为:)两个下标形式为:下标下界下标下界 To To 上界,如果下标下界省上界,如果下标下界省略,则下标下界默认为略,则下标下界默认为0 0。如果之前用。如果之前用Option Base 1 Option Base 1 说明,说明,则下标下界默认值为则下标下界默认值为1 1。(2 2)二维数组可以形象地用平面的二维表格来表示,表格的)二维数组可以形象地用平面的二维表格来表示,表格的行数和列数就是数组地第一个下标和第二个下标地取值个数,行数和列数就是数组地第一个下标和第二个下标地取值个数,同一行上的元素,第一个下标是相
19、同的,同一列上的元素,第同一行上的元素,第一个下标是相同的,同一列上的元素,第二个下标是相同的。二个下标是相同的。(3 3)二维数组的元素个数为)二维数组的元素个数为(上界(上界1-1-下界下界1 11 1)(上界)(上界2-2-下界下界2 21 1)2022-8-915152.2.二维数组的引用二维数组的引用引用形式:数组名(下标引用形式:数组名(下标1 1,下标,下标2 2)说明:习惯上将下标说明:习惯上将下标1 1为行下标,下标为行下标,下标2 2为列下标。为列下标。例如:例如:a(1,2)a(1,2)为数组第二行第三列的元素。为数组第二行第三列的元素。二维二维数组的下标范围由下标的下界
20、和上界来确定,下界和数组的下标范围由下标的下界和上界来确定,下界和上界可以是任何整型常量或常量表达式。上界可以是任何整型常量或常量表达式。如:如:Dim aa(2Dim aa(2,3)as integer3)as integeraa(0,0)aa(0,1)aa(0,2)aa(0,3)aa(1,0)aa(1,1)aa(1,2)aa(1,3)aa(2,0)aa(2,1)aa(2,2)aa(2,3)2022-8-91616 又如:又如:Dim aa(-1 to 1,-2 to 1)Dim aa(-1 to 1,-2 to 1)aa(-1,-2)aa(-1,-1)aa(-1,0)aa(-1,1)aa(
21、0,-2)aa(0,-1)aa(0,0)aa(0,1)aa(1,-2)aa(1,-1)aa(1,0)aa(1,1)3.3.二维数组的赋值二维数组的赋值可以通过循环语句赋值:可以通过循环语句赋值:例如:例如:for i=0 to 2 for i=0 to 2 for j=0 to 3 for j=0 to 3 a(i,j)=int(rnd a(i,j)=int(rnd*100)100)next j next j next i next i2022-8-91717 LBoundLBound函数和函数和UBoundUBound函数函数格式:格式:LBound(LBound(数组名数组名,维,维)UB
22、ound(UBound(数组名数组名,维,维)说明:说明:(1)(1)数组名是要测试的数组。数组名是要测试的数组。(2)LBound(2)LBound函数返回数组的下界值,函数返回数组的下界值,UBoundUBound函数返回数组的上函数返回数组的上界值。界值。(3)(3)一维数组可省略一维数组可省略,维,维,二维数组必须指定,二维数组必须指定LBound(aa,2)LBound(aa,2)表示表示测试测试aaaa数组的第二维下界,其值为:数组的第二维下界,其值为:-2-2。UBound(aa,1)UBound(aa,1)表示测试表示测试aaaa数组的第一维上界,其值为:数组的第一维上界,其值
23、为:1 1。5.2.5 5.2.5 数组下标的界值数组下标的界值2022-8-91818 用用LBoundLBound函数和函数和UBoundUBound函数改写例函数改写例4 4-4 4。Option Base 1Option Base 1Private Sub Command1_Click()Private Sub Command1_Click()Dim abc(4)Dim abc(4)abc(1)=dateabc(1)=dateabc(2)=abc(2)=你的考试得了你的考试得了 abc(3)=100abc(3)=100abc(4)=abc(4)=分分 PrintPrintFor i=L
24、Bound To UBound(abc)For i=LBound To UBound(abc)Print abc(i)Print abc(i)Next iNext iEnd SubEnd Sub2022-8-919195.3 5.3 静态数组动态数组静态数组动态数组5 5.3.3.1.1.静态数组静态数组静态数组的二种形式静态数组的二种形式:用用DimDim语句所定义的数组。语句所定义的数组。用用StaticStatic语句定义的数组。语句定义的数组。两者的区别:两者的区别:(1)Static(1)Static语句只能出现在过程中,语句只能出现在过程中,Dim Dim 语句不仅可以出现在语句不
25、仅可以出现在过程中,还可以出现在通用声明中。过程中,还可以出现在通用声明中。(2)(2)在过程中用在过程中用DimDim语句定义的数组,过程执行结束后将释放语句定义的数组,过程执行结束后将释放内存空间。内存空间。(3)(3)在过程中用在过程中用StaticStatic语句定义的数组,过程执行结束后将不语句定义的数组,过程执行结束后将不会释放内存空间。会释放内存空间。2022-8-92020 比较用比较用StaticStatic语句定义的数组与用语句定义的数组与用DimDim语句定义的数语句定义的数组之区别。单击组之区别。单击5 5次次“打印打印”命令按钮后的结果如图所示命令按钮后的结果如图所示
26、.2022-8-921215 5.3.3.2.2.动态数组动态数组(可调数组可调数组)定义定义可调数组可调数组分两步:分两步:第一步:声明一个没有下标参数的数组。第一步:声明一个没有下标参数的数组。格式:格式:DimDim 数组名数组名()As ()As 类型类型 第二步:引用数组前用第二步:引用数组前用 ReDim ReDim语句重新定义。语句重新定义。格式:格式:ReDim Preserve ReDim Preserve 数组名数组名(下界下界 to to 上界上界,下界下界 to to 上界上界)As )As 类型类型 2022-8-92222例如:例如:Private Sub Comm
27、and1_Click()Private Sub Command1_Click()Dim a()As Integer Dim a()As Integer Dim n%Dim n%n=Val(InputBox(input n)n=Val(InputBox(input n)ReDim a(n)ReDim a(n)End SubEnd Sub2022-8-92323可调数组说明可调数组说明(1)(1)在过程中,在过程中,可多次用可多次用ReDimReDim语句来改变数组的大小语句来改变数组的大小,也,也可可改变数组的维数改变数组的维数,但,但不能改变数组的类型不能改变数组的类型。(2)(2)若不指定若
28、不指定PreservePreserve保留字,在执行保留字,在执行ReDimReDim语句时,数语句时,数组中原来所存放的值将全部丢失。组中原来所存放的值将全部丢失。(3)(3)指定指定PreservePreserve保留字,在执行保留字,在执行ReDimReDim语句时,数组中语句时,数组中原来所存放的值将不会丢失。但使用原来所存放的值将不会丢失。但使用PreservePreserve保留字保留字后,只能改变最后一维的大小,前几维的大小不能改变。后,只能改变最后一维的大小,前几维的大小不能改变。2022-8-92424 通过输入对话框输入一批成绩,把及格的和不及通过输入对话框输入一批成绩,把
29、及格的和不及格的成绩分别存放在数组格的成绩分别存放在数组a a和和b b中,并以每行中,并以每行5 5 个数据个数据的形式输出数组的形式输出数组a a和和b b。输入。输入-1-1时程序结束。时程序结束。2022-8-92525 数组是一种构造类型,数组是一种构造类型,数组名通常是整个数组的标识数组名通常是整个数组的标识,对对数组的操作实际上是对数组元素的操作数组的操作实际上是对数组元素的操作。基本操作一般是。基本操作一般是指对数组元素所进行的输入和输出,即如何给数组元素赋指对数组元素所进行的输入和输出,即如何给数组元素赋值,又如何将数组元素的值显示在窗体上或控件上。值,又如何将数组元素的值显
30、示在窗体上或控件上。5.4 5.4 数组的基本操作数组的基本操作2022-8-92626方法一方法一由键盘输入由键盘输入1010个数据,分别统计正数之和及负数之个数据,分别统计正数之和及负数之和。和。5.4.1.1.数组元素的输入数组元素的输入2022-8-92727方法二方法二用数组名直接赋值用静态数组用数组名直接赋值用静态数组wwww元素的值给动态数组元素的值给动态数组yyyy赋值。赋值。Option Base 1Option Base 1Private Sub Command1_Click()Private Sub Command1_Click()Dim ww(4)as integerD
31、im ww(4)as integerDim yy()as integer Dim yy()as integer yyyy为动态数组为动态数组For i=1 To 5For i=1 To 5Next iNext iyy=ww yy=ww 用用wwww给给yyyy赋值赋值print yy(i)print yy(i)next inext iEnd SubEnd Sub2022-8-92828例例5-85-8说明说明(1)(1)通过数组名给数组名赋值的条件是:通过数组名给数组名赋值的条件是:两个数组的类型相两个数组的类型相同,且赋值号左边为动态数组,右边为静态数组。同,且赋值号左边为动态数组,右边为静
32、态数组。(2)(2)赋值号左边的动态数组,通过赋值确定大小。赋值号左边的动态数组,通过赋值确定大小。2022-8-92929格式:数组变量名格式:数组变量名=Array=Array(数组元素值)(数组元素值)功能:将小括号中的数据依次赋给数组中的各元素。功能:将小括号中的数据依次赋给数组中的各元素。说明:说明:(1)(1)数组可以说明成数组可以说明成VariantVariant类型或不说明类型。类型或不说明类型。(2)(2)所声明的所声明的数组为可调数组数组为可调数组,圆括号可省略不写,圆括号可省略不写 (3)(3)数组下标的上界值由括号内的参数个数决定数组下标的上界值由括号内的参数个数决定
33、(4)Array(4)Array函数函数只适用于一维数组只适用于一维数组。(5)Array(5)Array函数中的数组元素值之间以逗号分隔函数中的数组元素值之间以逗号分隔方法三方法三用用ArrayArray函数给数组元素赋值。函数给数组元素赋值。2022-8-93030用用ArrayArray函数为数组函数为数组C C赋初值。赋初值。Private Sub Command1_Click()Private Sub Command1_Click()Dim c as VariantDim c as Variantc=Array(4,5,3,7,2,9)c=Array(4,5,3,7,2,9)For
34、i=LBound(c)To UBound(c)For i=LBound(c)To UBound(c)print c(i)print c(i)Next iNext iprintprintprint print For i=0 To 5For i=0 To 5print c(i)print c(i)next inext iEnd SubEnd Sub2022-8-93131 根据提示分别将根据提示分别将5 5个数据通过文本框赋给一维个数据通过文本框赋给一维数组数组w w,单击输入框中的,单击输入框中的“确定确定”按钮完成每次的输按钮完成每次的输入操作;单击显示框中的入操作;单击显示框中的“确定确定
35、”按钮,在图片框按钮,在图片框中输出数组中输出数组w w中所有元素的值。中所有元素的值。方法四方法四将控件(对象)的属性给数组元素赋值。将控件(对象)的属性给数组元素赋值。2022-8-93232如例如例5-95-9中的语句:中的语句:For i=0 To 5 For i=0 To 5 Print c(i)Print c(i)Next i Next i再如例再如例5-105-10中的语句:中的语句:For i=1 To 5For i=1 To 5 Picture1.Print ww(i)Picture1.Print ww(i)Next i Next i是利用循环并结合是利用循环并结合Print
36、Print语句将数组元素语句将数组元素的值依次输出在窗体上。的值依次输出在窗体上。是利用循环并结合是利用循环并结合PrintPrint语句将数语句将数组元素的值依次输出在图片框上。组元素的值依次输出在图片框上。5.4.2.2.数组元素的输出数组元素的输出方法一方法一用用printprint方法将数组元素的值直接输出到窗体上或图片方法将数组元素的值直接输出到窗体上或图片框中。框中。2022-8-93333求数组中的最大元素及下标。求数组中的最大元素及下标。方法二方法二用赋值语句方法将数组元素的值显示在标签、文本框用赋值语句方法将数组元素的值显示在标签、文本框中或其它控件上。中或其它控件上。202
37、2-8-93434格式:格式:For Each For Each 成员成员 in in 数组数组Exit ForExit ForNext Next 成员成员功能:功能:For Each Next For Each Next 语句用于对数组或集合中的元素语句用于对数组或集合中的元素逐逐一进行循环控制操作一进行循环控制操作。方法三方法三用用For Each.NextFor Each.Next语句输出。语句输出。2022-8-93535该语句的执行过程:该语句的执行过程:(1)(1)首先计算数组元素的个数,决定循环的次数首先计算数组元素的个数,决定循环的次数(2)(2)每次执行循环体之前先将数组的一
38、个元素的值赋给成员,每次执行循环体之前先将数组的一个元素的值赋给成员,第一次是第一个数组元素,第二次是第二个数组元素,依第一次是第一个数组元素,第二次是第二个数组元素,依次类推。次类推。(3)(3)执行循环体后,转到执行循环体后,转到(2)(2)。(4)(4)直到遍历完每一个数组元素或遇到直到遍历完每一个数组元素或遇到Exit ForExit For语句则退出该语句则退出该循环。循环。2022-8-93636说明:说明:(1)“(1)“成员成员”必须是一个必须是一个变体变量名变体变量名,为循环而设,表示某个,为循环而设,表示某个数组元素的值。数组元素的值。(2)“(2)“数组数组”仅为一个仅为
39、一个数组名数组名,不需括号、上界、下界等。,不需括号、上界、下界等。(3)(3)从从For EachFor Each语句到语句到NextNext语句之间的语句为循环体。可用语句之间的语句为循环体。可用Exit ForExit For语句直接跳出循环。语句直接跳出循环。2022-8-93737用用For Each Next For Each Next 语句输出数组元素。语句输出数组元素。2022-8-938385.5 5.5 控件数组控件数组控件数组的建立方法一1在界面设计时建立(1)先创建数组中的第一个控件(注意此时控件的Index属性值为空)。(2)选取该控件复制,再粘贴。系统自动提示:“是
40、否创建一个控件数组吗?”。(3)单击“是”按钮,窗体上自动增加一个属性基本相同的控件(注意此时第一个控件的Index=0,新增控件的Index=1)。(4)继续粘贴,便会产生一系列属性基本相同,而只有Index属性不同的一组控件,即控件数组。1.1.控件数组控件数组的概念的概念2.2.控件数组控件数组的建立的建立2022-8-939395.5 5.5 控件数组控件数组1.1.控件数组控件数组的概念的概念2.2.控件数组控件数组的建立的建立 一组完成类似功能且类型相同的控件,将它们组合起来,以控件的名称作为数组名,并给各个控件冠以不同的下标,所组成的数组,称之为控件数组。数组中的某个元素,代表某
41、一个具体的控件,所完成的功能与独立的控件几乎一样。2022-8-940405.5 5.5 控件数组控件数组控件数组的建立方法二2在程序运行时增加控件数组元素(1)在窗体上添加第一个控件,将其Index属性设置为0,Visible属性设置为False。(2)在编写事件代码中,用Load方法添加新的控件数组元素,并将其Visible属性设置为True;用UnLoad方法可以删除控件数组元素。(3)设置其Left属性和Top属性。(4)当程序运行时,则会根据编程中的命令,添加或删除控件。1.1.控件数组控件数组的概念的概念2.2.控件数组控件数组的建立的建立2022-8-941415.5 5.5 控
42、件数组控件数组1.1.控件数组控件数组的概念的概念2.2.控件数组控件数组的建立的建立 建立一个含有三个命令按钮的控件数组,当单击某个命令按钮时,标签的背景分别显示不同的颜色。2022-8-942425.5 5.5 控件数组控件数组Load语句和UnLoad语句Load语句的一般格式为:Load Load 控件数组名控件数组名(下标下标)其中控件数组名为控件名称,如:Label1、Command1、Picture1等,下标为1、2、3等。UnLoad语句的一般格式为:UnLoad UnLoad 控件数组名控件数组名(下标下标)1.1.控件数组控件数组的概念的概念2.2.控件数组控件数组的建立的
43、建立2022-8-943435.5 5.5 控件数组控件数组 单击“添加图片”按钮,在窗体上增加一幅图片,单击“删除图片”按钮,在窗体上删除一幅图片,最多显示四幅图片。1.1.控件数组控件数组的概念的概念2.2.控件数组控件数组的建立的建立2022-8-944445.7 5.7 数组应用举例数组应用举例将输入的一维数组的数据逆序存放并输出。2022-8-94545 从键盘输入7个数据,从小到大排序。5.7 5.7 数组应用举例数组应用举例代码2022-8-94646选择排序:2022-8-94747冒泡原理:2022-8-94848求矩阵A的转置矩阵。矩阵矩阵A1234567895.7 5.7
44、 数组应用举例数组应用举例2022-8-94949 在一个二维数组中查找某个整数,若找到就显示该元素及其数组下标,若未找到则给出提示。5.7 5.7 数组应用举例数组应用举例2022-8-95050分别求下列矩阵两个对角线元素之和。5.7 5.7 数组应用举例数组应用举例1234567892022-8-95151 求下列两个矩阵之和。矩阵矩阵A矩阵矩阵B1 2 30 1 24 5 63 4 57 8 96 7 85.7 5.7 数组应用举例数组应用举例2022-8-95252 设要在一个具有设要在一个具有n个升序排列元素的一维数组中插入一个升序排列元素的一维数组中插入一个新的元素个新的元素k,
45、使原数组仍然是有序的。算法描述如下:,使原数组仍然是有序的。算法描述如下:(1)从第从第1个元素开始逐个与个元素开始逐个与k比较,一旦发现第比较,一旦发现第p个元素大于个元素大于k,则,则确定插入的位置为确定插入的位置为p,如果所有元素均小于,如果所有元素均小于k,则确定插入的位置为,则确定插入的位置为n+1。(2)重新定义数组大小,从第重新定义数组大小,从第n个元素到第个元素到第p个元素逐一向后移动一个元素逐一向后移动一个位置。个位置。(3)将将k赋值给第赋值给第p个元素,完成插入操作。个元素,完成插入操作。5.7 5.7 数组应用举例数组应用举例246108待插入元素待插入元素ka(1)a(2)a(3)a(4)a(5)a(6)72022-8-95353 在窗上画一个文本框一个图形框,和一在窗上画一个文本框一个图形框,和一个命令按钮,在文本框中输入一串字符,当单击个命令按钮,在文本框中输入一串字符,当单击“统计统计”按钮时,统计各字母出现的次数,并在按钮时,统计各字母出现的次数,并在图形框中输出。输入不区分大小写字母图形框中输出。输入不区分大小写字母5.7 5.7 数组应用举例数组应用举例