第五章 数组 一、教学内容 本章讨论数组的知识,一维数组,多维数组和动态数组,以及使用数组编写程序。 二、目的要求 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