VB程序设计第3版第7章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数 组
第 七 章
如果下界省略, 如果下界省略,则使用默认下界 定义默认下界: Option Base {0|1} 定义默认下界 不加任何定义时,默认下界为0 不加任何定义时,默认下界为 数组元素个数: 数组元素个数 (上界 下界 上界1-下界 上界2-下界 上界 下界1+1)*(上界 下界 上界 下界2+1)*… 类型> 4)<类型>: Integer Long Single Double Boolean String String*n Curency Byte Date Variant Object 用户定义类型…… 用户定义类型
3
例: 矩阵
第 七 章
b 11 b 21 b 31
b 12 b 22 b 32
b 13 b 23 b 33
数
矩阵中各元素b 可表示成: 矩阵中各元素 11--b33可表示成
组
B(1,1) B(1,2) B(1,3) B(2,1) B(2,2) B(2,3) B(3,1) B(3,2) B(3,3)
4
第 七 章
数 组
数组名:一组数用一个统一的名称表示。 数组名 一组数用一个统一的名称表示。 一组数用一个统一的名称表示 数组元素(下标变量 下标变量): 数组元素 下标变量 数组中的每一个元素 表示成: 数组名(下标 下标) 表示成 数组名 下标 下标的取值可以是常量、变量、 下标的取值可以是常量、变量、表达式 如: G(8) B(I) C(3+K) 下标还可以是下标变量 如: A(A(5)) 令A(5)=4 则 A(A(5))=A(4) 每个数组元素用来保存一个数据, 每个数组元素用来保存一个数据,其使用 与简单变量类似。 与简单变量类似。 例如,G(8)=87 例如, 表示给数组元素G(8)赋值。 赋值。 表示给数组元素 赋值 5
14
第 七 章
数 组
在预先不知道要处理的数据量有多大时, 在预先不知道要处理的数据量有多大时,如果使 用静态数组, 用静态数组,就需要在声明数组时使数组的大小尽 可能达到最大,以适应不同的数据量。 可能达到最大,以适应不同的数据量。因为静态数 组在整个程序的执行过程中一直占用存储空间, 组在整个程序的执行过程中一直占用存储空间,因 此会浪费一定的内存空间, 此会浪费一定的内存空间,过度使用静态数组会影 响整个系统的性能。 响整个系统的性能。 在解决实际问题时, 在解决实际问题时,所需要的数组到底应该有多 大才合适,有时可能不得而知, 大才合适,有时可能不得而知,所以希望能够在运 行时改变数组的大小。使用动态数组就可以在任何 行时改变数组的大小。 时候改变其大小, 时候改变其大小,并且可以在不需要时清除动态数 组所占的存储空间。因此,使用动态数组更加灵活、 组所占的存储空间。因此,使用动态数组更加灵活、 方便,并有助于高效管理内存。 方便,并有助于高效管理内存。
7
7.2 数组的定义
第 七 章
数组在使用之前必须先定义(声明) 数组在使用之前必须先定义(声明)。 定义 定义数组的目的是为数组分配存储空间 目的是为数组分配存储空间, 定义数组的目的是为数组分配存储空间, 数组名即为这个存储空间的名称, 数组名即为这个存储空间的名称,而数组 元素即为存储空间的每一个单元。 元素即为存储空间的每一个单元。 每个单元的大小与数组的类型有关。 每个单元的大小与数组的类型有关。 例如,定义某数组X为整型 为整型( 例如,定义某数组 为整型(Integer)数 ) 共有10个元素 则每个元素占2个字节 个元素, 个字节, 组,共有 个元素,则每个元素占 个字节, 则所有数组元素占20个字节 个字节。 则所有数组元素占 个字节。 按数组占用存储空间的方式不同, 按数组占用存储空间的方式不同,分为两 种数组:静态数组和动态数组。 种数组:静态数组和动态数组。两种数组 的定义方法不同,使用方法也略有不同。 的定义方法不同,使用方法也略有不同。 8
15
7.2.2 动态数组的定义
第 七 章
1. 定义动态数组分以下两步进行 定义动态数组分以下两步进行: 1) 在模块级或过程级定义一个没有下标的数 模块级或过程级定义一个没有下标的数 组: Public|Private|Dim 数组名 数组名()[As 类型 类型],… 例:Dim G() As Integer 2) 在过程级使用 过程级使用 使用ReDim语句定义数组的实际 语句定义数组的实际 大小 ReDim [Preserve] 数组名 维数定义 数组名(维数定义 维数定义) [As 类型 类型],… 例: ReDim G(1 To 100) As Integer ReDim Preserve G(1 To 100) As Integer
12
第 七 章
数 组
例: Dim C(9) As Integer 一维整型数组;下界0,上界为9 一维整型数组;下界 ,上界为 元素: 元素:C(0) C(1) C(2) …… C(9) 例: Dim A(-4 TO 10) As Integer 一维整型数组;下界 -4,上界 10 一维整型数组; , 元素 A(-4) A(-3) ... A(0) A(1) ... A(10) 例: DIM M(-3 TO 10) 一维可变类型数组 例: CONST Y1=10 CONST Y2=50 DIM ABC(Y1 TO Y2) AS INTEGER
3. 说明 1) Public|Private|Dim: )
第 七 章
在标准模块的通用声明段使用 标准模块的通用声明段使用Public语 的通用声明段使用 语 句建立一个全局级数组; 句建立一个全局级数组; 在模块的通用声明段使用Private语句或 语句或 在模块的通用声明段使用 Dim语句建立一个模块级数组; 语句建立一个模块级数组; 语句建立一个模块级数组 在过程中用Dim语句建立一个过程级数 语句建立一个过程级数 在过程中用 组。 2)数组名:需遵循变量命名约定。 )数组名:需遵循变量命名约定。 3)“维数定义”: ) 维数定义” [下界 To] 上界 下界 To] 上界 下界1 上界1,[下界 下界2 上界2,… 10 下界
11
数 组
第 七 章
数 组
5)数组在定义后自动被初始化 ) 例如: 例如: 将数值型数组元素值置为0; 将数值型数组元素值置为 ; 将字符串类型数组元素值置为零长度字符 串 6)静态数组被定义后,VB为其分配固定大 为其分配固定大 )静态数组被定义后, 为其分配 小的存储空间,在运行期大小不能改变。 小的存储空间,在运行期大小不能改变。
17
第 七 章
数 组
每次执行ReDim语句时,如果不使用Preserve关 语句时,如果不使用 每次执行 语句时 关 键字,当前存储在数组中的值会全部丢失。 键字,当前存储在数组中的值会全部丢失。 Visual Basic重新对数组元素进行初始化,如将 重新对数组元素进行初始化, 重新对数组元素进行初始化 数值型数组元素值置为0, 数值型数组元素值置为 ,将可变长度字符串类 型数组元素值置为零长度字符串。 型数组元素值置为零长度字符串。 Preserve为可选的关键字。有时,希望改变数组 为可选的关键字。 为可选的关键字 有时, 的大小又不丢失数组中原有的数据, 的大小又不丢失数组中原有的数据,使用带 Preserve关键字的 关键字的ReDim语句就可以做到这一点。 语句就可以做到这一点。 关键字的 语句就可以做到这一点 使用Preserve关键字的 关键字的Redim语句只能改变多维 使用 关键字的 语句只能改变多维 数组中最后一维的上界, 数组中最后一维的上界,且不能改变维数的数 如果改变了其他维或最后一维的下界, 目。如果改变了其他维或最后一维的下界,那 么运行时就会出错。 么运行时就会出错。
16
第 七 章
数 组
2. 说明 ReDim语句只能出现在过程中。 语句只能出现在过程中。 语句只能出现在过程中 维数定义: 维数定义:常包含具有明确值的变量或表 达式。 Байду номын сангаас式。 可以用ReDim反复改变数组元素及维数的 可以用 反复改变数组元素及维数的 数目。 数目。 若用步骤1定义了类型 则不许用步骤2改 定义了类型, 若用步骤 定义了类型,则不许用步骤 改 变类型。 变类型。
6
7.1.2 数组的维数
第 七 章
数组的维数: 数组的维数:下标个数 一维数组: 由一个下标组成。 一维数组: 由一个下标组成。 如 A(2),C(6) 二维数组: 由两个下标组成。 二维数组: 由两个下标组成。 如 B(2,3) 三维数组: 由三个下标组成。 三维数组: 由三个下标组成。 如 G(3,4,23) 三维以上的数组称为多维数组,最多60 60维 三维以上的数组称为多维数组,最多60维 通常也将二维数组的第一个下标叫行下标, 通常也将二维数组的第一个下标叫行下标, 第二个下标叫列下标。 第二个下标叫列下标。
7.1.1 数组与数组元素
第 七 章
定义: 一组性质相同 有序的数 性质相同的 定义 一组性质相同的有序的数 例如, 全班40名同学的英语成绩 名同学的英语成绩: 例如, 全班 名同学的英语成绩: G(1) G(2) G(3) …… G(40) 所有班级(如 个班 每班40人 同学的英语成绩 个班,每班 同学的英语成绩: 所有班级 如6个班 每班 人)同学的英语成绩 表示1: 表示 G(1) G(2) G(3) … G(240) 表示2: 表示 G(1,1) G(1,2) … G(1,40) G(2,1) G(2,2) … G(2,40) … G(6,1) G(6,2) … G(6,40)
13
第 七 章
数 组
例: Dim B(-1 to 7,0 to 3) As String → DIM B(-1 To 7,3) As String 二维字符串类型数组 第一维:下界 下界-1,上界 第一维 下界 上界 7; 第二维: 下界0,上界 第二维 下界 上界 3 元素: 元素: B(-1,0) B(-1,1) B(-1,2) B(-1,3) B(0,0) B(0,1) B(0,2) B(0,3) ... B(7,0) B(7,1) B(7,2) B(7,3)
第7 章
数
第 七 章
组
本章要点: 本章要点: 数组的基本概念 数组的定义 数组的操作(输入、输出、删除等) 数组的操作(输入、输出、删除等) 数组应用举例 控件数组
1
7.1 数组的基本概念
第 七 章 前面的各种问题中,一般只涉及少量的数据, 前面的各种问题中,一般只涉及少量的数据, 这些数据使用简单变量就可以很方便地进行存取 或处理。但是, 或处理。但是,在实际问题中往往会有大量相关 的数据需要处理。例如,要处理全校3000个学生 的数据需要处理。例如,要处理全校 个学生 的数学成绩,如果使用简单变量,就要引入3000 的数学成绩,如果使用简单变量,就要引入 个不同的变量来存储这些数据。这样显然太繁琐, 个不同的变量来存储这些数据。这样显然太繁琐, 如果数据量再大, 如果数据量再大,采用这种处理几乎是难以做到 另外,这种数据除了量比较大以外, 的。另外,这种数据除了量比较大以外,各数据 在整组数中的位置是明确的,即数据是有序的。 在整组数中的位置是明确的,即数据是有序的。 这种顺序使用简单变量难以体现, 这种顺序使用简单变量难以体现,而使用本章要 介绍的数组, 介绍的数组,在多数场合可以很方便地处理这种 大量的性质相同的有序数。 大量的性质相同的有序数。 2
7.2.1 静态数组的定义
第 七 章
1. 格式 Public|Private|Dim 数组名 维数定义 数组名(维数定义 维数定义) [As 类型 类型],… 2. 功能 声明数组名称、维数、维大小、类型。 声明数组名称、维数、维大小、类型。 为数组分配存储空间。 为数组分配存储空间。 定义数组G保存全班40名同学的英语成绩 例:定义数组 保存全班 名同学的英语成绩 定义数组 保存全班 Dim G( 1 To 40) As Integer 定义数组B,保存3行 列的矩阵 列的矩阵的各元素 例:定义数组 ,保存 行3列的矩阵的各元素 定义数组 Dim B(1 To 3, 1 To 3) 9
注意: 注意:
要用圆括号把下标括起来
第 七 章
例如, 表示成: 例如,将X(8)表示成 表示成 X[8]、X{8}、或X8都是错误的。 、 都是错误的。 、 都是错误的 下标必须是整数,否则将被自动四舍五 下标必须是整数,
数
入为整数。 入为整数。
组
下标的最小取值称为下界, 下标的最小取值称为下界,下标的最大 下界 上界。 取值称为上界 取值称为上界。数组元素的下标必须在 其下界和上界之间,否则将会出错。 其下界和上界之间,否则将会出错。