第九讲 数组
-------动态数组与控件数组
重点:
1、掌握动态数组的定义与使用 2、熟悉控件数组的建立及使用 3、数组常用算法程序设计
1 动态数组的概念:程序在运行过程中,其元素个数(大小)可以改变的数组 2 动态数组说明的一般格式:
(说明数组时不指明维数及下标范围) dim 数组名() [as 数据类型]
当可以确定数组元素大小时对动态数组再次说明,用如下重定义数组语句: ReDim [Preserve] 数组名(维界定义) [As 数据类型 ]
说明:当重新定义数组后,要保留原来数组中的数据,则选择preserve选项。 例如: Dim Pin() As Integer
private Sub form_click() ReDim Pin(5)
……
End Sub
详细说明动态数组定义格式中的每个参数的作用,并进行演示! 15时间
接着用下面的例子来说明动态数组的作用!
以下的例子可根据需要在讲授时选择!
例1:有一组数,以-999结束,编程找出其中正数、负数、零的个数。(-999不作为数据处理)
注:例1和例3两个中选择一个讲! Private Sub Form_click()
Dim x() As Integer, n As Integer
Dim n1 As Integer, n2 As Integer, n3 As Integer n = 1
Do
ReDim Preserve x(n)
x(i) = InputBox(\请输入一个数\ Print x(i);
If x(i) = -999 Then Exit Do If x(i) < 0 Then n1 = n1 + 1 ElseIf x(i) = 0 Then n2 = n2 + 1 Else
n3 = n3 + 1 End If n = n + 1 Loop Print
Print \小于0的数据个数为:\ Print \等于0的数据个数为:\ Print \大于0的数据个数为:\End Sub
例2:打印下面的图形:----------------------------- 选讲内容 ********* ******** ******* ****** ***** **** *** ** * * ** *** **** ***** * *** *****
*******
Private Sub Form_click() Dim i As Integer, j As Integer For i = 1 To 9 Print Tab(5); For j = 1 To 10 - i Print \ Next j Print Next i End Sub
Private Sub Form_click()
Dim i As Integer, j As Integer For i = 1 To 5 Print Tab(5); For j = 1 To i Print \
Next j Print Next i End Sub
Private Sub Form_click() Dim i As Integer, j As Integer For i = 1 To 4
Print Tab(9 - i); For j = 1 To 2 * i - 1 Print \ Next j
Print Next i End Sub
例3 从键盘输入任意个数,求出这些数的总和和平均值! Dim a() as integer
Dim I as integer, sum as integer, avg as single, t as integer Do
I=inputbox(―请输入一数!‖) If i=-1 then Exit do Else
T=t+1
Redim preserve a(t) A(t)=i
Sum=sum+i endif
Loop
Avg=sum/ubound(a)
Print ―sum=‖;sum,‖avg=‖+cstr(avg)
例4 编程实现随机生成20个互不相同的两位整数! Dim a() as integer ,I as integer, n as integer,j as integer Redim a(20) as integer For i=1 to 20
k= inputbox(―请输入N的值‖) for j=1 to i-1 if a(j)=k then exit for next j
if j>i-1 then a(i)=k else i=i-1
endif next i
例 5 在一组有序数列中插入一个数,要求插入后的数还是有序数列! Dim a() as integer
Dim I as integer , n as integer, k as integer For i=1 to 10
A(i)=10*i
Next i
N=inputboxa(―请输入要插入的数‖)
以下有两种方案1 前插入 2 后插入(可以用班级中的同学进行示范教学) T=10
Redim preserve a(11) Do while n A(t+1)=n For i=1 to 11 Print a(i); Next i 后插入法给学生讲清算法的原理,要求学生自己课后写出程代码! 9.2 控件数组 一、控件数组: 动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用该数组时,随时可用ReDim语句重新定义数组的大小。使用动态数组的优点是:用户可以根据需要有效地利用存储空间,它是在程序执行到ReDim语句时分配存储空间。 二、建立控件数组方法: 1复制现存控件: 在窗体上绘制控件数组中第一个元素的控件→设置它的名称属性→右键单击此对象→复制→右击窗体→粘贴。(重复复制操作) 将已存在的控件组成一个数组。(同一类型的控件) 确定第一个元素→选定要包含在控件数组中的其它对象→将它的名称属性设置成和第一个元素相同。(重复此操作) 说明:1 控件数组中的每个元素下标为此控件的index 属性值(≤32767) 控件数组中的每个控件共享一个事件过程。 2创建同名控件 在控件面板中直接添加相同类型的控件到窗体上,将它们的名子都命名为同一个名子时,系统将会提示你创建一个控件数组 三、应用举例 使用控件数组实现字体格式的设置!