第五章 数组
一、教学内容
本章讨论数组的知识,一维数组,多维数组和动态数组,以及使用数组编写程序。
二、目的要求
1.熟悉使用一维数组编写程序;
2.熟悉使用多维数组编写程序;
3.熟悉动态数组的使用方法。
三、教学重点与难点
教学重点:一维数组和多维数组。
教学难点:动态数组。
四、教学方法
多媒体教学为主。适当提问,加深学生对概念的理解。
本章6课时。
第一讲 一维数组(2学时)
一、教学内容
单选框和复选框。
二、目的要求
熟悉一维数组的概念、使用方法。
三、教学重点与难点
教学重点:一维和多维数组。
教学难点:动态数组。
四、教学方法
多媒体教学。
五、教学过程
5.1 概述
数组就是很多元素的变量名相同,在内存中是连续存储的若干个存储单元,每个数组元素的类型一样,为了区分这些元素,为每个元素赋予不同的下标值。
数组的声明(也叫做定义):
[Public|Private|Dim|Static] 数组名(下标1[,下标2[…]])[as 数据类型]。
数组的定义举例:
Dim a(5) As Integer
Dim b(3 to 8) As Integer
Dim c(8)
说明:a(5)共有6个元素,分别是a(0)、a(1)、a(2)、a(3)、a(4)和a(5),b数组共有6个元素分别是b(3)、b(4)…b(8),c数组共有c(0)、c(1)…c(8)共9个元素。
如果不习惯以0为下标起点,可以设置下标为1,Option Base 1,该语句有只有两个值,分别是Option Base 1和Option Base 0,其中Option Base 0是默认值。
程序举例:
1.下面的程序可以求一维数组的最大元素以及最大元素的下标。
编写代码
Option Base 1
Private Sub Command1_Click()
Dim a(10) As Integer
Dim xb As Integer
For i = 1 To 10
a(i) = Val(InputBox("输入数组元素"))
Next i
xb = 1: zuida = a(1)
For i = 2 To 10
If a(i) > zuida Then
zuida = a(i): xb = i
End If
Next i
Print zuida, xb
End Sub
六、小结
一维数组的概念;
一维数组的编程方法。
七、作业
P123 5.1
第二讲 多维数组(2学时)
一、教学内容
多维数组的概念和用法。
二、目的要求
熟悉多维数组的概念、使用方法。
三、教学重点与难点
教学重点和难点:多维数组的概念和编程。
四、教学方法
多媒体教学。
五、教学过程
5.2 多维数组
多维数组中的每个元素有两个或者两个以上的下标。
多维数组的定义
[Public|Private|Dim|Static]数组名(下标1,下标2[下标3[,…]])[ As <类型>]
说明:Public、Private、Dim和Static的用法与变量的定义一样。
下面是一些数组的定义:
Dim a(3,4) As Integer
Dim b(1 to 3,2 to 5)
Dim c(3,4,5) As Boolean
上面定义的a数组有4*5共20个元素,元素类型是整数,b数组有12个元素,元素类型是变体类型,c数组有4*5*6共120个元素,元素类型是布尔型。
举例:编写程序求二维数组的平均值。
编写代码:
Private Sub Command1_Click()
Dim a(4, 5) As Integer
s = 0
For i = 0 To 4
For j = 0 To 5
s = s + Val(InputBox("输入"))
Next j
Next i
Print s / 30
End Sub
六、小结
多维数组的概念和用法。
七、作业
无
第三讲 动态数组(2学时)
一、教学内容
动态数组的概念和用法。
二、目的要求
熟悉动态数组的概念、使用方法。
三、教学重点与难点
教学重点和难点:动态数组的概念和编程。
四、教学方法
多媒体教学。
五、教学过程
5.3动态数组
所谓动态数组就是在申明数组的时候不申明数组的大小,在程序运行的时候动态改变数组的大小。动态数组的维数也不需要指明。
动态数组的申明格式:
[Public|Private|Dim|Static] 数组名() [As <类型>]
在程序中动态改变,格式是:
ReDim [Preserver]数组名(下标[,下标[,…]])
含有PreServer表示保留上次的数组的值。
例如:
Dim a() As Integer
Private Sub Command1_Click()
ReDim a(4) As Integer
For i = 0 To 4
a(i) = i
Next i
For i = 0 To 4
Print a(i)
Next i
End Sub
Private Sub Command2_Click()
ReDim a(9) As Integer
For i = 0 To 9
Print a(i)
Next i
End Sub
先执行Command1_Click再执行Command2_Click,执行结果是在执行Command1_ Click时显示a数组的值分别为0、1、2、3、4,而在执行Command2_Click后显示的a数组的值都为0,说明a数组的值没有保留。
如果程序写成如下:
Dim a() As Integer
Private Sub Command1_Click()
ReDim a(4) As Integer
For i = 0 To 4
a(i) = i
Next i
For i = 0 To 4
Print a(i)
Next i
End Sub
Private Sub Command3_Click()
ReDim Preserve a(9) As Integer
For i = 5 To 9
a(i) = i
Next i
For i = 0 To 9
Print a(i)
Next i
End Sub
先执行Command1_Click再执行Command3_Click,执行结果是在执行Command1_ Click时显示a数组的值分别为0、1、2、3、4,而在执行Command3_Click后显示的a数组的值分别是0、1、2、3、4、5、6、7、8、9,说明执行Command1_ Click过程时的a数组的值保留下来了,这就是PreServe关键
六、小结
动态数组的概念和用法。
七、作业
P123 5.3