《Visual Basic 2005编程基础与项目实践_04.ppt》由会员分享,可在线阅读,更多相关《Visual Basic 2005编程基础与项目实践_04.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举 前面已经介绍了前面已经介绍了Visual Basic 2005的基本数据类型,的基本数据类型,但在实际的编程过程中,会发现仅仅使用这些数据类型但在实际的编程过程中,会发现仅仅使用这些数据类型是远远不够的。例如要处理是远远不够的。例如要处理100个同学的姓名、学号以及个同学的姓名、学号以及成绩,不难看出,使用基本变量是难以解决的。为此,成绩,不难看出,使用基本变量是难以解决的。为此,Visual Basic 2005引入了数组、结构和枚举等复合数据类引入了数组、结构和枚举等复合
2、数据类型。型。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举本章学习目标本章学习目标(1)掌握数组的概念、数组初始化的方法。)掌握数组的概念、数组初始化的方法。(2)熟练掌握静态数组和动态数组的概念和应用。)熟练掌握静态数组和动态数组的概念和应用。(3)掌握结构类型的定义方法以及如何声明和使用结构)掌握结构类型的定义方法以及如何声明和使用结构变量。变量。(4)理解枚举类型的定义方法。)理解枚举类型的定义方法。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚
3、举数组数组 计算机处理的数据各种各样,这些数据根据是否有序可以计算机处理的数据各种各样,这些数据根据是否有序可以分为两类:分为两类:(1)无序性数据:仅与取值有关,与其所在的位置无关。)无序性数据:仅与取值有关,与其所在的位置无关。(2)有序性数据:不仅与取值有关,而且与其所在的位)有序性数据:不仅与取值有关,而且与其所在的位置有关。置有关。在程序设计中,利用简单变量可解决很多处理无序性数据在程序设计中,利用简单变量可解决很多处理无序性数据的问题,但对于有序性数据,使用简单变量处理将是一的问题,但对于有序性数据,使用简单变量处理将是一件十分复杂的事。为此,需要引入功能更强的数据类型件十分复杂的
4、事。为此,需要引入功能更强的数据类型数组。数组。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举数组数组 将一组有序的、个数有限的、数据类型相同的数据组合作将一组有序的、个数有限的、数据类型相同的数据组合作为一个整体,用一个统一的名字(数组名)来表示,这为一个整体,用一个统一的名字(数组名)来表示,这些有序数据的全体则称为一个数组。些有序数据的全体则称为一个数组。下面列举了几组可以与不可以构成数组的数据:下面列举了几组可以与不可以构成数组的数据:1,2,3,4,5,6,7,8 可以构成数组,可以构成数组,整型数组整型数组 A
5、,B,C,D,E 可以构成数组,字符可以构成数组,字符串型数组串型数组 12,abc,True 不可以构成数不可以构成数组,数据类型不一致组,数据类型不一致 Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举数组元素、下标数组元素、下标 在同一数组中,构成该数组的数据称为数组元素。如在上在同一数组中,构成该数组的数据称为数组元素。如在上面列举的几组数据中:面列举的几组数据中:1是第一个数组的元素,是第一个数组的元素,B是第是第二个数组的元素。二个数组的元素。前面说过,前面说过,Visual Basic 2005中用一个统一的名
6、字(数组中用一个统一的名字(数组名)来表示数组,如果要访问数组中的数组元素,就需名)来表示数组,如果要访问数组中的数组元素,就需要将数组名与下标结合起来。所谓要将数组名与下标结合起来。所谓“下标下标”,就是指数,就是指数组元素在该数组中的索引值,在组元素在该数组中的索引值,在Visual Basic 2005中,中,数组元素的索引值是从数组元素的索引值是从0开始的,如:开始的,如:0,1,2,3,4,5,。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举数组的类型数组的类型 数组的类型是指构成数组的元素的数据类型(构成同一数
7、数组的类型是指构成数组的元素的数据类型(构成同一数组的所有数组元素的数据类型必须一致),它可以是任组的所有数组元素的数据类型必须一致),它可以是任何的基本数据类型,如:整型、字符串型等;也可以是何的基本数据类型,如:整型、字符串型等;也可以是用户自定义类型,如结构、枚举等。用户自定义类型,如结构、枚举等。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举数组的维数数组的维数 数组中下标的个数称为数组的维数。如果数组中的所有元素,都能按数组中下标的个数称为数组的维数。如果数组中的所有元素,都能按行(或列)顺序排成一行(或一列),
8、则只需要用一个下标便能标行(或列)顺序排成一行(或一列),则只需要用一个下标便能标识其所在的位置,这样的数组称为一维数组。如:识其所在的位置,这样的数组称为一维数组。如:A,B,C,D,E 如果数组中的所有元素,能按行、列顺序排成一个矩阵,那就必须用如果数组中的所有元素,能按行、列顺序排成一个矩阵,那就必须用两个下标来标识它们的位置,这样的数组称为二维数组。两个下标来标识它们的位置,这样的数组称为二维数组。依次类推,需要依次类推,需要3个下标的数组,称为三维数组;数组有多少个下标,个下标的数组,称为三维数组;数组有多少个下标,就称为多少维数组,二维或以上维数的数组称为多维数组。但通常就称为多少
9、维数组,二维或以上维数的数组称为多维数组。但通常超过三维的数组就很少使用了。超过三维的数组就很少使用了。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举数组的形式数组的形式 在在Visual Basic 2005中,根据数组元素的个数是否有限,分为两种形式中,根据数组元素的个数是否有限,分为两种形式的数组:的数组:(1)静态数组:数组元素的个数固定不变,声明时指定元素的个数。)静态数组:数组元素的个数固定不变,声明时指定元素的个数。静态数组通常用于处理那些元素个数相对稳定的数据,例如:对静态数组通常用于处理那些元素个数相对稳
10、定的数据,例如:对100个整型数据的排序,因为其元素个数固定为个整型数据的排序,因为其元素个数固定为100,所以应当使用,所以应当使用静态数组来解决。静态数组来解决。(2)动态数组:数组元素的个数可以在运行时改变,声明时不指定)动态数组:数组元素的个数可以在运行时改变,声明时不指定元素的个数。动态数组通常用于处理那些元素个数需要改变的数据,元素的个数。动态数组通常用于处理那些元素个数需要改变的数据,例如:输入项数,对数列例如:输入项数,对数列1、2、3、5、8、求和,因为其元素求和,因为其元素个数是随着用户的输入而改变的,所以应当使用动态数组来解决。个数是随着用户的输入而改变的,所以应当使用动
11、态数组来解决。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举 数组的声明数组的声明 声明一个数组的语法格式为:声明一个数组的语法格式为:Dim ()As 说明:说明:为必选项,它跟普通变量一样,必须遵循为必选项,它跟普通变量一样,必须遵循Visual Basic 2005标识符规则;标识符规则;是可选项,表示数组的维数,如定义二维或二维以是可选项,表示数组的维数,如定义二维或二维以上的数组,下标与下标之间用逗号隔开,声明时下标值为数组元素上的数组,下标与下标之间用逗号隔开,声明时下标值为数组元素下标的最大值,例如:声明一个
12、下标的最大值,例如:声明一个10个元素的数组,其下标值应该为个元素的数组,其下标值应该为9(因为数组元素的下标从(因为数组元素的下标从0开始)。开始)。As 为可选项,表示数组的类型,如省略则为为可选项,表示数组的类型,如省略则为Object型。型。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举数组的初始化数组的初始化 给数组中的各个数组元素赋初值,称为数组的初始化。在给数组中的各个数组元素赋初值,称为数组的初始化。在Visual Basic 2005中,可以在声明动态数组时给其初始化。如:中,可以在声明动态数组时给其初始
13、化。如:声明一维动态单精度型数组声明一维动态单精度型数组Score,并初始化,并初始化Dim score()As Single=90.0,85.5,68.0,52.5,76.0 声明二维动态整型数组声明二维动态整型数组b,并初始化,表示,并初始化,表示4.1.1 小节中的矩阵小节中的矩阵Dim b(,)As Integer=1,2,3,4,2,3,4,5,3,4,5,6 声明一维动态字符串型数组声明一维动态字符串型数组letterStr,并初始化,并初始化Dim letterStr()As String=A,B,C,D,E Visual Basic 2005 编程基础与项目实践编程基础与项目实
14、践第第04章章 数组、结构和枚举数组、结构和枚举数组元素的访问数组元素的访问 数组声明以后,就可以通过数组元素在数组中对应的索引数组声明以后,就可以通过数组元素在数组中对应的索引值(即下标)来访问,如上面声明的三个数组值(即下标)来访问,如上面声明的三个数组Score、b、LetterStr,以下列举几个访问其元素的例子:,以下列举几个访问其元素的例子:Score(2)表示数组表示数组Score 中索引值为中索引值为2的元素,的元素,即即68.0 b(1,2)表示数组表示数组b 中第中第1、2索引值分别为索引值分别为1、2(即第二行第三列)的元素,即(即第二行第三列)的元素,即4 Letter
15、Str(3)表示数组表示数组LetterStr 中索引值为中索引值为3 的的元素,即元素,即D Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举动态数组动态数组 在使用数组时,有时在程序设计阶段并不知道数组的大小,在使用数组时,有时在程序设计阶段并不知道数组的大小,从而无法正确声明数组的大小。如果声明太小,则无法从而无法正确声明数组的大小。如果声明太小,则无法满足程序要求;如果声明太大,那么当然可以满足程序满足程序要求;如果声明太大,那么当然可以满足程序的要求,但运行时存放该数组的内存被长期占用,导致的要求,但运行时存放该数
16、组的内存被长期占用,导致系统效率降低。当遇到这种情况时,就需要使用动态数系统效率降低。当遇到这种情况时,就需要使用动态数组,因为动态数组允许程序员在程序运行的过程中根据组,因为动态数组允许程序员在程序运行的过程中根据需要改变数组的大小。需要改变数组的大小。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举ReDim语句语句 动态数组的声明在动态数组的声明在4.1.2节已经介绍过,这里将介绍如何利用节已经介绍过,这里将介绍如何利用ReDim语句分配实际的元素语句分配实际的元素个数,个数,ReDim语句的语法格式为:语句的语法格式
17、为:ReDim Preserve ()说明:其中说明:其中Preserve关键字为可选项,其作用是在重新声明数组时,在重新声明的数组关键字为可选项,其作用是在重新声明数组时,在重新声明的数组中复制原数组中的元素。即仅改变数组的大小,不丢失原数据。若对多维数组使用中复制原数组中的元素。即仅改变数组的大小,不丢失原数据。若对多维数组使用Preserve关键字,则只能改变最后一维的大小,其他维不变,否则会发生错误。关键字,则只能改变最后一维的大小,其他维不变,否则会发生错误。使用使用ReDim语句要注意以下几点:语句要注意以下几点:(1)ReDim语句仅可以在过程级出现,但不可以在类或模块级代码区使
18、用语句仅可以在过程级出现,但不可以在类或模块级代码区使用ReDim 语句语句来重新声明数组。来重新声明数组。(2)ReDim语句只是更改已被正式声明的数组的一个或多个维数的大小,不能更改该语句只是更改已被正式声明的数组的一个或多个维数的大小,不能更改该数组的维数。数组的维数。(3)ReDim语句无法更改数组中元素的数据类型,和语句无法更改数组中元素的数据类型,和Dim语句声明数组的区别在于无语句声明数组的区别在于无法在法在ReDim语句中初始化重新声明的数组。语句中初始化重新声明的数组。(4)可以多次地重定义数组大小。)可以多次地重定义数组大小。Visual Basic 2005 编程基础与项
19、目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举ReDim语句示例语句示例 Dim weekStr()As String=星期一星期一,星期二星期二,星期三星期三ReDim Preserve weekStr(4)weekStr(3)=星期四星期四 weekStr(4)=星期五星期五上述代码等价于:上述代码等价于:Dim weekStr()As String=星期一星期一,星期二星期二,星期三星期三ReDim weekStr(4)weekStr(0)=星期一星期一 weekStr(1)=星期二星期二 weekStr(2)=星期三星期三 weekStr(3)=星期四星期四 w
20、eekStr(4)=星期五星期五Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举For Each语句语句 For Each.Next语句是专用于数组和集合的循环语句,类似于语句是专用于数组和集合的循环语句,类似于For.Next循环语句,通过循环语句,通过For Each.Next语句,可以十分方便地访语句,可以十分方便地访问数组中的每一个元素,其语法格式为:问数组中的每一个元素,其语法格式为:For Each In Exit For Next 说明:说明:代表数组中的每个元素。代表数组中的每个元素。为数组名,没有小括号和维
21、数。为数组名,没有小括号和维数。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举结构结构 结构是结构是Visual Basic 6.0中用户自定义类型的扩展,结构中中用户自定义类型的扩展,结构中除了字段外,还可以定义属性、方法和事件,对于每个除了字段外,还可以定义属性、方法和事件,对于每个成员可以定义不同的可访问性。一个结构可以实现一个成员可以定义不同的可访问性。一个结构可以实现一个或多个结构。当需要将一些相关联的信息保存在一起时或多个结构。当需要将一些相关联的信息保存在一起时就使用结构。例如:要知道一个学生的姓名、学号、性
22、就使用结构。例如:要知道一个学生的姓名、学号、性别、别、VB成绩等信息,就可以定义一个名为成绩等信息,就可以定义一个名为student的结的结构,包含这些不同的数据成员,这样比使用单独的变量构,包含这些不同的数据成员,这样比使用单独的变量存放这些信息要方便得多。存放这些信息要方便得多。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举结构的声明结构的声明 声明结构的语法如下:声明结构的语法如下:Dim|Public|Private|Friend Structure As As End Structure结构中的成员可以是数组,
23、也可以是结构。结构中的成员可以是数组,也可以是结构。定义上述定义上述student结构如下:结构如下:Structure student Dim name As String Dim no As String Dim sex As String Dim vbScore As SingleEnd StructureVisual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举建立和使用结构变量建立和使用结构变量 定义了结构后,可以像声明普通变量一样声明结构变量,如下面声明定义了结构后,可以像声明普通变量一样声明结构变量,如下面声明了一个了一
24、个student 类型的变量类型的变量liMing:Dim liMing As student同样,结构也可以作为数组元素的数据类型,如:同样,结构也可以作为数组元素的数据类型,如:Dim stu(10)As student 定义结构数组定义结构数组stu,数组大小为,数组大小为11声明了结构变量后,就可以访问其中某个字段,使用方法为:声明了结构变量后,就可以访问其中某个字段,使用方法为:.如:访问如:访问liMing 的姓名的方法为:的姓名的方法为:liMing.name 同理,同理,stu(5).no表示结构数组表示结构数组stu的第六个学生的学号,的第六个学生的学号,stu(10).vb
25、Score表示结构数组表示结构数组stu的最后一个学生的的最后一个学生的VB成绩。成绩。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举枚举枚举 在编程中有时会遇见在一些固定的有限个元素中取其一的在编程中有时会遇见在一些固定的有限个元素中取其一的情况,比如一周七天中的一天,一年十二个月中的一月情况,比如一周七天中的一天,一年十二个月中的一月等。要说明这些数据,使用一般变量或是结构都不合适,等。要说明这些数据,使用一般变量或是结构都不合适,在在Visual Basic 2005中定义了枚举类型来解决这类问题。中定义了枚举类型来
26、解决这类问题。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举枚举的声明枚举的声明 声明结构的语法如下:声明结构的语法如下:Public|Private|Protected|Friend|Protected Friend Enum As =End Enum说明:说明:As 为可选项,必须为整型数值类型,即:为可选项,必须为整型数值类型,即:Byte、Short、Long、Integer。缺省情况下为:。缺省情况下为:Integer。=为可选项,可以在定义常量成员时指定一个初值。如为可选项,可以在定义常量成员时指定一个初值。如
27、不指定,系统默认第一个成员为不指定,系统默认第一个成员为0,第二个为,第二个为1,依此类推。,依此类推。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举枚举其实就是一组相关的常量的集合,例如:可定义一个枚举来描述一周中枚举其实就是一组相关的常量的集合,例如:可定义一个枚举来描述一周中的七天,它包含七个常量成员,每个成员代表一周中的一天,如下:的七天,它包含七个常量成员,每个成员代表一周中的一天,如下:Public Enum weekDays Saturday Sunday=0 Monday Tuesday Wednesday
28、 Thursday Friday Invalid=-1End Enum上面的枚举中,上面的枚举中,Saturday是首个元素被默认为是首个元素被默认为0,Sunday也被指定为也被指定为0,因而,因而Monday为为1,Tuesday为为2,无效日期为,无效日期为-1。Visual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举使用枚举使用枚举 定义了枚举后,可以声明枚举型变量使用它,如:定义了枚举后,可以声明枚举型变量使用它,如:Dim myDay As weekDays请看下面的代码:请看下面的代码:Dim myDay As wee
29、kDays=weekDays.Friday 定义枚举变量定义枚举变量myDay并初始化并初始化 If myDay=weekDays.Saturday Or weekDays.Sunday Then 该条件等价于该条件等价于myDay=0 MessageBox.Show(双休日!双休日!)Else MessageBox.Show(工作日!工作日!)因为条件不成立,所以该语句因为条件不成立,所以该语句被执行被执行 End IfVisual Basic 2005 编程基础与项目实践编程基础与项目实践第第04章章 数组、结构和枚举数组、结构和枚举小结小结本章首先讨论了数组的概念,包括数组的定义、初始化
30、、本章首先讨论了数组的概念,包括数组的定义、初始化、静态数组、动态数组等。然后介绍了针对数组和集合的静态数组、动态数组等。然后介绍了针对数组和集合的循环语句循环语句For Each.Next的使用。接下来介绍了结构类的使用。接下来介绍了结构类型的概念,并通过实例讲述了结构类型数据的访问方法,型的概念,并通过实例讲述了结构类型数据的访问方法,最后介绍了枚举类型及其使用方法。最后介绍了枚举类型及其使用方法。重点及难点:重点及难点:(1)数组的概念、数组初始化的方法;)数组的概念、数组初始化的方法;(2)静态数组和动态数组的概念和应用;)静态数组和动态数组的概念和应用;(3)结构类型的定义方法以及如何声明和使用结构变量。)结构类型的定义方法以及如何声明和使用结构变量。