VB-第6章-数组及自定义类型PPT优秀课件

上传人:cl****1 文档编号:592586564 上传时间:2024-09-21 格式:PPT 页数:91 大小:729.50KB
返回 下载 相关 举报
VB-第6章-数组及自定义类型PPT优秀课件_第1页
第1页 / 共91页
VB-第6章-数组及自定义类型PPT优秀课件_第2页
第2页 / 共91页
VB-第6章-数组及自定义类型PPT优秀课件_第3页
第3页 / 共91页
VB-第6章-数组及自定义类型PPT优秀课件_第4页
第4页 / 共91页
VB-第6章-数组及自定义类型PPT优秀课件_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《VB-第6章-数组及自定义类型PPT优秀课件》由会员分享,可在线阅读,更多相关《VB-第6章-数组及自定义类型PPT优秀课件(91页珍藏版)》请在金锄头文库上搜索。

1、1VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型高级程序语言设计(高级程序语言设计( Visual BasicVisual Basic )第六章第六章 数组及自定义类型数组及自定义类型主讲教师主讲教师 胡胡 滨滨西安邮电学院计算机系西安邮电学院计算机系hubin_hubin_12VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的概念数组的概念若我们要求一个班若我们要求一个班100个学生的平均成绩,然个学生的平均成绩,然 后统计高于平均分的人数。后统计高于平均分的人数。按以前简单变量的使用和循环结构相结合,求按以前简单变量的使用和循环结构相结合,

2、求平均成绩程序段如下:平均成绩程序段如下: aver = 0 :sum = 0aver = 0 :sum = 0 For i = 1 To 100 For i = 1 To 100 mark = InputBox( mark = InputBox(输入输入 + i + + i + 位学生的成绩位学生的成绩) sum = sum + mark ) sum = sum + mark Next i Next i aver = sum / 100aver = sum / 100 23VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型若我们要求一个班若我们要求一个班100100个学生

3、的平均成绩,个学生的平均成绩,然然 后统计高于平均分的人数。后统计高于平均分的人数。 aver = 0 :sum = 0aver = 0 :sum = 0 For i = 1 To 100 For i = 1 To 100 mark = InputBox( mark = InputBox(输入输入 + i + + i + 位学生的成绩位学生的成绩) ) sum = sum + mark sum = sum + mark Next i Next i aver = sum / 100aver = sum / 100markmark是一个简单变量,存放的是最后一个学生的成绩。是一个简单变量,存放的是

4、最后一个学生的成绩。 已有知识解决方法:再重复输入成绩,带来两个问题:已有知识解决方法:再重复输入成绩,带来两个问题: (1 1)输入数据的工作量成倍增加;)输入数据的工作量成倍增加;(2 2)若本次输入的成绩与上次不同,则统计的结果不正确。)若本次输入的成绩与上次不同,则统计的结果不正确。 解决此问题的根本方法,引入解决此问题的根本方法,引入数组数组,始终保持输入的数据,始终保持输入的数据,一次输入,多次使用。一次输入,多次使用。34VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的概念数组的概念 数组用于表示一组性质相同的有序的数,这一组数用一个统数组用于表示一组

5、性质相同的有序的数,这一组数用一个统一的名称来代替,称为一的名称来代替,称为数组名数组名。数组名的命名规则与简单变。数组名的命名规则与简单变量的命名规则相同。量的命名规则相同。 数组中的每一个元素称为数组中的每一个元素称为数组元素数组元素。为了在处理时能够区。为了在处理时能够区分数组中的每一个元素,需要用一个索引号加以区别,该索分数组中的每一个元素,需要用一个索引号加以区别,该索引号称为引号称为下标下标。数组中的每一个元素可以用数组名和下标唯。数组中的每一个元素可以用数组名和下标唯一地表示,写成:一地表示,写成:数组名数组名( (下标下标) )。 45VBVB程序设计程序设计第六章第六章 数组

6、及自定义类型数组及自定义类型数组的概念数组的概念数组并不是一种数据类型,而是数组并不是一种数据类型,而是一组相同类型数据一组相同类型数据的的集合。用一个统一的名字(集合。用一个统一的名字(数组名)数组名)代表逻辑上相代表逻辑上相关的一批数据,每个元素用关的一批数据,每个元素用下标变量下标变量来区分;下标来区分;下标变量代表元素在数组中的位置。变量代表元素在数组中的位置。其表示形式:其表示形式: A(1) A(1),A(10)A(10) X(1,1), X1(1,10), X(2,10) X(1,1), X1(1,10), X(2,10) Y(0,0,0), Y(1,2,5) Y(0,0,0),

7、 Y(1,2,5)Dim mark(1 to 100) as integerDim mark(1 to 100) as integer56VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的概念数组的概念Visual Basic中的数组,按不同的方式可分为以下几中的数组,按不同的方式可分为以下几类:类:按数组的大小(元素个数)是否可以改变来分为:按数组的大小(元素个数)是否可以改变来分为:静态(定长)数组、动态(可变长)数组。静态(定长)数组、动态(可变长)数组。按元素的数据类型可分为:按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。数值型数组、

8、字符串数组、日期型数组、变体数组等。按数组的维数可分为:按数组的维数可分为:一维数组、二维数组、多维数组。一维数组、二维数组、多维数组。对象数组:对象数组:菜单对象数组、控件数组。菜单对象数组、控件数组。67VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的概念数组的概念 数组元素在程序中的使用与简单变量类似,在简单变数组元素在程序中的使用与简单变量类似,在简单变量允许出现的多数地方也允许出现数组元素。数组量允许出现的多数地方也允许出现数组元素。数组元素也称为下标变量。元素也称为下标变量。在表示数组元素时,应注意以下几点:在表示数组元素时,应注意以下几点: 1)要用圆

9、括号把下标括起来,不能用中括号或大括要用圆括号把下标括起来,不能用中括号或大括号代替,也不能省略圆括号。号代替,也不能省略圆括号。 2)下标可以是常量、变量或表达式,其值必须是整下标可以是常量、变量或表达式,其值必须是整数,否则将被自动四舍五入为整数。数,否则将被自动四舍五入为整数。 3)下标的最小取值称为下界,下标的最大取值称为下标的最小取值称为下界,下标的最大取值称为上界。在不加任何说明的情况下,数组的下界默认上界。在不加任何说明的情况下,数组的下界默认值为值为0。78VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的概念数组的概念n例如,例如,10001000个

10、学生的数学成绩,可以统一取名个学生的数学成绩,可以统一取名为为MScoreMScore。用。用MScore(1)MScore(1)表示第一个同学的数表示第一个同学的数学成绩学成绩( (下标为下标为1)1),nMScore(345)MScore(345)表示表示a a第第345345个同学的数学成绩个同学的数学成绩( (下下标为标为345)345)。 89VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的概念数组的概念数组的维数数组的维数 一个数组的元素只有一个下标,则称为一维数组。例如,一一个数组的元素只有一个下标,则称为一维数组。例如,一班班4040名同学的英语成绩

11、可以表示成名同学的英语成绩可以表示成G(1)G(1)、G(2)G(2)、G(3)G(40)G(3)G(40)。 用两个下标来表示元素的数组称为用两个下标来表示元素的数组称为二维数组二维数组。对于可以表示。对于可以表示成表格形式的数据,如矩阵、行列式等,用二维数组来成表格形式的数据,如矩阵、行列式等,用二维数组来表示是比较方便的。若要表示一到六班表示是比较方便的。若要表示一到六班( (设各班有设各班有4040人人) )共共240240个个学生的英语成绩,可以用二维数组表示学生的英语成绩,可以用二维数组表示G(6,40)G(6,40),第一个下标,第一个下标表示班级号,第二个下标表示学号,则一班表

12、示班级号,第二个下标表示学号,则一班3030号学生的成绩号学生的成绩可以表示成可以表示成G(1,30)G(1,30)。 根据需要,还可以使用三维数组、四维数组等,根据需要,还可以使用三维数组、四维数组等,VBVB最多允许最多允许有有6060维。维。910VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的定义数组的定义数组在使用之前必须先声明,声明数组的目的是为数组分配存数组在使用之前必须先声明,声明数组的目的是为数组分配存储空间,数组名即为这个存储空间的名称,而数组元素即为存储空间,数组名即为这个存储空间的名称,而数组元素即为存储空间的每一个单元。每个单元的大小与数组

13、的类型有关。储空间的每一个单元。每个单元的大小与数组的类型有关。例如,定义某数组例如,定义某数组X X为整型数组,共有为整型数组,共有1010个元素,则每个元素占个元素,则每个元素占2 2个字节,整个数组占个字节,整个数组占2020个字节的存储空间。个字节的存储空间。 按数组占用存储空间的方式不同,按数组占用存储空间的方式不同,VBVB有两种数组:有两种数组:固定大小的固定大小的数组和动态数组。数组和动态数组。两种数组的定义方法不同,使用方法也略有两种数组的定义方法不同,使用方法也略有不同。固定大小的数组是指数组元素的个数在程序的执行期间不同。固定大小的数组是指数组元素的个数在程序的执行期间不

14、能改变的数组。这种数组在编译阶段就已经确定了存储空不能改变的数组。这种数组在编译阶段就已经确定了存储空间,直到程序执行完毕。间,直到程序执行完毕。1011VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的定义数组的定义静态数组及声明静态数组及声明形式:形式: Dim Dim 数组名数组名( (下标下标1,1,下标下标2) As 2) As 类型类型 声明了数组的名、维数、大小、类型声明了数组的名、维数、大小、类型 维数:几个下标为几维数组,最多维数:几个下标为几维数组,最多6060维。维。 下标:下标: 下界下界 To To 上界上界 省略下界为省略下界为0 ,0 ,

15、必须为常必须为常数。数。 每一维大小:上界下界每一维大小:上界下界+1 +1 数组大小:数组大小: 每一维大小的乘积每一维大小的乘积 1112VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的定义数组的定义例:例:Dim mark(1 to 100) As IntegerDim mark(1 to 100) As Integer1213VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型一维数组的声明一维数组的声明Dim Dim 数组名数组名(toto)As )As 或:或:Dim Dim 数组名数组名(toto)例:例:Dim a(1 to 10)

16、 As Integer Dim a(1 to 10) As Integer 声明了声明了a a数组有数组有1010个元素个元素与上面声明等价形式:与上面声明等价形式: Dim a%(1 to 10) Dim a%(1 to 10) 1是下标的下界10是下标的上界数组元数的数据类型1314VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型一维数组的声明一维数组的声明说明:说明:1 1数组名的命名规则与变量的命名相同。数组名的命名规则与变量的命名相同。2 2数组的元素个数:上界数组的元素个数:上界- -下界下界+1+1。3 3缺省缺省 为为0 0,若希望下标从,若希望下标从1

17、1开始,可在模块的通用部分开始,可在模块的通用部分使用使用Option BaseOption Base语句将设为语句将设为1 1。其使用格式是:。其使用格式是: Option Base 0|1 Option Base 0|1 后面的参数只能取后面的参数只能取0 0或或1 1例如:例如: Option Base 1 Option Base 1 将数组声明中缺省将数组声明中缺省 下标设为下标设为1 14 4 和和 不能使用变量,必须是常量,常量可以是直不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。接常量、符号常量,一般是整型常量。1415VBVB程序设计程序设计第六章第六

18、章 数组及自定义类型数组及自定义类型一维数组的声明一维数组的声明5 5如果省略如果省略AsAs子句,则数组的类型为变体类型。子句,则数组的类型为变体类型。6 6数组中各元素在内存占一片连续的存储空间,一维数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序,如图数组在内存中存放的顺序是下标大小的顺序,如图5-15-1所示:所示:1516VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型二维数组的声明二维数组的声明声明格式如下:声明格式如下:Dim Dim 数组名数组名( to to , to to ) As ) As 其中的参数与一维数组完全相

19、同。其中的参数与一维数组完全相同。 例如:例如:Dim a(2,3) As SingleDim a(2,3) As Single 二维数组在内存的存放顺序是二维数组在内存的存放顺序是“先行后列先行后列”。例如数组。例如数组a a的的各元素在内存中的存放顺序是:各元素在内存中的存放顺序是:a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2)a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2) a(1,3)a(2,0)(2,1)a(2,2)a(2,3) a(1,3)a(2,0)(2,1)a(2,2)a(2,3) 1617VBVB程序设

20、计程序设计第六章第六章 数组及自定义类型数组及自定义类型二维数组的声明二维数组的声明Dim lArray( 0 To 3Dim lArray( 0 To 3, 0 To 4) As Long 0 To 4) As Long 共有共有 45 45个元素个元素 等价于等价于: Dim lArray(3: Dim lArray(3, 4) As Long 4) As Long 1718VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型二维数组的声明二维数组的声明注意:注意:(1)下界缺省为下界缺省为0,也可在重新定义数组的下界。,也可在重新定义数组的下界。例如:例如:Option

21、 Base 1(2)错误的声明,下标是变量错误的声明,下标是变量 n =Inputbox(输入输入n ):):Dim x(n) As Single (3)在数组声明中的下标说明了数组的整体,即每维的大小;在数组声明中的下标说明了数组的整体,即每维的大小; 而在程序其他地方出现的下标表示数组中的一个元素。两者而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。写法形式相同,但意义不同。 例如:例如:Dim x(10) As Integer 声明了声明了x数组有数组有11个元素个元素 x(10)=100 对对x(10)这个数组元素赋值这个数组元素赋值1819VBVB程序设

22、计程序设计第六章第六章 数组及自定义类型数组及自定义类型多维数组的声明多维数组的声明定义多维数组的格式如下:定义多维数组的格式如下:Dim Dim 数组名数组名( to to , to to ,) As ) As 例如:例如: Dim a(5,5,5) As IntegerDim a(5,5,5) As Integer 声明声明a a是三维数组是三维数组 Dim b(2,6,10,5) As IntegerDim b(2,6,10,5) As Integer 声明声明b b是四维数组是四维数组 1920VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型动态数组动态数组 动态

23、数组动态数组是指在程序执行过程中数组元素的个数可以是指在程序执行过程中数组元素的个数可以改变的数组。动态数组也叫可变大小的数组。改变的数组。动态数组也叫可变大小的数组。 n 使用动态数组就可以在任何时候改变其大小,并使用动态数组就可以在任何时候改变其大小,并且可以在不需要时清除动态数组所占的存储空间。且可以在不需要时清除动态数组所占的存储空间。因此,使用动态数组更加灵活、方便,并有助于高因此,使用动态数组更加灵活、方便,并有助于高效管理内存。效管理内存。2021VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型动态数组的建立及使用动态数组的建立及使用 建立动态数组包括声明和

24、大小说明两步:建立动态数组包括声明和大小说明两步: 1 1在使用在使用DimDim、PrivatePrivate或或PublicPublic语句声明括号内为语句声明括号内为空的数组。空的数组。格式:格式:Dim | Private|Public Dim | Private|Public 数组名()数组名()As As 数据类型数据类型 例:例:Dim a() As IntegerDim a() As Integer2 2在过程中用在过程中用ReDimReDim语句指明该数组的大小。语句指明该数组的大小。格式:格式:ReDim Preserve ReDim Preserve 数组名(下标数组名(

25、下标11,下标,下标22)例:例:Redim A(10) Redim A(10) Redim Preserve A(20)Redim Preserve A(20) Preserve参数:保留数组中原来的数据参数:保留数组中原来的数据 2122VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型说明说明(1 1)ReDimReDim语句是一个可执行语句,只能出现在过程中,并且语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。可以多次使用,改变数组的维数和大小。 (2 2)定长数组声时中的下标只能是常量,而动态数组)定长数组声时中的下标只能是常量,而

26、动态数组ReDim ReDim 语语句中的下标是常量,也可以是有了确定值的变量。句中的下标是常量,也可以是有了确定值的变量。 例:例: Private Sub Form_Click() Private Sub Form_Click() dim a() dim a() Dim N As IntegerDim N As Integer N=Val(InputBox(“ N=Val(InputBox(“输入输入N=N=?”)”) reDim a(N) As Integer reDim a(N) As Integer . . End sub End sub2223VBVB程序设计程序设计第六章第六章

27、数组及自定义类型数组及自定义类型说明说明(3 3)在过程中可以多次使用)在过程中可以多次使用ReDimReDim来改变数组的大小,也可改来改变数组的大小,也可改变数组的维数。变数组的维数。 例:例:ReDim x(10)ReDim x(10) ReDim x(20) ReDim x(20) x(20) = 30 x(20) = 30 Print x(20) Print x(20) ReDim x(20, 5) ReDim x(20, 5) x(20, 5) = 10 x(20, 5) = 10 Print x(20, 5) Print x(20, 5) (4 4)每次使用)每次使用ReDimR

28、eDim语句都会使原来数组中值丢失,可以在语句都会使原来数组中值丢失,可以在ReDimReDim后加后加Preserve Preserve 参数来保留数组中的数据。但此时只能参数来保留数组中的数据。但此时只能改变最后一维的大小。改变最后一维的大小。2324VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型若我们要求一个班若我们要求一个班100100个学生的平均成绩,然后统计高于个学生的平均成绩,然后统计高于平均分的人数。平均分的人数。aver = 0 aver = 0 sum = 0sum = 0 For i = 1 To 100 For i = 1 To 100 mark

29、 = InputBox( mark = InputBox(输入输入 + i + + i + 位学生的成绩位学生的成绩)sum = sum + mark sum = sum + mark Next i Next i aver = sum / 100 aver = sum / 100 2425VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型若我们要求一个班若我们要求一个班100100个学生的平均成绩,然后统计高于个学生的平均成绩,然后统计高于平均分的人数。平均分的人数。Dim aver!, sum!, i%, n%Dim mark(1 To 100) As Integerav

30、er = 0sum = 0n = 0 For i = 1 To 100 mark(i) = Int(Rnd * 101)sum = sum + mark(i)Next iaver = sum / 100For i = 1 To 100 If mark(i) aver Then n = n + 1 End If Next iPrint n, averFor i = 1 To 100Print mark(i)Next i2526VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的基本操作数组的基本操作 数组声明后,方可使用。可以对数组元素进行各种操数组声明后,方可使用。可以

31、对数组元素进行各种操作:作: 对数组元素赋值对数组元素赋值 进行各种表达式运算、排序、统计、输出进行各种表达式运算、排序、统计、输出 使用数组可以缩短和简化程序。使用数组可以缩短和简化程序。2627VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型一维数组元素的引用一维数组元素的引用数组必须先定义后使用数组必须先定义后使用使用形式:使用形式: 数组名数组名(下标下标) 其中:下标可以是整型变量、常量或表达式。其中:下标可以是整型变量、常量或表达式。例如:例如: 设有下面的数组设有下面的数组A(10),B(10) As Integer 则下面的语句都是正确的。则下面的语句都是

32、正确的。 A(1)=A(2)+B(1)+5 取数组元素运算取数组元素运算 A(i)=B(i) 下标使用变量下标使用变量 B(i+1)=A(i+2) 下标使用表达式下标使用表达式2728VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型一维数组的基本操作一维数组的基本操作 1. 1. 可通过循环给数组元素的初值可通过循环给数组元素的初值 For i = 1 To 10For i = 1 To 10 A A数组的每个元素值为数组的每个元素值为1 1 A(i)=1 A(i)=1 Next i Next i 2829VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义

33、类型一维数组的基本操作一维数组的基本操作 Array函数函数nArray函数可方便地对数组整体赋值,但它只能给函数可方便地对数组整体赋值,但它只能给声明声明Variant的变量或仅由括号括起的的变量或仅由括号括起的动态数组动态数组赋赋值。赋值后的数组大小由赋值的个数决定。值。赋值后的数组大小由赋值的个数决定。n 例如,要将例如,要将1,2,3,4,5,6,7 这些值赋值给数组这些值赋值给数组a,可使用下面的方法赋值。可使用下面的方法赋值。Dim a()A=array(1,2,3,4,5,6,7)Dim a A=array(1,2,3,4,5,6,7)2930VBVB程序设计程序设计第六章第六章

34、 数组及自定义类型数组及自定义类型一维数组的基本操作一维数组的基本操作 求数组的上界求数组的上界Ubound( )函数、函数、 下界下界 Lbound( )函数函数分别用来确定数组某一维的上界和下界值。分别用来确定数组某一维的上界和下界值。使用形式如下:使用形式如下: UBound(, ) LBound( , ) 其中:其中:必需的。数组变量的名称,遵循标准变量必需的。数组变量的名称,遵循标准变量命名约定命名约定。:可选的;一般是整型常量或变量。指定返回哪可选的;一般是整型常量或变量。指定返回哪一维的上界。一维的上界。1 表示第一维,表示第一维,2 表示第二维,如此等表示第二维,如此等等。如果

35、省略默认是等。如果省略默认是1。3031VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型一维数组的基本操作一维数组的基本操作 (2) Array(2) Array函数函数 Dim ib() As Variant Dim ib() As Variant ib = Array(abc, def, 67) ib = Array(abc, def, 67) For i = 0 To UBound(ib) For i = 0 To UBound(ib) Picture1.Print ib(i); ; Picture1.Print ib(i); ; Next I Next I注意:注

36、意: 利用利用ArrayArray对数组各元素赋值,声明的数组是可调数对数组各元素赋值,声明的数组是可调数组或连圆括号都可省,并且其类型只能是组或连圆括号都可省,并且其类型只能是VariantVariant。 数组的下界为零,上界由数组的下界为零,上界由ArrayArray函数括号内的参数个函数括号内的参数个数可决定,也可通过函数数可决定,也可通过函数UboundUbound获得。获得。3132VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型一维数组的基本操作一维数组的基本操作 2数组的赋值数组的赋值在在VB6.0中,提供了数组直接对数组的赋值。中,提供了数组直接对数组的

37、赋值。例如:例如: Dim a() As Variant, b() As Variant, i% a = Array(1, 2, 3, 4, 5) ReDim b(UBound(a) b = a注意:赋值号左边的数组只能声明为注意:赋值号左边的数组只能声明为Variant的可调数组的可调数组或简单变量或简单变量 3233VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组的输出数组的输出输出如图所示的下三角数据输出如图所示的下三角数据Dim sc(5,5) As Integer,i%,j%Dim sc(5,5) As Integer,i%,j%For i = 1 To 5

38、For i = 1 To 5 For j = 1 To i For j = 1 To i sc(i, j) = i * 5 + j sc(i, j) = i * 5 + j Print sc(i, j); ; Print sc(i, j); ; Next j Next j Print Print 换行换行Next INext I3334VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型求数组中最大元素及所在下标求数组中最大元素及所在下标Dim Max As Integer,iMax As Integer Max=A(1):iMax=1 For i = 2 To 10 If

39、A(i)Max ThenMax=A(i)iMax=i End If Next I3435VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型将数组元素倒置将数组元素倒置3536VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型将数组元素倒置将数组元素倒置For i =1 To 102 t=A(i) A(i)=A(10-i+1) A(10-i+1)=tNext I3637VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型将数组元素倒置将数组元素倒置Option Base 1Option Base 1Private Sub Command1

40、_Click()Private Sub Command1_Click()Dim i%, t%: Dim a(1 To 10) As IntegerDim i%, t%: Dim a(1 To 10) As IntegerFor i = 1 To 10For i = 1 To 10a(i) = i 1a(i) = i 1NextNextFor i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextFor i = 1 To 10 2For i = 1 To 10 2 t = a(i): a(i) = a(10 - i + 1): a(10

41、- i + 1) = t t = a(i): a(i) = a(10 - i + 1): a(10 - i + 1) = tNext iNext iPrintPrintFor i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextEnd SubEnd Sub3738VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型将数组元素倒置将数组元素倒置Option Base 1Option Base 1Private Sub Command1_Click()Private Sub Command1_Click()Dim i%,

42、 t%:Dim a() As VariantDim i%, t%:Dim a() As Varianta = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)a = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)For i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextFor i = 1 To 10 2For i = 1 To 10 2 t = a(i): a(i) = a(10 - i + 1): a(10 - i + 1) = t t = a(i): a(i) = a(10 - i

43、+ 1): a(10 - i + 1) = tNext iNext iPrintPrintFor i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextEnd SubEnd Sub3839VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型将数组元素倒置将数组元素倒置若将数组中前一半与后一半交换?若将数组中前一半与后一半交换?3940VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组排序(选择法)数组排序(选择法)算法思想:算法思想: 1 1)对有)对有n n个数的序列(存放在数组个数的序列(存

44、放在数组a(n)a(n)中),从中选出最中),从中选出最小(升序)或最大(降序)的数,与第小(升序)或最大(降序)的数,与第1 1个数交换位置;个数交换位置; 2 2)除第)除第1 1 个数外,其余个数外,其余n-1n-1个数中选最小或最大的数,与个数中选最小或最大的数,与第第2 2个数交换位置;个数交换位置; 3 3)依次类推,选择了)依次类推,选择了n-1n-1次后,这个数列已按升序排列。次后,这个数列已按升序排列。4041VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组排序(选择法)数组排序(选择法)算法思想:算法思想: 1 1)对有)对有n n个数的序列(存个

45、数的序列(存放在数组放在数组a(n)a(n)中),从中选中),从中选出最小(升序)或最大(降出最小(升序)或最大(降序)的数,与第序)的数,与第1 1个数交换个数交换位置;位置; 2 2)除第)除第1 1 个数外,其余个数外,其余n-n-1 1个数中选最小或最大的数,个数中选最小或最大的数,与第与第2 2个数交换位置;个数交换位置; 3 3)依次类推,选择了)依次类推,选择了n-1n-1次后,这个数列已按升序排次后,这个数列已按升序排列。列。4142VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组排序(选择法)数组排序(选择法)For i = 1 To n - 1 i

46、Min= i For j = i+1 To n If iA(j) iA(iMin) Then iMin = j Next j t= iA(i): iA(i) = iA(iMin) : iA(iMin) = t Next I 4243VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组排序(选择法)数组排序(选择法)Picture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As IntegerPicture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As IntegerFor i = 1 To 6For i = 1 To

47、6 ia(i) = Int(Rnd * 101) ia(i) = Int(Rnd * 101) Next NextFor i = 1 To 6For i = 1 To 6 Picture1.Print ia(i); Picture1.Print ia(i);NextNextPicture1.PrintPicture1.PrintFor i = 1 To 5For i = 1 To 5 imin = i imin = i For j = i + 1 To 6 For j = i + 1 To 6 If ia(j) ia(imin) Then imin = j If ia(j) ia(imin)

48、Then imin = j Next j Next j t = ia(i): ia(i) = ia(imin): ia(imin) = t t = ia(i): ia(i) = ia(imin): ia(imin) = tNext iNext i4344VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型排序(冒泡法)排序(冒泡法)算法思想:算法思想:( (将相邻两个数比较,小的调到前头将相邻两个数比较,小的调到前头) ) 1 1)有)有n n个数(存放在数组个数(存放在数组a(n)a(n)中),第一趟将每相邻两个中),第一趟将每相邻两个数比较,小的调到前头,经数比较,小的调

49、到前头,经n-1n-1次两两相邻比较后,最大的数次两两相邻比较后,最大的数已已“沉底沉底”,放在最后一个位置,小数上升,放在最后一个位置,小数上升“浮起浮起”; 2 2)第二趟对余下的)第二趟对余下的n-1n-1个数(最大的数已个数(最大的数已“沉底沉底”)按上)按上法比较,经法比较,经n-2n-2次两两相邻比较后得次大的数;次两两相邻比较后得次大的数; 3 3)依次类推,)依次类推,n n个数共进行个数共进行n-1n-1趟比较,在第趟比较,在第j j 趟中要进趟中要进行行n-jn-j次两两比较。次两两比较。4445VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型排序(冒

50、泡法)排序(冒泡法)选择法排序在每一轮排序时找最小选择法排序在每一轮排序时找最小( (递增次序递增次序) )数的下标,出了数的下标,出了内循环内循环( (一轮排序结束一轮排序结束) ),再交换最小数的位置;,再交换最小数的位置;而冒泡法排序在每一轮排序时只要将第一个与其他几个比较,而冒泡法排序在每一轮排序时只要将第一个与其他几个比较,只要次序不对,就交换,出了内循环,最小数已冒出。只要次序不对,就交换,出了内循环,最小数已冒出。4546VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型排序(冒泡法)排序(冒泡法)For i = 1 To 5 For j = 6 To i +

51、 1 Step -1 If ia(j) ia(j - 1) Then temp = ia(j) ia(j) = ia(j - 1) ia(j - 1) = temp End If Next jNext i4647VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组排序(冒泡法)数组排序(冒泡法)Picture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As IntegerPicture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As IntegerFor i = 1 To 6For i = 1 To 6 ia(i) =

52、Int(Rnd * 101) ia(i) = Int(Rnd * 101) Next NextFor i = 1 To 6For i = 1 To 6 Picture1.Print ia(i); Picture1.Print ia(i);NextNextPicture1.PrintPicture1.PrintFor i = 1 To 5For i = 1 To 5 For j = 6 To i + 1 Step -1 For j = 6 To i + 1 Step -1 If ia(j) ia(j - 1) Then If ia(j) ia(j - 1) Then temp = ia(j) t

53、emp = ia(j) ia(j) = ia(j - 1) ia(j) = ia(j - 1) ia(j - 1) = temp ia(j - 1) = temp End If End If Next j Next jNext iNext i4748VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组元素的插入与删除数组元素的插入与删除(1) (1) 插入插入 在有序数组在有序数组a(1 to n)(a(1 to n)(原有原有n n-1-1个元素个元素) )插入一个值插入一个值KeyKey元素,算元素,算法:法: 查找要插入的位置查找要插入的位置k k(1=1=k k=

54、n n-1-1) 腾出位置,把最后一个元素开始到第腾出位置,把最后一个元素开始到第k k个元素往后移动一个位个元素往后移动一个位置第置第k k个元素的位置腾出,就可将数据个元素的位置腾出,就可将数据KeyKey插入插入4849VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组元素的插入与删除数组元素的插入与删除Picture1.Cls:Dim a%(1 To 10), i%, k%Picture1.Cls:Dim a%(1 To 10), i%, k%For i = 1 To 9For i = 1 To 9 a(i) = (i - 1) * 3 + 1 a(i) = (

55、i - 1) * 3 + 1NextNextFor i = 1 To 10For i = 1 To 10 Picture1.Print a(i); Picture1.Print a(i);NextNextFor k = 1 To 9For k = 1 To 9 If 14 a(k) Then Exit For If 14 = A And c = A And c 0 Then Picture1.Print ; Chr$(j + 64); =; a(j);If a(j) 0 Then Picture1.Print ; Chr$(j + 64); =; a(j);NextNext7778VBVB程序

56、设计程序设计第六章第六章 数组及自定义类型数组及自定义类型大量数据的输入大量数据的输入输入一系列的数据,并将它们分离后存放在数组中。对输入的输入一系列的数据,并将它们分离后存放在数组中。对输入的数据允许修改和自动识别非数字数据。数据允许修改和自动识别非数字数据。 分析:分析: (1 1)利用文本框输入和编辑数据,输入时去除非法数字。)利用文本框输入和编辑数据,输入时去除非法数字。 (2 2)输入结束利用)输入结束利用RplaceRplace函数去除重复输入的分隔符;函数去除重复输入的分隔符; (3 3)对利用)对利用SplitSplit函数按分隔符分离,放到数组中;函数按分隔符分离,放到数组中

57、; (4 4)还可利用)还可利用JoinJoin函数将数组中各元素合并成一个字符串。函数将数组中各元素合并成一个字符串。7879VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型控件数组控件数组 应用程序中对于一些类型相同、功能相似的控件,可应用程序中对于一些类型相同、功能相似的控件,可将其定义成一个控件数组来实现。将其定义成一个控件数组来实现。和数组变量一样,控件数组中的每一个控件是该控件和数组变量一样,控件数组中的每一个控件是该控件数组的一个元素,表示为:数组的一个元素,表示为: ( () 同一控件数组名称相同,各控件同一控件数组名称相同,各控件( (数组元素数组元素)

58、 )的索的索引引( (下标下标) )不同,该索引由控件的不同,该索引由控件的IndexIndex属性决定。控属性决定。控件数组中可用的最大索引值为件数组中可用的最大索引值为3276732767。同一控件数组。同一控件数组中的不同控件可以有自己的属性设置值。中的不同控件可以有自己的属性设置值。 7980VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型控件数组控件数组 例:例: Private Sub cmdName _Click(Index As Integer) If Index=3 then 处理第四个命令按钮的操作处理第四个命令按钮的操作 End If End Sub

59、8081VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型控件数组的使用控件数组的使用同一个控件数组中的所有控件共享相同的事件过程。同一个控件数组中的所有控件共享相同的事件过程。控件数组的事件过程会返回一个参数控件数组的事件过程会返回一个参数IndexIndex,以表示当,以表示当前是在控件数组的哪一个控件上发生了该事件。前是在控件数组的哪一个控件上发生了该事件。SubPrivate Sub Command1_Click(Index As Integer)End Sub根据Index的值决定当前按下了哪一键8182VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及

60、自定义类型控件数组和一般数组的比较 控件数组 一般数组元素为一个控件,是一对象 元素可以是各种类型的数据下标可以不连续 下标必须连续只有一维 可以有多维可在空闲索引号位置上增加元素 只能在最未位置上加元素8283VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型建立含有四个命令按钮的控件数组,当单击某个建立含有四个命令按钮的控件数组,当单击某个命令按钮,分别显示不同的图形或结束操作。命令按钮,分别显示不同的图形或结束操作。 8384VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型建立含有四个命令按钮的控件数组,当单击某个建立含有四个命令按钮的控件数组,

61、当单击某个命令按钮,分别显示不同的图形或结束操作。命令按钮,分别显示不同的图形或结束操作。 Private Sub Command1_Click(Index As Integer) Private Sub Command1_Click(Index As Integer) Select Case Index Select Case Index Case 0 Case 0 画直线画直线 Case 1 Case 1 画矩形画矩形 Case 2 Case 2 画圆画圆 Case Else Case Else End End End Select End Select End Sub End Sub84

62、85VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型建立含有四个命令按钮的控件数组,当单击某个建立含有四个命令按钮的控件数组,当单击某个命令按钮,分别显示不同的图形或结束操作。命令按钮,分别显示不同的图形或结束操作。 Private Sub Command1_Click(index As Integer)Private Sub Command1_Click(index As Integer)Picture1.Cls:Picture1.FillStyle = 6Picture1.Cls:Picture1.FillStyle = 6Select Case indexSelec

63、t Case index Case 0 Case 0 Picture1.Print Picture1.Print 画直线画直线: Picture1.Line (2, 2)-(7, 7): Picture1.Line (2, 2)-(7, 7) Case 1 Case 1 Picture1.Print Picture1.Print 画矩形画矩形 Picture1.Line (2, 2)-(7, 7), , BF Picture1.Line (2, 2)-(7, 7), , BF Case 2 Case 2 Picture1.Print Picture1.Print 画圆画圆 Picture1.C

64、ircle (4.5, 4.5), 3.5, , , , 1.4 Picture1.Circle (4.5, 4.5), 3.5, , , , 1.4 Case Else Case Else End EndEnd SelectEnd SelectEnd SubEnd SubPrivate Sub Form_Load()Private Sub Form_Load() Picture1.Scale (0, 0)-(10, 10) Picture1.Scale (0, 0)-(10, 10)End SubEnd Sub8586VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型运行

65、时添加控件数组的步骤如下运行时添加控件数组的步骤如下1在窗体上画出某控件,设置该控件的在窗体上画出某控件,设置该控件的Index值为值为0,表示该控件为数组,表示该控件为数组,这是建立的第一个元素,并可这是建立的第一个元素,并可对一些取值相同的属性进行设置,如所有文本框的对一些取值相同的属性进行设置,如所有文本框的字体都取一样大小。字体都取一样大小。2在编程时通过在编程时通过Load方法添加其余的若干个元素,方法添加其余的若干个元素,也可以通过也可以通过Unload方法删除某个添加的元素。方法删除某个添加的元素。8687VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型运行

66、时添加控件数组的步骤如下运行时添加控件数组的步骤如下Load方法和方法和Unload方法的使用格式:方法的使用格式: Load 控件数组名控件数组名() Unload 控件数组名控件数组名()其中,其中,为整型数据。表示控件数组的为整型数据。表示控件数组的某个元素。某个元素。3通过通过Left和和Top属性确定每个新添加的控件属性确定每个新添加的控件数组元素在窗体的位置,并将数组元素在窗体的位置,并将Visible 属性设属性设置为置为True。8788VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型利用在运行时产生控件数组,构成一个国际象棋利用在运行时产生控件数组,构成

67、一个国际象棋棋盘。棋盘。 当单击棋格,显示对应的序号当单击棋格,显示对应的序号,并且将所并且将所有棋格颜色变反。有棋格颜色变反。8889VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组中常见错误和注意事项数组中常见错误和注意事项 1.1.静态数组声明下标出现变量静态数组声明下标出现变量 n = InputBox(“ n = InputBox(“输入数组的上界输入数组的上界”) ”) Dim a(1 To n) As Integer Dim a(1 To n) As Integer 2 2数组下标越界数组下标越界 引用的下标比数组声明时的下标范围大或小。引用的下标比数组

68、声明时的下标范围大或小。 Dim a(1 To 30) As Long, i%Dim a(1 To 30) As Long, i% a(1) = 1: a(2) = 1 a(1) = 1: a(2) = 1 For i = 2 To 30 For i = 2 To 30 a(i) = a(i - 2) + a(i - 1)a(i) = a(i - 2) + a(i - 1)Next iNext i8990VBVB程序设计程序设计第六章第六章 数组及自定义类型数组及自定义类型数组中常见错误和注意事项数组中常见错误和注意事项 3 3数组维数错数组维数错 数组声明时的维数与引用数组元素时的维数不一致。数组声明时的维数与引用数组元素时的维数不一致。 Dim a(3, 5) As Long Dim a(3, 5) As Long a(i)=10 a(i)=10 4 4AarryAarry函数与函数与SplitSplit函数使用问题函数使用问题 只能对只能对VariantVariant的变量或动态数组赋值。的变量或动态数组赋值。 5 5获得数组的上界、下界获得数组的上界、下界 Ubound Ubound 、LboundLbound函数函数90个人观点供参考,欢迎讨论

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号