VB数组、结构与枚举VB编程.ppt_第1页
VB数组、结构与枚举VB编程.ppt_第2页
VB数组、结构与枚举VB编程.ppt_第3页
VB数组、结构与枚举VB编程.ppt_第4页
VB数组、结构与枚举VB编程.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论