VB数组讲解ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对数组元素的输入可以有多种方法: • 可以使用文本框 • InputBox函数 • 赋值语句 • Array函数
15
1.键盘输入——使用InputBox()函数实现。 例:静态数组的输入 Private Sub Form_Click() Dim A(1 To 10) As Integer, i As Integer For i = 1 To 10 A(i) = Val(InputBox(“请输入第" & i & " 个数 据", "输入")) Next i „„ End Sub
Dim S(2) As Integer 等价于:Dim S(1 to 2) As Integer,共有2个元素
13
三、 数组的基本操作
数组声明后,方可使用。可以对数组元素进行各种操作: • 对数组元素赋值 • 进行各种表达式运算、排序、统计、输出 使用数组可以缩短和简化程序。
14
(一)数组元素的输入
21
四、 数组应用举例
P84 例4-16
22
五、 控件数组
应用程序中对于一些类型相同、功能相似的控件,可将其 定义成一个控件数组来实现。和数组变量一样,控件数组中 的每一个控件是该控件数组的一个元素,表示为: <控件数组名> (<索引>) 同一控件数组名称相同,各控件(数组元素)的索引(下标) 不同,该索引由控件的Index属性决定。控件数组中可用的最 大索引值为32767。同一控件数组中的不同控件可以有自己的 属性设置值。 在设计时,使用控件数组添加控件所消耗的资源比直接 向窗体添加多个相同类型的控件消耗的资源要少。 当希望若干控件共享代码时,控件数组也很有用,因为 同一个控件数组中的不同控件共享相同的事件过程。
10
例 输入学生的人数,由计算机自动产生这若干个学生的成绩,并计 算平均分和高于平均分的人数,并将这两项放在该数组的最后。
mark(n+1)=aver/n Private Sub Form_Click() mark(n+2)=0 '单击命令按钮运行该事件函数 Dim mark() As Integer For i=1 To n '对于高于平均分的计数 If mark(i)>mark(n+1) Then Dim i% ,n% ,aver! mark(n+2)=mark(n+2)+1 n=InputBox("输入学生的人数") Next i ReDim mark(1 To n) For i=1 To n '声明存放n个学生成绩的数组 Print"mark("; i;")=";mark(i) aver=0 Next I For i= 1 To n mark(i)=Int(Rnd * 101) Print"平均分=";mark(n+1)," Print"高于平均分人数=";mark(n+2) '通过随机数产生0~100的成绩 End Sub aver=aver+mark(i) Next i '增加两个元素,存放平均分和高于平均 11 '分的人数,原来的学生成绩仍保留 ReDim Preserve mark(1 To n+2)
17
3.Array函数——整体赋值
VB提供了Array函数对数组进行初始化,在使用Array函 数之前必须先定义一数组变量,即用一变量表示数组,变 量名后没有括号,且类型为Variant型。 如:Dim Dat
然后使用Array函数进赋值:
Dat=Array(0,1,2,3,4,5,6,7,8,9) 系统根据Array函数的参数个数决定数组Dat的大小,并将 这些数据赋给对应的数组元素,数组元素的下标默认从0开 始,如这里Dat(0)=0,Dat(1)=1,„„Dat(9)=9
26
(二) 控件数组的使用
同一个控件数组中的所有控件共享相同的事件过程。 为了区分是哪个元素触发的事件,VB会把它的下标值传 送给事件过程,事件过程通过Index参数接收,并判断。在 Command1_Click事件过程中,通过Index的值来判断用户单 击了哪个按钮,并且在过程中进行相关的编程 。 Private Sub Command1_Click(Index As Integer) ……. End Sub 根据Index的值决定当前按下了哪一键
23
(一) 、控件数组的建立
在设计时,可以用以下三种方法建立控件数组。 1、将多个控件取相同的名称 操作步骤: 1)绘制或选择要作为一个控件数组的所有控件,必须保证 它们为同一类型的控件。 2)决定哪一个控件作为数组中的第一个元素,选定该控件 并将其Name属性值设置成数组名(或使用其原有的Name属性 值)。 3) 将其它控件的Name属性值改成同一名称。这时VB会显 示一个对话框,要求确认是否创建控件数组,选择“是”则 控件添加到控件数组中。
16
2.下标生成——主要用于数组元素与下标之间存在函 数关系 例:生成一维数组,元素为1、3、5、7„„ Private Sub Form_Click() Dim A(1 To 10) As Integer, i As Integer For i = 1 To 10 A(i) = 2*i-1 Next i „„ End Sub
9
(二)动态数组的声明
动态数组是在数组声明时未指定数组的大小,需要使用时 才用Redim语句指定大小。 定义动态数组需要分以下两步进行:
1) 定义一个没有下标的数组。 Dim<数组名>( ) [As <数据类型],…
2) 用ReDim语句分配数组的实际元素个数。 ReDim <数组名>(<维数定义>) [As <类型>],…
Score(1) Score(2) Score …… Score(100) 数组的内存表示
3
• 数组元素在程序中的使用与简单变量类似,在简单变量允 许出现的多数地方也允许出现数组元素。数组元素也称为下标 变量。 在表示数组元素时,应注意以下几点: 1)要用圆括号把下标括起来,不能用中括号或大括号代替, 也不能省略圆括号。 2)下标可以是常量、变量或表达式,其值必须是整数,否则 将被自动四舍五人为整数。
19
(三)数组元素的输出 1.一维数组 使用一重循环实现。 如: Private Sub Form_Click() Dim A(1 To 10) As Integer, i As Integer „„ '数组A的输入和处理 For i = 1 To 10 Print A(i), '在一行上显示 Next i „„ End Sub
12
(三)用Option Base语句设定下界的默认值
源自文库
VB中允许用户使用Option Base语句设定数组下标的默认值,格式如下: Option Base n
其中n为设定的下标下界,该语句应放置在模块的通用声明部分 如有:Option Base 1
则在该模块中使用的数组下界均为1,若有个别数组下界不是1,可以使用 “下界 to 上界”的格式重设它的下界
说明
1)ReDim 语 句 只 能 出 现 在 过 程 中 。 与 Dim 语 句 不 同 , ReDim语句是一个可执行语句。 2)可以用ReDim语句反复改变数组元素及维数的数目。 3)在定义动态数组的两个步骤中,如果用步骤(1)定义了数 组的类型,则不允许用步骤(2)改变类型。 4)每次执行ReDim语句时,当前存储在数组中的值会全部 丢失。VB重新对数组元素进行初始化,即将可变类型数组 元素值置为Empty,将数值型数组元素值置为0,将字符串 类型数组元素值置为零长度字符串。
• 数组用于表示一组性质相同的有序的数,这一组数用一 个统一的名称来代替,称为数组名。数组名的命名规则与简 单变量的命名规则相同。 • 数组中的每一个元素称为数组元素。为了在处理时能够 区分数组中的每一个元素,需要用一个索引号加以区别,该 索引号称为下标。数组中的每一个元素可以用数组名和下标 唯一地表示,写成:数组名(下标)。例如: score(5) • 数组的各个元素在内存中是连续存放的,数组名表示这 个连续数据区域的名称,下标表示该元素在内存中的位置
• 一个数组元素只有一个下标,则称为一维数组。例如,一班 40名同学的英语成绩可以表示成G(1)、G(2)、G(3)……G(40)。 • 用两个下标来表示元素的数组称为二维数组。对于可以表示 成表格形式的数据,如矩阵、行列式等,用二维数组来表示是 比较方便的。若要表示一到六班(设各班有40人)共240个学生的 英语成绩,可以用二维数组表示G(6,40),第一个下标表示班级 号,第二个下标表示学号,则一班30号学生的成绩可以表示成 G(1,30)。 • 根据需要,还可以使用三维数组、四维数组等,VB最多允许 有60维。
20
2.二维数组 使用二重循环按行和列显示。 Private Sub Form_Click() Dim C(1 To 10, 1 to 5) As Integer Dim i As Integer,j As Integer „„ '数组C的输入和处理 For i = 1 To 10 For j = 1 To 5 Print C(i,j), Next j Print '每行行末换行 Next i „„ End Sub
第4.4章
教学目的要求:
数 组
• 掌握数组和控件数组的概念及应用
教学重点:
• 数组和控件数组的应用
1
一、 数组的基本概念
少量的数据可以使用简单变量方便地存取或处理。 若数据量很大,采用这种处理方法几乎是难以做到的。 而数组可以很方便地处理这种大量的数据 。
数组是一组按一定规律进行排列的数据
2
24
例:
作同类控件 确定第一元素和Name
改Name为同一名称
25
2.复制现有的控件,并将其粘贴到窗体上 操作步骤: 1)绘制或选择要作为控件数组的第一控件。 2)选择“复制”,再选择“粘贴”。VB同样会显示一个 对话框,要求确认是否创建控件数组,选择“是”确定要 创建一个控件数组。 3.给控件设置一个Index属性 操作步骤: 1)绘制或选择要作为控件数组的第一控件。 2)在属性窗口中直接指定一个Index属性值(如设置为0) 3)使用以上两种方法之一添加数组中的其它控件。这时 VB不会显示对话框。
数组名(下标1[,下标2„])[As
如有二维数组定义: Dim A(-1 to 2,0 to 3) As Integer 第一维的大小为4,表示4行,第二维的大小为4,表示4列,则A数组中共 有4×4=16个元素
A(-1,0) A(0,0) A(1,0) A(2,0) A(-1,1) A(0,1) A(1,1) A(2,1) A(-1,2) A(0,2) A(1,2) A(2,2) A(-1,3) A(0,3) A(1,3) A(2,3)
7
(一)静态数组的声明 1.一维数组: 声明格式:Dim
数组名(下标)[As 类型名]
下标的格式为:[下界 to ]上界,若省略下界,则默认为0
如有数组定义: Dim A(-2 to 2) As Integer Dim B(2) As Integer
8
2.多维数组: 声明格式:Dim 类型名]
18
(二)数组元素的复制
数组元素的复制指将一个数组中的元素复制到另一个数 组的元素中。单个数组元素的复制可以像简单变量一样用 赋值语句实现,而不用考虑数组的维数是否相同。例如: A(1) = B(1,1) A(2) = B(2,2) 整个数组的复制,需要用循环来实现,例如,可以将一 个具有10个元素的一维数组A的所有元素赋给另一个一维 数组B: For I=1 To 10 B(I)=A(I) Next I
3)下标的最小取值称为下界,下标的最大取值称为上界。在 不加任何说明的情况下,数组的下界默认值为0。
4
例如,1000个学生的数学成绩,可以统一取名为MScore。 用MScore(1)表示第一个同学的数学成绩(下标为1), MScore(345)表示第345个同学的数学成绩(下标为345)。
5
数组的维数
6
二、 数组的声明
数组在使用之前必须先声明,声明数组的目的是为数组 分配存储空间,例如,定义某数组X为整型数组,共有10 个元素,则每个元素占2个字节,整个数组占20个字节的 存储空间。 数组的分类:根据数组在内存中分配空间在程序执行过 程中是否可变,将VB中的数组分为静态数组和动态数组。 静态数组不允许用户在定义后再在程序中修改数组的长度 和维数,而动态数组允许用户在定义后多次在程序中修改 数组的长度或维数
15
1.键盘输入——使用InputBox()函数实现。 例:静态数组的输入 Private Sub Form_Click() Dim A(1 To 10) As Integer, i As Integer For i = 1 To 10 A(i) = Val(InputBox(“请输入第" & i & " 个数 据", "输入")) Next i „„ End Sub
Dim S(2) As Integer 等价于:Dim S(1 to 2) As Integer,共有2个元素
13
三、 数组的基本操作
数组声明后,方可使用。可以对数组元素进行各种操作: • 对数组元素赋值 • 进行各种表达式运算、排序、统计、输出 使用数组可以缩短和简化程序。
14
(一)数组元素的输入
21
四、 数组应用举例
P84 例4-16
22
五、 控件数组
应用程序中对于一些类型相同、功能相似的控件,可将其 定义成一个控件数组来实现。和数组变量一样,控件数组中 的每一个控件是该控件数组的一个元素,表示为: <控件数组名> (<索引>) 同一控件数组名称相同,各控件(数组元素)的索引(下标) 不同,该索引由控件的Index属性决定。控件数组中可用的最 大索引值为32767。同一控件数组中的不同控件可以有自己的 属性设置值。 在设计时,使用控件数组添加控件所消耗的资源比直接 向窗体添加多个相同类型的控件消耗的资源要少。 当希望若干控件共享代码时,控件数组也很有用,因为 同一个控件数组中的不同控件共享相同的事件过程。
10
例 输入学生的人数,由计算机自动产生这若干个学生的成绩,并计 算平均分和高于平均分的人数,并将这两项放在该数组的最后。
mark(n+1)=aver/n Private Sub Form_Click() mark(n+2)=0 '单击命令按钮运行该事件函数 Dim mark() As Integer For i=1 To n '对于高于平均分的计数 If mark(i)>mark(n+1) Then Dim i% ,n% ,aver! mark(n+2)=mark(n+2)+1 n=InputBox("输入学生的人数") Next i ReDim mark(1 To n) For i=1 To n '声明存放n个学生成绩的数组 Print"mark("; i;")=";mark(i) aver=0 Next I For i= 1 To n mark(i)=Int(Rnd * 101) Print"平均分=";mark(n+1)," Print"高于平均分人数=";mark(n+2) '通过随机数产生0~100的成绩 End Sub aver=aver+mark(i) Next i '增加两个元素,存放平均分和高于平均 11 '分的人数,原来的学生成绩仍保留 ReDim Preserve mark(1 To n+2)
17
3.Array函数——整体赋值
VB提供了Array函数对数组进行初始化,在使用Array函 数之前必须先定义一数组变量,即用一变量表示数组,变 量名后没有括号,且类型为Variant型。 如:Dim Dat
然后使用Array函数进赋值:
Dat=Array(0,1,2,3,4,5,6,7,8,9) 系统根据Array函数的参数个数决定数组Dat的大小,并将 这些数据赋给对应的数组元素,数组元素的下标默认从0开 始,如这里Dat(0)=0,Dat(1)=1,„„Dat(9)=9
26
(二) 控件数组的使用
同一个控件数组中的所有控件共享相同的事件过程。 为了区分是哪个元素触发的事件,VB会把它的下标值传 送给事件过程,事件过程通过Index参数接收,并判断。在 Command1_Click事件过程中,通过Index的值来判断用户单 击了哪个按钮,并且在过程中进行相关的编程 。 Private Sub Command1_Click(Index As Integer) ……. End Sub 根据Index的值决定当前按下了哪一键
23
(一) 、控件数组的建立
在设计时,可以用以下三种方法建立控件数组。 1、将多个控件取相同的名称 操作步骤: 1)绘制或选择要作为一个控件数组的所有控件,必须保证 它们为同一类型的控件。 2)决定哪一个控件作为数组中的第一个元素,选定该控件 并将其Name属性值设置成数组名(或使用其原有的Name属性 值)。 3) 将其它控件的Name属性值改成同一名称。这时VB会显 示一个对话框,要求确认是否创建控件数组,选择“是”则 控件添加到控件数组中。
16
2.下标生成——主要用于数组元素与下标之间存在函 数关系 例:生成一维数组,元素为1、3、5、7„„ Private Sub Form_Click() Dim A(1 To 10) As Integer, i As Integer For i = 1 To 10 A(i) = 2*i-1 Next i „„ End Sub
9
(二)动态数组的声明
动态数组是在数组声明时未指定数组的大小,需要使用时 才用Redim语句指定大小。 定义动态数组需要分以下两步进行:
1) 定义一个没有下标的数组。 Dim<数组名>( ) [As <数据类型],…
2) 用ReDim语句分配数组的实际元素个数。 ReDim <数组名>(<维数定义>) [As <类型>],…
Score(1) Score(2) Score …… Score(100) 数组的内存表示
3
• 数组元素在程序中的使用与简单变量类似,在简单变量允 许出现的多数地方也允许出现数组元素。数组元素也称为下标 变量。 在表示数组元素时,应注意以下几点: 1)要用圆括号把下标括起来,不能用中括号或大括号代替, 也不能省略圆括号。 2)下标可以是常量、变量或表达式,其值必须是整数,否则 将被自动四舍五人为整数。
19
(三)数组元素的输出 1.一维数组 使用一重循环实现。 如: Private Sub Form_Click() Dim A(1 To 10) As Integer, i As Integer „„ '数组A的输入和处理 For i = 1 To 10 Print A(i), '在一行上显示 Next i „„ End Sub
12
(三)用Option Base语句设定下界的默认值
源自文库
VB中允许用户使用Option Base语句设定数组下标的默认值,格式如下: Option Base n
其中n为设定的下标下界,该语句应放置在模块的通用声明部分 如有:Option Base 1
则在该模块中使用的数组下界均为1,若有个别数组下界不是1,可以使用 “下界 to 上界”的格式重设它的下界
说明
1)ReDim 语 句 只 能 出 现 在 过 程 中 。 与 Dim 语 句 不 同 , ReDim语句是一个可执行语句。 2)可以用ReDim语句反复改变数组元素及维数的数目。 3)在定义动态数组的两个步骤中,如果用步骤(1)定义了数 组的类型,则不允许用步骤(2)改变类型。 4)每次执行ReDim语句时,当前存储在数组中的值会全部 丢失。VB重新对数组元素进行初始化,即将可变类型数组 元素值置为Empty,将数值型数组元素值置为0,将字符串 类型数组元素值置为零长度字符串。
• 数组用于表示一组性质相同的有序的数,这一组数用一 个统一的名称来代替,称为数组名。数组名的命名规则与简 单变量的命名规则相同。 • 数组中的每一个元素称为数组元素。为了在处理时能够 区分数组中的每一个元素,需要用一个索引号加以区别,该 索引号称为下标。数组中的每一个元素可以用数组名和下标 唯一地表示,写成:数组名(下标)。例如: score(5) • 数组的各个元素在内存中是连续存放的,数组名表示这 个连续数据区域的名称,下标表示该元素在内存中的位置
• 一个数组元素只有一个下标,则称为一维数组。例如,一班 40名同学的英语成绩可以表示成G(1)、G(2)、G(3)……G(40)。 • 用两个下标来表示元素的数组称为二维数组。对于可以表示 成表格形式的数据,如矩阵、行列式等,用二维数组来表示是 比较方便的。若要表示一到六班(设各班有40人)共240个学生的 英语成绩,可以用二维数组表示G(6,40),第一个下标表示班级 号,第二个下标表示学号,则一班30号学生的成绩可以表示成 G(1,30)。 • 根据需要,还可以使用三维数组、四维数组等,VB最多允许 有60维。
20
2.二维数组 使用二重循环按行和列显示。 Private Sub Form_Click() Dim C(1 To 10, 1 to 5) As Integer Dim i As Integer,j As Integer „„ '数组C的输入和处理 For i = 1 To 10 For j = 1 To 5 Print C(i,j), Next j Print '每行行末换行 Next i „„ End Sub
第4.4章
教学目的要求:
数 组
• 掌握数组和控件数组的概念及应用
教学重点:
• 数组和控件数组的应用
1
一、 数组的基本概念
少量的数据可以使用简单变量方便地存取或处理。 若数据量很大,采用这种处理方法几乎是难以做到的。 而数组可以很方便地处理这种大量的数据 。
数组是一组按一定规律进行排列的数据
2
24
例:
作同类控件 确定第一元素和Name
改Name为同一名称
25
2.复制现有的控件,并将其粘贴到窗体上 操作步骤: 1)绘制或选择要作为控件数组的第一控件。 2)选择“复制”,再选择“粘贴”。VB同样会显示一个 对话框,要求确认是否创建控件数组,选择“是”确定要 创建一个控件数组。 3.给控件设置一个Index属性 操作步骤: 1)绘制或选择要作为控件数组的第一控件。 2)在属性窗口中直接指定一个Index属性值(如设置为0) 3)使用以上两种方法之一添加数组中的其它控件。这时 VB不会显示对话框。
数组名(下标1[,下标2„])[As
如有二维数组定义: Dim A(-1 to 2,0 to 3) As Integer 第一维的大小为4,表示4行,第二维的大小为4,表示4列,则A数组中共 有4×4=16个元素
A(-1,0) A(0,0) A(1,0) A(2,0) A(-1,1) A(0,1) A(1,1) A(2,1) A(-1,2) A(0,2) A(1,2) A(2,2) A(-1,3) A(0,3) A(1,3) A(2,3)
7
(一)静态数组的声明 1.一维数组: 声明格式:Dim
数组名(下标)[As 类型名]
下标的格式为:[下界 to ]上界,若省略下界,则默认为0
如有数组定义: Dim A(-2 to 2) As Integer Dim B(2) As Integer
8
2.多维数组: 声明格式:Dim 类型名]
18
(二)数组元素的复制
数组元素的复制指将一个数组中的元素复制到另一个数 组的元素中。单个数组元素的复制可以像简单变量一样用 赋值语句实现,而不用考虑数组的维数是否相同。例如: A(1) = B(1,1) A(2) = B(2,2) 整个数组的复制,需要用循环来实现,例如,可以将一 个具有10个元素的一维数组A的所有元素赋给另一个一维 数组B: For I=1 To 10 B(I)=A(I) Next I
3)下标的最小取值称为下界,下标的最大取值称为上界。在 不加任何说明的情况下,数组的下界默认值为0。
4
例如,1000个学生的数学成绩,可以统一取名为MScore。 用MScore(1)表示第一个同学的数学成绩(下标为1), MScore(345)表示第345个同学的数学成绩(下标为345)。
5
数组的维数
6
二、 数组的声明
数组在使用之前必须先声明,声明数组的目的是为数组 分配存储空间,例如,定义某数组X为整型数组,共有10 个元素,则每个元素占2个字节,整个数组占20个字节的 存储空间。 数组的分类:根据数组在内存中分配空间在程序执行过 程中是否可变,将VB中的数组分为静态数组和动态数组。 静态数组不允许用户在定义后再在程序中修改数组的长度 和维数,而动态数组允许用户在定义后多次在程序中修改 数组的长度或维数