VB程序设计第二版第六章

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
25
6.3 数组的基本操作
定义数组之后,就可以对数组进行各种 操作了,如输入数组元素的值,对数组元素 进行各种处理,输出数组元素的值等。 对数组的处理通常要结合循环进行,用循 环变量控制数组元素的下标,以便能够按一 定次序、有选择、快速地处理数组。
26
6.3.1 数组的输入和输出
输入:输入数组元素值可以有多种方法。 例如,可以使用赋值语句、文本框、 InputBox函数、Array函数等,可以对数组 的个别元素输入数据,也可以对整个数组 输入数据。 输出:数组元素的值,可以使用Print方法 输出数组元素,也可以使用控件输出数组 元素,如使用标签、文本框等。

20Βιβλιοθήκη Baidu
【例】
Dim A() As Integer Private Sub Command1_Click() N=4 ReDim A(N) For I = 0 To N A(I) = 1: Print A(I); Next I Print N=8 ReDim A(N) For I = 0 To N 运行时输出结果为: 1 1 1 1 1 Print A(I); Next I 0 0 0 0 0 0 0 0 0 End Sub
18
例如,定义一个动态数组Eng,用来保存学 生的英语成绩。
Dim Eng( ) As Integer
Private Sub Command1_Click( ) N = Val(InputBox("请指定学生人数")) ReDim Eng(1 To N) …… End Sub
19
说明: 可以用ReDim语句多次改变数组元素的数目及维 数的数目。 在定义动态数组的两个步骤中,如果用步骤1定义 了数组的类型,则不允许用步骤2改变类型。 每次执行ReDim语句时,如果不使用Preserve,则 数组中的值全部被重新初始化;如果使用Preserve, 则保留数组中原有的元素值。 使用Preserve关键字的Redim语句只能改变多维数 组中最后一维的上界,且不能改变维数的数目。
a11 a 21 a 31
a12 a 22 a 32
a13 a 23 a 33
a( 1,1) a(1,2) a(1,3)
a( 2,1) a(2,2) a(2,3)
a( 3,1) a(3,2) a(3,3)
用二维数组A表示该矩阵的所有元素,用第 1个下标表示元素所在的行号,用第2个下标 表示元素所在的列号,则A(I,J)表示第I 行第J列的元素 A。
第6章 数组
6.1 数组的基本概念 6.2 数组的定义
6.3 数组的基本操作
6.4 数组基本操作示例 6.5 控 件 数 组
1
6.1 数组的基本概念
6.1 数组的基本概念
通常使用一个变量只能存储一个数据,
对于只处理少量数据的问题,使用若干变量
就可以很方便地处理这些数据。
在实际问题中往往会有大量的、性质相
对静态数组使用Erase语句:数值型数组元
31
【例6-4】 将例6-2中的数组在窗体中按5行5列输出。 Private Sub Form_Activate() Cls For i = 1 To 5 For j = 1 To 5 Print a(i, j); Next Print Next End Sub
32
6.3.2 数组的删除
格式:
Erase 数组名
11
6.2.1 静态数组的定义
静态数组是指数组元素的个数在程序的执 行期间不能改变的数组。 格式:
Public|Private|Dim 数组名(维数定义) [As 类型],… 功能:声明数组,包括确定数组的名称、维 数、每一维的大小和数组元素的类型,并为 数组分配存储空间。
12
说明:
(1)数组的作用域 在模块通用声明段使用Public语句建立一 个全局级数组(注意,不能在窗体模块使 用Public定义数组); 在模块通用声明段中使用Private语句或 Dim语句建立一个模块级数组 在过程中用Dim/static语句建立一个过程级 数组。 (2)“数组名”必须符合标识符的命名规 则。 13

3

下标变量:每个数组元素用来保存一个数
据,其使用与简单变量类似,在简单变量
允许出现的多数地方也允许出现数组元素。
例如,可以通过X=90给简单变量X赋值,
同样也可以通过Eng(1)=90给数组元素Eng(1)
赋值,所以,数组元素也称为下标变量。
4
注意: (1)要用圆括号把下标括起来。例如,将X(8) 表示成:X[8]、X{8}、或X8都是错误的。 (2)下标可以是常量、变量或表达式,其值必 须是整数,否则将被自动四舍五入为整数。

27
【例6-1】 随机产生10个两位整数,放入数组a中。 考虑到要在不同的过程中使用数组,所以首先在模 块的通用段声明数组: Dim a(1 To 10) As Integer 随机整数的生成由窗体的Load事件代码完成: Private Sub Form_Load() Randomize For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 Next End Sub
1 1 1 1 10 0 0 0
22
6.2.3 用户自定义类型的数组
用户自定义类型的数组:指数组中的每个 元素的类型都是用户自定义类型。 例如: 学生成绩表
学 号 01 02 … 姓 名 张三 李四 … 数 学 89 78 … 英 语 90 93 …
23
(1)可以定义数据类型StudScore:
Type StudScore StudNumber As String * 2 StudName As String * 10 Math As Integer English As Integer End Type (2)定义一个具有StudScore类型的数组: Dim Score(1 To 40) As StudScore
10
6.2 数组的定义
数组在使用之前必须先定义(声明) , 定义数组的主要目的是为数组分配存储空间。
数组名:存储空间的名称; 数组元素:存储空间的每一个单元。每个单元 的大小与数组的类型有关。
按数组占用存储空间的方式不同,Visual Basic有两种数组:
静态数组 动态数组
两种数组的定义方法不同,使用方法也略 有不同。
(3)下标的最小取值称为下界,下标的最大取 值称为上界,下界和上界的大小在定义数组时确 定。引用数组元素时,下标必须在其下界和上界 之间。
(4)数组名的命名规则与简单变量的命名规则 相同。
5
6.1.2 数组的类型
VB中数据类型较多,相应的数组类型也有多 种,可以声明任何基本数据类型的数组,包 括用户自己定义类型和对象变量,但是一个 数组中的所有元素应该具有相同的数据类型。 特殊情况:当数据类型为variant时,各个元 素能够包含不同类型的数据。
24
(3)引用第i个学生的信息: Score(1).StudNumber = "01" Score(1).StudName = "张三" Score(1).Math = 89 Score(1).English = 90
或写成: With Score(1)
.StudNumber = "01" .StudName = "张三" .Math = 89 .English = 90 End With
同的、有序的数据需要处理。使用数组,结
合循环,在多数场合下可以很方便地表示和 处理这种数据。
2
6.1.1 数组与数组元素
数组名:数组用于表示一组类型相同的有 序的数,这一组数用一个统一的名称来表 示,称为数组名。例如,100个学生的英 语成绩,可以统一取名为Eng。 数组元素:数组中的每一个元素称为数组 元素。表示成:数组名(下标)。 例如,用Eng(1)表示第一个学生的英语成 绩(下标为1),用Eng(100)表示第100个 学生的英语成绩(下标为100)。
28
多维数组元素的输入通过多重循环来实现。 由于VB中的数组是按行存储的,因此一般把 控制数组第1维的循环变量放在最外层的循 环中。 【例6-2】 设有一个5×5的方阵,其中的元 素是由计算机随机生成的小于100的整数。 考虑到要在不同的过程中使用数组,所以首 先在模块的通用段声明数组: Dim a(5,5) As Integer
15
数组元素的个数:
数组元素的个数等于每一维的大小之积, 即n维数组元素个数为: (上界1-下界1+1)× (上界2-下界2+1) ×…× (上界n-下界n+1)
16
6.2.2 动态数组的定义
动态数组是指在程序执行过程中数组元素 的个数可以改变的数组。 使用动态数组就可以在任何时候改变其大 小,并且可以在不需要时清除动态数组所占 的存储空间。
8
一维数组示例:
例如:一班40名学生的英语成绩可以表示成
Eng(1)、Eng(2)、Eng(3)、…、Eng(40),用
Eng(1)表示1号学生的成绩,用Eng(2)表示2号
学生的成绩……,这样处理起来很直观,需
要引用第I个学生的成绩时,直接使用Eng(I)
即可。
9
二维数组示例:
设有一个3行3列的矩阵:
14
例1:要存储100个学生的英语成绩,可以定义 一维数组Eng如下: Dim Eng(1 to 100) As Integer 或: Option Base 1 Dim Eng(100) As Integer 例2:存储一个3行3列的矩阵,定义二维数组A 如下: Dim A(1 To 3, 1 To 3) As Single
6
6.1.3 数组的形式
VB中支持两种数组:静态数组和动态数组。 前者指的是数组元素个数固定不变,而后者 的大小在运行时可变。
7
6.1.4 数组的维数
数组中的元素可以用一个下标来定位,也 可以用多个下标来定位。 数组的维数:下标个数 一维数组: 由一个下标组成。 如 A(2),C(6) 二维数组: 由两个下标组成。 如 B(2,3) 三维数组: 由三个下标组成。 如 G(3,4,23) 三维以上的数组称为多维数组,最多60维
(3)“维数定义”形式为: [下界1 To] 上界1,[下界2 To] 上界2,… VB默认下界值为0,可以使用Option Base语 句将默认下界修改为1
Option Base {0|1} (4)“类型”:Integer、Long、Single、 Double、Boolean、String、String*n、 Currency、Byte、Date、…… 在编译时为静态数组分配固定大小的存储空 间,在运行期间静态数组的大小不能改变。
29
方阵的生成由窗体的Load事件代码完成: Private Sub Form_Load() Randomize For i = 1 To 5 For j = 1 To 5 a(i,j) = Int(Rnd * 99) + 1 Next Next End Sub
30
【例6-3】 将例6-1中的数组在窗体按3行3列输出。 Private Sub Form_Activate() Cls Print For i = 1 To 9 If i Mod 3 = 0 Then Print a(i) Else Print a(i); " "; End If Next End Sub
17
定义动态数组需要分两步完成: 1.在模块级或过程级定义一个无下标的数组: Public|Private|Dim 数组名()[As 类型],… 2.在过程级定义数组的实际大小。 ReDim [Preserve] 数组名(维数定义) [As 类型],…

ReDim语句只能出现在过程中。 “维数定义”通常包含变量或表达式,但 其中的变量或表达式应有明确的值。
21
改为:
Dim A() As Integer Private Sub Command1_Click() N=4 ReDim A(N) For I = 0 To N A(I) = 1: Print A(I); Next I Print N=8 ReDim Preserve A(N) For I = 0 To N Print A(I); Next I 运行时输出结果为: End Sub 1 1 1 1 1
相关文档
最新文档