数组与自定义数据类型.ppt

上传人:za****8 文档编号:16590894 上传时间:2020-10-16 格式:PPT 页数:42 大小:237.50KB
返回 下载 相关 举报
数组与自定义数据类型.ppt_第1页
第1页 / 共42页
数组与自定义数据类型.ppt_第2页
第2页 / 共42页
数组与自定义数据类型.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
第 5章 数组与自定义数据类型 前面章节中所用的数值型 、 字符型 、 布尔类型等数据类型称 为 VB的标准数据类型 , 通过一个变量存取一个数据 , 该类变量 称为简单变量 。 例如求 3名同学的平均身高时 , 就可定义同类 型的变量 a1、 a2和 a3表示 3名同学的身高 , 但如果要求 100名同 学的平均身高 , 采用 100个简单变量表示 100名同学的身高 , 在 数据存储与处理时就比较繁琐 。 又如 , 在描述一个人的基本情 况时 , 可能会涉及到 “ 姓名 、 性别 、 出生日期 、 电话号码 、 身 高 、 婚姻状况 ” 等数据 , 这些数据类型不同 , 但却相互关联 , 如果使用不同类型的简单变量 , 在数据存储和处理时也会带来 诸多的不便 。 通常 , 简单变量用于解决一些数据量小且处理简 单的问题 , 对于那些描述具有某种关联的批量数据时 , 应采用 VB提供的数组和用户自定义数据类型两种数据结构 。 5.1 数组 1 数组的基本概念 数组是 VB提供的一种数据结构。用统一的名称来代表具有 相同性质的一组数,该名称为数组名。数组中的每一个元素称 为数组元素。为了区分数组中的每一个元素,需要用一个索引 号区别,该索引号称为下标。数组中的每一个元素可以用数组 名和下标惟一表示。每个数组元素和一个普通变量一样能存放 一个数据。 5.1 数组 1 数组的基本概念 数组的特点: (1) 数组由若干个数组元素组成。数组元素的表示方法为:数 组名后跟圆括号和下标 , 如 a(3)就表示数组 a的元素。 (2) 数组元素在内存中有次序存放,下标代表它在数组中的位 置。如数组元素 a(3)表示数组 a中的第 3个元素(若下标从 0开始则为第 4个元素,下同),而数组元素 b(3,4)则表示 数组 b的第 3行第 4列的那个元素。 (3) 数组元素数据类型相同,在内存中存储是有规律的,占连 续的一段存储单元。例如一个整型数组 a,有 3个元素 a(1)、 a(2)和 a(3),那么 a(1)、 a(2)和 a(3)的数据类型均 为整型,若已知 a(1)在内存中的存储单元地址编号为 3001H, a(2)在内存中的存储单元地址必然为 3003H(因 为一个整型数据占两个字节), a(3)在内存中的存储单元 地址为 3005H。 5.1 数组 1 数组的基本概念 在表示数组元素时,应注意以下几点: (1) 用圆括号把下标括起来,不能使用中括号或大括号代替, 圆括号也不能省略。 (2) 下标可以是常量、变量或表达式,其值为整数,如常量、 变量或表达式的值为小数时,将自动 “ 四舍五入 ” 。 (3) 下标的最小取值称为下界,下标的最大取值称为上界。在 不加任何说明的情况下,数组元素下标的下界默认为 0。 5.1 数组 2 数组的声明 在 VB中,使用数组前要先进行声明,以使 VB在遇到某个标 识符时,能将其当作数组来处理。 “ 先声明后使用,下标不能 越界 ” 是数组使用的基本原则。在用 Dim语句声明时就确定了 大小的数组,称为静态数组,静态数组在程序编译时分配存储 空间,一旦分配,数组的大小就不能再改变了。 5.1 数组 2 数组的声明 1)一维静态数组 格式: Dim 数组名(下界 To 上界) As 作用:声明数组具有 “ 上界下限 ” 个数组元素,这些元 素 按照下标由小到大的顺序连续存储在内存中。其中: 数组名 命名要符合变量命名规则。 下界 To 上界 称为维说明,确定数组元素下标的取值范 围(下标下界最小为 -32768,上界最大值为 32767)。下界默 认值为 0。下界和上界只能取直接常量或直接常量表达式、符 号常量或符号常量表达式,不能为变量或包含变量的表达式。 As 指明数组元素的类型,默认为变体数 据类型。 5.1 数组 2 数组的声明 2)二维静态数组 格式: Dim 数组名 (下界 1 To 上界 1,下界 2 To 上界 2 As 作用: 声明 (上界 1下限 1 )*(上界 2下限 2 )个连续的单元。 例如: Dim Larray(0 to 3, 0 to 4) As Long或 Dim Larray( 3, 4) As Long 声明了长整型的二维数组 Larray,第 1维下标范围为 0 3, 第 2维下标范围为 0 4,数组元素个数为 4*5个,每个元素占 4 个字节的存储空间,元素排列如表所示。 5.1 数组 2 数组的声明 静态数组声明的注意事项: (1) 用 “ Option Base 1”可设定数组元素下标下界值为 1, 以改变下界默认值为 0。该语句必须放在窗体或模块的通用声 明段中,否则会出现 “ 无效内部过程 ” 的错误。 例如: Option Base 1 Dim x(4) 声明数组 x下标下界为 1,因此 x具有 x(1)、 x(2)、 x(3)、 x(4) 4个数组元素,数组元素为变体类型数据。 5.1 数组 2 数组的声明 静态数组声明的注意事项: (2) 静态数组在同一个过程只能声明一次,否则会出现 “ 当前 范围内声明重复 ” 的提示信息。 例如: Private Sub Form_Click() Dim x(5) As Integer Dim x(5) As Single End Sub 在该过程中两次声明了静态数组 x。 5.1 数组 2 数组的声明 静态数组声明的注意事项: (3) 声明数组和声明变量一样,数组也有作用范围。如建立公 用数组,在标准模块的通用声明段用 Public语句声明;建立模 块级数组,在窗体的声明段用 Private或 Dim语句声明;建立过 程级数组,在过程中用 Dim或 Static声明。详细内容请看第 8章 变量的作用域。 (4) 声明数组后,各数组元素的初值与声明普通变量相同。 5.1 数组 2 数组的声明 3)动态数组声明 动态数组是指在程序执行过程中,数组元素的个数可以改 变的数组。和静态数组类似,也分为一维动态数组、二维动态 数组和三维动态数组。 动态数组在用 Dim语句声明数组时不给出数组的大小,程 序执行到 ReDim语句时才确定大小。创建动态数组通常分两步: 5.1 数组 2 数组的声明 3)动态数组声明 第 1步,在标准模块、窗体的通用程序段或过程,声明一 个省略维说明的数组,格式为: Dim 数组名() As 第 2步,根据应用需要,用 ReDim重新确定数组元素的个数,格 式为: ReDim Preserve 数组名(维说明) As 5.1 数组 2 数组的声明 3)动态数组声明 说明: (1) 维说明 通常包含变量或表达式,但其中的变量或表达式 应有明确的值。 (2) 关键字 Preserve 如果省略,重定义前数组元素的值全部 丢失, VB系统重新对数组元素进行初始化;如果使用了 Preserve,重定义前数组元素的值不丢失, VB系统保留原 数组元素的值。 在使用 Redim语句时请注意: Redim语句只能改变数组的大小,不允许改变数组的数据 类型。 5.1 数组 例 5-2 输入某门课 n个同学的成绩,输出高于平均分的成绩。 Dim aver!, i%, x!() 这里先声明一个空数组 n = Val(InputBox(请输入统计人数 , 输入框 , 1) ReDim x(1 to n) 根据实际人数声明数组大小 aver = 0 For i = 1 To n x(i) = InputBox(请输入第 ; Next i Print For i = 0 To UBound(b) Print b(i); ; Next i 注意: Array函数只能对一维动态数组赋值。若提前声明了数 组,类型必须为变体类型。 5.1 数组 3 数组的赋值 2)动态数组赋值 使用 Split()函数为动态数组赋值 Split()函数为数组元素赋值的基本方法是:将要赋值的 数据组成字符串,且数据之间用固定的分隔符(如 “ , ” )分 隔;再通过 Split()函数将其分离成逐个的数据后,赋给数组 各元素, Split()函数格式为: =Split( ,分隔符 ) 其中: 是一组为数组赋值的数据,数据之间用 固定的分隔符分隔 ,默认为 “ ” (一个空格字符)。 5.1 数组 3 数组的赋值 2)动态数组赋值 使用 Split()函数为动态数组赋值 注意: Split()函数要求所赋值的数组必须是动态数组,可以不 提前声明,如果提前声明则必须声明为字符型。该方法通常和 文本框配合使用解决大量数据处理问题。 5.1 数组 3 数组的赋值 2)动态数组赋值 使用 Split()函数为动态数组赋值 Split函数和 Array函数使用时应注意的问题: Split函数只能给字符型数组赋值;而 Array函数只能给变 体类型数组赋值。 Split和 Array函数均只能为一维数组赋值,如果要为二维 数组赋值,需要先将数据存储在一维数组中,再通过程序 的方法将一维数组的值赋值给二维数组。 用 Array函数赋值时,数组元素的最小下标受 Option Base 语句影响,当 “ Option Base 0”或默认情况下,数组元素 下标最小值为 0;当 “ Option Base 1”时,数组元素下标 最 小值为 1;用 Split函数为数组赋值时,数组元素的最小下 标与 Option Base 语句无关,不管 Option Base 语句设置 为 0还是 1,数组元素的最小下标均从 0开始。 5.1 数组 例 5-3 使用文本框录入大量的数据,将它们保存在一维数组 中,并打印输出(每行显示 10个数据)。 5.1 数组 例 5-3 使用文本框录入大量的数据,将它们保存在一维数组 中,并打印输出(每行显示 10个数据)。 Private Sub Command1_Click() Dim a$() a = Split(Text1.Text, ,) For i = 0 To UBound(a) Picture1.Print Tab(6 * (i Mod 10) + 1); a(i); Next i End Sub 5.1 数组 4 数组的输出 在上面的例子中已经看到,数组输出就是分别输出数组中 的各元素,采用循环或循环嵌套将数组中各元素逐一输出。 通常利用 For循环或 For循环嵌套,调用 Print方法实现将 数组元素值输出到窗体或图片框中。输出时可采用 Tab()函数 控制输出格式,使输出的数据清晰。以下程序是把随机函数产 生的 0, 99之间的随机整数,存入到二维数组中并输出。 5.1 数组 4 数组的输出 数组输出时的注意事项: (1) 采用循环控制结构输出数组中各元素中的值时,输出方法 在循环结构的位置要合理,避免下标超限现象。 5.1 数组 4 数组的输出 数组输出时的注意事项: (2)可以根据需要单个输出数组元素的值,但下标不能超限。 如:输出上例二维数组 a前三个元素,可使用语句: Print a(1, 1) ; a(1, 2) ; a(1, 2) 5.1 数组 4 数组的输出 数组输出时的注意事项: (3)不能通过数组名来输出数组中各元素的值。 如上述程序改为: Private Sub Form_Click() Dim a(5, 5) As Integer For i = 0 To 5 For j = 0 To 5 a(i, j) = Int(Rnd * 100) Next j Next i Print Tab(j * 8 + 1); a; End Sub 想通过数组名 a输出二维数组中的每一个元素,则是错误码的。 5.1 数组 4 数组的输出 数组输出时的注意事项: ( 4)要注意用 Tab()函数控制输出格式 为了使数组输出层次清晰,要注意使用 Tab()函数或使用其他 方法控制输出格式,实现行定位输出和换行输出。 5.1 数组 5 数组的应用举例 例 5-4 输入多名学生的一门课程的考试成绩(假设为整数), 统计各分数段学生人数。 5.1 数组 Private Sub Command1_Click() Dim a$() Dim x(0 To 10) As Integer 用于保存统计结果 a = Split(Text1, ,) For i = 0 To UBound(a) If (a(i) 0) Then k = a(i) 10 x(k) = x(k) + 1 End If Next i Print 统计结果如下: Print 100分的有: i * 10 + 9 Chr(j); =; a(j); ; Next j End Sub 5.2 数组控件 在应用程序开发中,往往要使用一些类型相同、功能相似 的控件,这些控件需要执行基本相同的操作,如果把事件代码 分别写在不同对象的事件过程中,会造成代码重复,给程序维 护带来了困难,而应用控件数组则能避免上述问题。 5.2 控件数组 1 控件数组的基本概念 控件数组由一组同类控件组成,它们共用一个控件,控件 各数组元素有不同的索引号(类似于数组元素的下标),该索 引由控件 Index属性决定,最大索引值为 32767。 控件数组中的各控件元素可以具有不同的属性值,但具有 相同的事件过程。例如:若 CmdName是具有 4个元素的命令按钮 控件数组,不管单击哪个命令按钮,都会调用同一个单击事件 过程,格式如下: Private Sub CmdName_Click(Index As Integer) End Sub 5.2 数组控件 2 建立控件数组的方法 1)设计时建立 步骤如下: (1) 在窗体上添加第一个控件,设置好名称和其它属性; (2) 选中该控件,进行复制和粘贴操作,系统会出现以下提示 信息: 单击 “ 是 ” 按钮,建立一个控件数组。通过若干次粘贴操作, 便可建立所需要的控件数组。 5.2 数组控件 2 建立控件数组的方法 2)在程序运行时建立 步骤如下: (1) 先建立第 1个控件数组元素:在窗体中添加第 1个控件,设 置其 Index属性为 0; (2) 在程序中用 Load方法添加其余的若干个元素,用 Unload方 法删除某个元素; (3) 新添的控件数组元素通过 Left和 Top属性值,确定它在窗 体上的具体位置。 (4) 设置其 Visible属性为 True,使其显示出来。 5.3 自定义数据类型 在应用程序开发中,往往要使用一些类型相同、功能相似 的控件,这些控件需要执行基本相同的操作,如果把事件代码 分别写在不同对象的事件过程中,会造成代码重复,给程序维 护带来了困难,而应用控件数组则能避免上述问题。 1 特点: 用于存贮不同数据类型的一组数据 学号 姓名 性别 出生日期 年龄 籍贯 0931 王 强 男 1984-10-25 20 陕西西安 0931 李小琴 女 1985-03-08 19 山东潍坊 0932 田 苗 女 1984-06-22 20 西藏拉萨 5.3 自定义数据类型 2 定义: Type As As As End Type 5.3 自定义数据类型 注意:自定义数据类型一般放在标准模块中,若放在窗体 的通用声明段中时,要在 Type前须加上 Private关键词。 Type As As As End Type 举例: Type Students Num As Integer Name As String * 20 Sex As String * 1 Birth As Data Age As Integer Jiguan As String * 50 End Type 注意:自定义类型一般应放在标准模块中, 其默认型为 Public 5.3 自定义数据类型 2 定义: 3 自定义类型的引用: 自定义类型必须先说明变量,再引用 Type Students Num As Integer Name As String * 20 Sex As String * 1 Birth As Data Age As Integer Jiguan As String * 50 End Type Dim Stud( 50) As Students 在标准模 块定义 5.3 自定义数据类型 4 用户自定义数据类型数组 用户自定义数据类型数组就是数组中的每个元素数据类型 均为用户自定义数据类型。用户自定义数据类型数组的步骤如 下: (1) 使用 Type语句定义自定义数据类型; (2) 使用数组定义语句定义自定义数据类型数组; 5.3 自定义数据类型
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!