visualbasic程序设计教案:数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

§3.6 数组
数组是按一定顺序排列,具有相同类型的变量的集合。

VB中将数组分为静态数组和动态数组,静态数组在声明时必须指明数组的维数和变量的个数;动态数组在声明时仅定义数组的名称和类型,然后在执行程序的过程中,根据实际需要再用ReDim语句定义数组的维数及变量的个数,而且允许使用简单变量来进行数组中变量个数的定义。

数组的使用在管理信息系统软件的程序设计中有着不可替代的作用,离开数组的使用,某些程序的编制将会变得非常麻烦,甚至导致程序编制的失败,因此数组是程序设计人员必须熟悉和掌握的必备知识。

【教学要求】
了解:数组的概念。

理解:静态数组和动态数组的区别;控件数组的作用。

掌握:数组的定义及使用方法;控件数组的应用。

【本节重点】
动态数组的应用。

控件数组的应用。

【本节难点】
动态数组的应用。

一、静态数组及声明
1、一维数组
一维数组的定义如下:
Dim <数组名> ([下界To]上界) [As 类型]
若缺省下界,系统默认为0。

例:Dim num(1 To 50)As Integer
2、多维数组
VB中数组的维数允许最多可达60维。

多维数组的定义格式如下:
Dim <数组名>([下界1 To]上界1,[下界2 To]上界2……)[As 类型] 例:Dim A(12,50),C(10)As Double
二、动态数组
动态数组在声明时只定义数组名或数组名及类型,不指定大小,在执行程序的过程中,再根据需要用Redim语句重新定义数组的大小。

重新定义动态数组的语句格式如下:Redim <数组名>(下标1[,下标2……])
注意:
(1)Redim语句中的下标可以是已被赋值的变量。

(2)在过程中可多次使用Redim来改变数组的大小和维数。

(3)每次使用Redim语句都会使原数组中的数据丢失,如需要保留原数组数据,可用Preserve参数来保留,使用该参数只能改变最后一维的大小。

例:在程序运行时由操作者指定一个一维数组的变量个数,然后由计算机自动产生一组随机数存放到一维数组中,并将此组随机数在窗体上打印出来。

完成此项工作的源程序如下:Dim x() As Double
Private Sub Form_Click()
W=InputBox("请问需要产生多少个随机数?",,,100,100)
W=Val(W)
ReDim x(W)
For i = 1 To W
x(i) = Rnd
Print x(i); " ";
Next
End Sub
注意:动态数组主要用于编程时尚不能确定数组中变量的个数,而只能在程序执行过程中根据统计或外部提供的信息才能确定数组中变量个数的情况。

三、数组的基本操作
1、用循环语句为数组元素赋初值
例:使用For-Next语句为一维数组赋初值0。

Private Sub Form_Load( )
Dim a(10) As Integer
For i = 0 To 10
a(i) = 0
Next
End Sub
2、使用Array函数给数组赋值
例:给a数组赋值5个奇数;给b数组赋值3个英文字母。

Dim a As Variant, b As Variant, I%
a = Array(1, 3, 5, 7, 9)
b = Array("x", "y", "z")
注意:
(1)利用Array函数对数组各元素赋值,声明的数组是可调数组,并且其类型只能是Variant。

(2)数组的下界为0,上界由函数括号中的参数个数决定。

四、数组的应用举例
例1、排序:令计算机用随机函数自动生成20个10-100之间的整数,将其按由小到大的顺序排列,并将这20个随机数打印出来。

Dim X(20) As Integer
Dim i, j, k As Integer
Private Sub Form_Load()
Randomize
For i = 1 To 20
X(i) = Rnd * 90 + 10
Next
End Sub
Private Sub Form_Click()
For i = 1 To 19
For j = i + 1 To 20
If X(i) > X(j) Then
k = X(i):X(i) = X(j):X(j) = k
End If
Next
Print X(I);
Next
End Sub
例2、编程实现:当用户由键盘输入一串英文字母到文本框Text1中后,令计算机自动统计出Text1中各种英文字母出现的次数(不区分大小写),并将统计结果打印出来。

Private Sub Command1_Click()
Dim ss As String
Dim a(1 To 26) As Integer, i, k As Integer
k = Len(Text1.Text)
For i = 1 To k
ss = UCase(Mid(Text1.Text, i, 1))
If ss >= "A" And ss <= "Z" Then
a(Asc(ss) - 64) = a(Asc(ss) - 64) + 1
End If
Next
For i = 1 To 26
Print Chr(i + 64) & "="; a(i); " ";
If i Mod 8 = 0 Then Picture1.Print
Next
End Sub
五、控件数组
1、控件数组的概念
控件数组是由一组相同类型的控件组成,它们共用一个控件名,并享用同样的事件过程。

系统自动赋予每个控件唯一下标索引(Index),Index从0开始,然后按自然数依次编号。

控件数组最多可有32767个元素。

2、建立控件数组的方法
建立控件数组的方法有以下两种:
(1)在设计时建立
在设计时建立控件数组的方法及其过程如下:
①在窗体上制作第一个控件,并设置其相关属性;
②选中该控件,对第一个控件进行复制;
③在窗体中粘贴控件,粘贴时在“创建一个控件数组吗?”对话框中选择“是”,系统就会自动创建这个控件的控件数组;
④根据需要,可多次粘贴,以满足控件数量的需求。

⑤建立共享的事件过程。

例:编制一个狮子选大王的游戏程序。

图 3.1
设有16头狮子,要从中选一个大王,选择的方法是:
第一步:首先将16头狮子编号并围成一圈;
第二步:确定一个间隔数,如3;
第三步:从16头狮子中任意选择一头狮子,作为起始;
第四步:从起始狮子开始绕狮子圈依次数3,将被数到3的狮子淘汰出局,取消作大王的资格;
第五步:重复绕狮子圈依次数3,并淘汰被数到3的狮子,最后所剩的唯一一头狮子就是大王。

例题界面设计:
在窗体中创建狮子画面的图形控件组:Image1(0)、Image1(1)、Image1(2)、…Image1(16);
窗体中设计两个命令按钮Command1和Command2,用于运行和结束游戏程序;
窗体中设计两组合框Combo1和Combo2,用于用户选择序输入起始狮子编号和间隔数。

最后设计一个文本框Text1用于显示所选狮子大王的编号。

狮子选大王的游戏的主要源程序如下:
Dim i, j, k, l, m, n As Integer
Private Sub Form_Load()
Text1.Visible = False
For i = 1 To 16
Combo1.AddItem i
Next i
For i = 2 To 7
Combo2.AddItem i
Next i
End Sub
Private Sub Command1_Click()
i = Val(Combo1.Text)
j = Val(Combo2.Text)
m = i - 1
n = 16
Do While n > 1
For k = 1 To j
m = m + 1
m = m Mod 16
Do While Not (Label1(m).Visible)
m = m + 1
m = m Mod 16
Loop
Next k
Label1(m).Visible = False
Image1(m).Visible = False
n = n - 1
DoEvents
ti = DateAdd("s", 1, Now)
Do While ti > Now
Loop
Loop
For i = 0 To 15
If Image1(i).Visible Then
k = i + 1
End If
Next i
Text1.Visible = True
Text1.Text = "最后剩的是第" & k & "号狮子"
End Sub
(2)程序运行时添加控件数组
在程序运行时,可添加或删除控件数组元素,具体操作步骤如下:
①在窗体上创建一个控件,设置其Index值为0;
②在编程时使用Load方法添加其余元素,也可使用Unload方法删除某个元素,语句格式如下:
Load 控件数组名(Index)
Unload 控件数组名(Index)
③每个新添加的控件数组元素通过Left和Top属性确定其在窗体的位置,并将Visible 属性设置为True。

例:在窗体设计时先建立一个命令按钮,然后在程序运行时添加9个命令按钮控件数组的元素,这10个命令按钮的标题分别为0-9十个数字。

第一步:在设计时建立一个命令按钮Command1,然后设置其Caption属性值为:0,Index 属性值为:0,使得Command1成为控件数组中的第一个元素。

第二步:其它9个控件数组元素在程序运行时添加,添加控件数组元素的源程序如下:Private Sub Form_Load()
Dim i, m, n As Integer
m = Command1 (0).Height
n = Command1 (0).Width
For i = 1 To 9
Load Command1 (i)
Command1 (i).Visible = True
Command1 (i).Caption = i
If i Mod 3 = 1 Then
Command1 (i).Top = Command1 (i - 1).Top - Command1 (i).Height - 230
Command1 (i).Left = Command1 (0).Left
Else
Command1 (i).Top = Command1 (i - 1).Top
Command1 (i).Left = Command1 (i - 1).Left + Command1 (i).Width + 465
End If
Next
Command1 (0).Width = Command1 (0).Width * 3 + 465 * 2
End Sub。

相关文档
最新文档