资源预览内容
第1页 / 共55页
第2页 / 共55页
第3页 / 共55页
第4页 / 共55页
第5页 / 共55页
第6页 / 共55页
第7页 / 共55页
第8页 / 共55页
第9页 / 共55页
第10页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第9章 数组,本章的学习要点 掌握数组的概念 区分静态数组和动态数组 掌握数组的基本操作(数组元素的输入、输出、排序) 掌握控件数组的建立与应用 了解二维数组的使用,2,变量在一个时刻只能存放一个值,当数据不多时,使用简单变 量可解决问题,但数据庞大时用简单变量效率太低。 例如: (1)输入100个数,按从大到小或者从小到大的顺序输出。 (2)某学校有近万名学生,做一个学生信息表。,9.1 数组的概念,3,9.1 数组的概念,1数组的概述 数组是具有相同数据类型的数据元素的集合。它由同一个名 字不同下标的同类型变量组成。 数组中的变量称为数组元素,数组中的每个元素都有一个唯 一的下标(索引)来标识自己。 数组元素的个数称为数组的长度(大小) 数组的特点: 1)数组的命名规则遵循标识符命名规则; 2)数组中的元素是有序排列的; 3)数组的元素个数是有限的; 4)数组的数据类型就是该数组的下标变量的数据类型; 5)数组元素的存储不是松散状态,而是占据一片连续区域。,4,使用数组和简单变量主要存在如下区别: (1)输入的简单变量越多,程序就越长,程序本身占用的内存空间就越大。 (2)在一个程序中使用的简单变量个数有限,对大批量数据,简单变量就不能表示了。 (3)简单变量的存储位置呈松散状态,数组却占据着一片连续的存储区域。 (4)在程序结构上,简单变量不适合使用循环的办法来解决,增加了代码的复杂度。,9.1 数组的概念,5,2数组的定义 1)数组的声明 一个数组包括数组名称、数组维数、数组大小、数组类型以及作用范围。 在使用数组时要将以上内容告诉计算机,以便开辟足够的内存单元来存储数 据,这个过程叫做声明数组。 声明数组的语法格式: Public | Private | Dim 数组名(维数定义)As 数据类型 . 说明: (1)数组必须“先声明,后使用”; (2)一条声明语句可以同时声明多个不同维数的数组,但数组间不能同名。,9.1 数组的概念,6,2)数组的上、下界 数组有上界和下界,数组的元素在上下界内连续递增。 语法格式: 下界1 To 上界1 ,下界2 To上界2. 其中: 下界和上界分别表示该维的最小和最大下标值,通过关键字To连接起来确定下标的取值范围。默认下界为0,下界可以省略,若省略下界说明下标的取值范围是从0到上界。 例如:声明数组Sums Dim Sums(9)As Double 该数组包含10个元素,a(0)a(9),9.1 数组的概念,7,3) 数组的维数 下标变量中下标的个数决定数组的维数,各维下标之间用逗号“,”隔开。 一个下标的下标变量构成一维数组,一维数组表示线性顺序; 两个下标的下标变量构成二维数组,二维数组用于表示平面; 三个下标的下标变量构成三维数组,三维数组可以表示立体空间。 有多少个下标的下标变量就构成多少维的数组,通常又把二维以上的数组称为多维数组。,9.1 数组的概念,8,例如: Orange(1 to 5)表示一维数组共有5个元素。 Apple(1 to 3, 2 to 5) 表示二维数组,大小为34,元素总数为二个维数的乘积12,该数组在数学上可表示为3行4列的矩阵。 Pear(1 to 2,1 to 3,2 to 4) 表示三维数组,大小为233,元素总数为三个维数的乘积18,该数组在数学上可以用立体图形来表示。 注意: 在增加数组的维数时,数组所占的存储空间会大幅度增加,由于对每一个下标变量都分配空间,所以声明数组的大小要合适。,9.1 数组的概念,9,4) 数组的类型 “As 数据类型”表明数组元素的类型。可以声明任何基本数据类型的数组:Byte、Boolean、Long、Currency、Single、Double、Date、String(变长字符串)、String*length(定长字符串)、Object(对象型)、Variant(变体型)、用户定义类型。,9.1 数组的概念,10,5) 下标变量的使用说明 下标变量由数组名后跟小括号“()”括起来的下标组成。且下标必须放在小括号内。 例如: a(3)不能写成 a3,否则被当作简单变量处理。 下标可以是常量、数值变量、算术表达式。 例如: a(6),b(2*m+1),c(i)。 若下标中若含有变量,使用前该变量应提前赋值。 例如:当i=1时:a(i)表示a(1),a(i+2)表示a(3); 当i=b(1)=1时:a(b(1)表示a(1)。 下标变量的类型就是数组的类型,所有下标变量都具有一样的类型。 下标变量像简单变量一样,一个下标变量代表相应数组的一个组成元素。,9.1 数组的概念,11,9.2 静态数组与动态数组,静态数组:在程序执行前,系统进行编译时,根据数组说明语句开辟的固定的存储空间,直到程序执行完毕,在整个过程中存储空间大小不再改变,这种数组就叫静态数组。 动态数组:在执行过程中给数组开辟存储空间后,还可以用Redim(或Dim)语句再次分配存储空间,这种数组就叫动态数组。 在程序未执行时,动态数组不占用内存;而静态数组,编译程序将为它的数据段预留空间。,12,9.2.1 静态数组,1静态数组的声明 数组声明的语法格式: Public | Private | Dim 数组名(下标) As 类型 下标的格式: 下界1 To 上界1 , 下界2 To 上界2) 例如: Dim A(2)As Double 一维数组A,共有三个双精度元素,分别为A(0)、A(1)、A(2)。 Dim B(-2 To 2)As Single 一维数组B,共有5个单精度元素,分别为B(-2)、B(-1)、B(0)、B(1)、B(2)。 Dim C(2, 1 To 2)As Integer 二维数组C,共有6个整型元素,分别为C(0,1)、C(0,2)、C(1,1)、C(1,2)、C(2,1)、C(2,2)。 Dim D(1,1)As Double 二维数组D,共有4个双精度元素,分别为D(0,0)、D(0,1)、D(1,0)、D(1,1)。,13,2数组下标设置语句 下界默认开始值为0。但在使用时,若希望从别的值开始,这就需要用“Option Base”语句设置数组下标的起始值。 Option Base语句的语法格式:Option Base n 例如: Option Base 1 Dim A(5)As String 等价于Dim A(1 To 5)As String,9.2.1 静态数组,14,注意: 1)在数组声明时,下标表示数组的维数大小,但在使用中,只表示数组中的一个元素。即: Dim D(1,1)As Double 声明过程中 D(1,1)表示D是一个二维数组,有4个元素,分别为D(0,0)、D(0,1)、D(1,0)、D(1,1)。声明完成后再出现的D(1,1),则表示数组D中的一个数组元素。 2)Option Base n语句必须在标准模块中或窗体通用声明处使用。,9.2.1 静态数组,15,例9.2 随机产生5个两位整数,求出5个数的平均值、最大值、最小值。思路:5个随机两位数要利用Rnd函数和Int函数,通过循环来产生,求平均值则要先求和,所以要用循环进行累加求和,另外在累加求和过程中通过比较寻找5个数的最大值和最小值。,9.2.1 静态数组,16,Option Base 1 标识数组下标从1开始,并且一定要是模块级变量 Private Sub Command1_Click() Dim a(5) As Integer Dim i As Integer, max As Integer, min As Integer, sum As Integer Dim avr As Double For i = 1 To 5 a(i) = Int(Rnd * 90 + 10) 随机数用到Rnd函数和Int函数 Label4.Caption = Label4.Caption & “ “ & a(i) Next i max = a(1) min = a(1),9.2.1 静态数组,17,For i = 1 To 5 If max a(i) Then min = a(i) sum = sum + a(i) Next i avr = sum / 5 Text1.Text = avr Text2.Text = max Text3.Text = min End Sub Private Sub Command2_Click() Text1.Text = “ Text2.Text = “ Text3.Text = “ Label4.Caption = “随机产生的5个数为:“ End Sub,9.2.1 静态数组,18,例9.3 用数组求1!+2!+10!之和。 Private Sub Form_Click() Dim a(1 To 10) As Long, sum As Long, f As Long Dim n As Integer f = 1 For n = 1 To 10 通过10次循环,分别求出1!10! f = f * n a(n) = f 每求得一个阶乘就赋值给一个数组元素 Next n sum = 0 For n=1 To 10 sum = sum +a(n) Next n Print “1! + 2! + 3! + 10! =“; sum End Sub,9.2.1 静态数组,19,9.2.2 动态数组,与静态数组对应的是动态数组,即数组元素个数不定的数组。 若事先不知道数组的大小,并希望在运行时可以根据需要改变 数组的大小(或大小不断改变),这时就要使用动态数组。 动态数组与静态数组不同的是:动态数组灵活、经济、可伸 缩,可在任何时候改变数组的大小,从而不会浪费内存。 1动态数组的声明 数组声明的语法格式: Public | Private | Dim 数组名() As 类型,20,2创建动态数组的步骤 (1)声明一个空维数表的数组(不必说明维数和界限)。 例如:Dim X( )As Integer。 (2)在需要指定数组大小时,再使用ReDim语句分配数组中实际元素个数。 例如:ReDim X(50,50)。,9.2.2 动态数组,21,ReDim语法格式: ReDim Preserve 数组名(下标)As 类型 其中: (1)ReDim语句中的 As 类型可以省略,若不省略则必须要和数组声明中的类型一致。 (2)使用ReDim相当于数组被重新初始化,原来的数据将全部丢失。 (3)Preserve表示再次使用ReDim语句改变数组大小时保留数组中原来的数据,但Preserve只能改变多维数组中最后一维的上界,否则运行程序报错。 (4)ReDim 语句用来更改某个已声明维数或大小的数组。如果有一个较大的数组,并且不再需要它的某些元素,ReDim 可通过减小数组大小来释放内存。另一方面,如果代码确定某个数组需要更多元素,也可使用ReDim语句来实现。,9.2.2 动态数组,22,例9.4 使用ReDim语句来声明动态数组。 Private Sub Form_Click() Dim a() As Integer ReDim a(5) As Integer a(0) = 100 Print “第一次重新动态分配后:a(0)=“ & a(0) ReDim a(1, 1) a(0, 1) = 200 Print “第二次重新动态分配后:a(0,1)=“ & a(0, 1) ReDim Preserve a(1, 3) Print “第三次重新动态分配后:a(0,1)=“ & a(0, 1) End Sub,9.2.2 动态数组,23,例9.5 统计输入的任意个数之和。 Private Sub Command1_Click() Dim N As Integer, A() As Single, i
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号