1、第6章 数据块数组,数组是具有相同名字、不同下标的一组变量。使用数组可以缩短和简化程序,可以利用索引值设计循环,高效处理各种程序运行需要。数组包括固定大小的数组和动态数组。学习本章,读者可以了解两种数组的定义和使用方法。,6.1 定长数据固定数组,固定数组,顾名思义就是固定元素数量的数组。固定数组包括一维数组和多维数组。固定数组中使用一个下标就能确定数组元素在数组中的位置称为一维数组。具有两个或多个下标的变量数组称为二维或多维数组。本节将介绍固定数组的定义和使用方法。,6.1.1 声明数组,数组和变量使用方法不完全相同。变量可以隐式声明,而数组必须显式声明后使用。声明数组的标准语法如下:Pub
2、lic|Dim|private|static arraryname(Num1 to Num2) as type参数说明: Public为可选项,表示在模块的声明段建立公用数组。 Private为可选项,表示在模块的声明段建立模块级数组。 Dim为可选项,表示只能在窗体或标准模块的声明段建立模块数组。 Static为可选项,表示在模块或窗体中创建数组。 Arrayname为必需项,表示数组名称在同一范围内必须为唯一名称。 Num1为可选项,表示数组元素下标数值下界。 Num2为必需项,表示数组元素下标数值上界。 Type为可选项,默认为变体型Variant。可以为任何数据类型。 初始声明数组时,
3、数值类型数组全部为0,字符串型数组全部为空字符串。,【示例6-1】,声明数值和字符串数组。用Dim关键字表明为局部变量数组。只能在窗体或过程中使用该数组。Dim Counters(14) As Integer 15个初始值为0元素 Dim Strs(20) As string 21个初始值为空字符串元素用Public关键字表明为公共变量数组。可以在程序中使用该数组。Public Counters(14) As Integer 15个初始值为0元素 Public Strs(20) As string 21个初始值为空字符串元素,6.1.2 设定上下界,Visual Basic声明数组时,在数组名
4、之后跟一个用括号括起来的上界。上界不得超过长整型Long数据类型的范围(2 147 483 648到2 147 483 647)。默认下标下界为0。如果希望下标下界从1开始,可以通过Option Base语句来声明。该语句用来指定数组下标默认下界。,【示例6-2】,声明数组上下界,代码如下:Dim Numbers(10) As Integer 声明整数数组包含11个元素 Dim Sums(20) As Double 声明双精度数组包含21个元素 说明:第一个声明建立了一个有11个元素的数组,其索引号从0到10。第二个声明建立了一个有21个元素的数组,其索引号从0到20,默认的下界为0。,如果添
5、加Option base关键字,上述数组下界将发生变化。Option base 1 数组下界从1开始 Dim Numbers(10) As Integer 数组包含10个元素 Dim Sums(20) As Double 数组包含20个元素第一个声明建立了一个有10个元素的数组,其索引号从1到10。第二个声明建立了一个有20个元素的数组,其索引号从1到20。,为了规定下界,用关键字To显式提供数组下界(Long数据类型):Dim Numbers (1 To 15) As Integer 下界为1,15个元素 Dim Sums (100 To 120) As String 下界为100,20个元
6、素在前述声明中,变量Counters的索引值范围从1到15,而变量Sums的索引值范围从100到120。,如果需要在程序中判断数组的上界和下界,需要使用以下2个函数。 (1)Lbound()函数LBound(arrayname, Dimension)返回一个Long型数据,其值为指定数组维可用的最小下标。 (2)Ubound()函数UBound(arrayname, Dimension)返回一个Long型数据,其值为指定的数组维可用的最大下标。 参数说明: Arrayname为必需项,表示数组名称。 Dimension为可选项,表示数组中维的数值。如果为一维数组,维可以省略;如果为多维数组,维
7、不可以省略。,【示例6-3】,声明一个数组。代码如下:Dim Numbers(12) as integer 声明数组为整数型,包含13个元素 Dim n1 as integer 声明变量 Dim n2 as integer n1=LBound(Numbers) 取得数组维可用最小下标 n2=UBound(Numbers) 取得数组维可用最大下标 说明:n1返回值为Numbers数组的下标下界,n2返回值为Numbers数组的下标上界。以上两个参数在Visual Basic应用程序开发中具有非常重要的作用。,【示例6-4】,计算数组中最大数值。 (1)新建一个工程,并新建一个窗体。 (2)双击工
8、具箱中的CommandButton图标,窗体自动添加一个CommandButton控件,设置caption属性为“求最大值”。 (3)双击“求最大值”按钮,弹出代码编辑窗口。在左侧对象下拉列表框中选择Command1选项,右侧过程下拉列表框中选择Click事件。输入代码如下:说明:首先声明数组num(2)和变量m,i为整数型。为num(2)数组赋值。然后在for循环中判断数组数值是否大于m。如果大于m,将m赋值为当前数组值。最后在窗体显示数组中最大值。,6.1.3 数组的数组多维数组,多维数组与一维数组相对应。多维数组在现实生活中具有很重要的意义。如屏幕坐标、三维动画数据的设定值等是典型的多维
9、数组。声明多维数组与一维数组完全相同。,【示例6-5】,声明两个多维数组,代码如下:Dim matrix(9,9) as integer 说明:声明一个1010的二维数组。 Dim matrix(9,9,9) as integer 说明:声明一个101010的三维数组。 注意:声明多维数组占用较大的存储空间。应用程序开发中慎用多维数组。,【示例6-6】,编程计算二维数组的最后结果matrix(i,j)=i*10+j。 (1)新建一个工程,并新建一个窗体。 (2)双击工具箱中的CommandButton图标,窗体自动添加一个CommandButton控件,设置caption属性为“多维数组计算”
10、。双击“多维数组计算”按钮,弹出代码编辑窗口。在左侧对象下拉列表框中选择Command1选项,右侧过程下拉列表框中选择Click事件。 (3)输入以下代码:说明:首先声明变量i、j和二维数组matrix,然后套用二层for循环,依次将数组数值赋值为i*10+j,最后依次在窗体中显示计算结果。,6.2 不定长数据动态数组,动态数组可以在程序运行时动态改变数组大小。Visual Basic应用程序开发中需要动态数组来保存多维数组数值。动态数组具有灵活方便管理数组的能力。本节介绍动态数组的定义和使用方法。,6.2.1 创建动态数组,声明动态数组和普通数组基本相同。根据不同关键字定义不同作用域范围。为
11、数组赋予一个空维数表,将该数组声明为动态数组。Public|Private|Static|Dim arr()参数说明: Public在模块的声明段建立公用数组。 Private在模块的声明段建立模块级数组。 Dim在窗体或标准模块的声明段建立模块数组。 Static在模块或窗体中创建数组。,使用ReDim关键字将分配实际数组元素个数。其标准语法如下:ReDim Preserve varname(subscripts) As type参数说明: ReDim为必需项,该关键字只能出现在过程中作为一个可执行语句运行。 Preserve为可选项,当改变原有数组最末维的大小时,使用此关键字可以保持数组中
12、原来的数据。 Varname为必需项,表示数组名称。 Subscripts为必需项,表示数组下标。,【示例6-7】,声明动态数组的标准语法如下:ReDim arr(20),6.2.2 使用动态数组,动态数组使用ReDim关键字。每次使用ReDim关键字,以前数组内容全部自动清空。,【示例6-8】,编程将动态数组重新定义为二维数组,并将每个元素赋值为下标的乘积。 (1)新建一个工程,并新建一个窗体。 (2)双击工具箱中的CommandButton图标,窗体自动添加一个CommandButton控件,设置caption属性为“动态数组”。双击“动态数组”按钮,弹出代码编辑窗口。在左侧对象下拉列表框
13、中选择Command1选项,右侧过程下拉列表框中选择Click事件。 (3)输入以下代码:,说明:该代码使用Dim语句声明一个空动态二维数组。使ReDim语句重新声明使用动态数组。使用for语句建立两层循环计算二维数组的下标乘积。最后在屏幕上显示计算后的乘积结果。 注意:当需要时可以创建一个动态数组,不需要时释放内存空间。声明动态数组最好尽量达到最大,然后删除不必要的数值。,6.3 小 结,本章主要介绍了固定数组、动态数组的创建以及使用方法。并结合实例演示如何创建固定数组和动态数组。本章重点难点包括如何正确声明和使用动态数组。动态数组在编程开发中使用方法复杂,需要结合实例多分析和实践。第7章将介绍如何进行错误处理。,