1、数组的基础知识 一维数组 二维数组 控件数组 动态数组 主要内容主要内容1.1数组的概念数组的概念 数组用于表示一组性质相同的、有序的数据,这组数数组用于表示一组性质相同的、有序的数据,这组数据用一个统一的名称来代替,称为数组名。例如,据用一个统一的名称来代替,称为数组名。例如,1000个学生的数学成绩,可以统一取名为个学生的数学成绩,可以统一取名为Score。数。数组名的命令规则与简单变量的命名规则相同。组名的命令规则与简单变量的命名规则相同。数组中的每一个成员称为数组元素。为了在处理时能数组中的每一个成员称为数组元素。为了在处理时能够区分数组中的每一个元素,需要用一个索引号加以够区分数组中
2、的每一个元素,需要用一个索引号加以区别,该索引号称为下标。数组中的每一个元素可以区别,该索引号称为下标。数组中的每一个元素可以用用“数组名数组名”和和“下标下标”唯一的表示,方法是:唯一的表示,方法是:(下标)(下标)1.1数组的概念数组的概念 在表示数组元素时,应注意以下几点:在表示数组元素时,应注意以下几点:(1)要用圆括号把下标括起来,不能用中括号或者大)要用圆括号把下标括起来,不能用中括号或者大括号代替,也不能省略圆括号。例如,将数组元素括号代替,也不能省略圆括号。例如,将数组元素Score(1)表示成)表示成Score1或者或者Score1都是错误的;都是错误的;(2)下标可以是常量
3、、变量或者表达式,但是其值必)下标可以是常量、变量或者表达式,但是其值必须是整数,且在被引用前必须有确定的值,否则将会须是整数,且在被引用前必须有确定的值,否则将会被自动四舍五入成整数;被自动四舍五入成整数;(3)下标的最小取值称之为下界,下标的最大取值称)下标的最小取值称之为下界,下标的最大取值称之为上界。在不加任何说明的情况下,数组的下界默之为上界。在不加任何说明的情况下,数组的下界默认为认为0。但是我们也可通过。但是我们也可通过Option Base语句来修改数语句来修改数组的下界。组的下界。Option Base 语句只能在模块级中使用。语句只能在模块级中使用。1.2 数组的维数数组的
4、维数 如果数组的元素只有一个下标,则称这个数组为一如果数组的元素只有一个下标,则称这个数组为一维数组。维数组。用两个下标来表示元素的数组称为二维数组。对于用两个下标来表示元素的数组称为二维数组。对于可以表示成表格形式的数据,例如矩阵、行列式可以表示成表格形式的数据,例如矩阵、行列式等,用二维数组来表示是非常方便的。等,用二维数组来表示是非常方便的。根据问题的需要,我们还可以选择使用三维数组、根据问题的需要,我们还可以选择使用三维数组、四维数组,甚至更多维的数组。在四维数组,甚至更多维的数组。在Visual Basic中最多允许有中最多允许有60维数组。例如我们想表示空间上维数组。例如我们想表示
5、空间上的一个点的一个点P,其坐标有三个,分别是,其坐标有三个,分别是X轴、轴、Y轴、轴、Z轴上的坐标,那么我们可以使用三维数组来表轴上的坐标,那么我们可以使用三维数组来表示,数组的第一维表示示,数组的第一维表示X坐标,第二维表示坐标,第二维表示Y坐坐标,第三维表示标,第三维表示Z坐标,如用坐标,如用P(x,y,z)来表)来表示。示。1.3数组的声明数组的声明 数组在定义之前必须先声明,声明数组的目的数组在定义之前必须先声明,声明数组的目的是为数组分配存储空间,是为数组分配存储空间,“数组名数组名”即为这即为这个存储空间的名称,而数组元素则为存储空个存储空间的名称,而数组元素则为存储空间的每一个
6、单元。每个单元的大小(即所占间的每一个单元。每个单元的大小(即所占字节数)与数组的类型有关。字节数)与数组的类型有关。1.4数组函数数组函数 1.Array函数函数:=Array()将将中的数据赋给一个中的数据赋给一个Variant型数组的数组型数组的数组元素,即可以使用该函数为数组元素赋值。例如:元素,即可以使用该函数为数组元素赋值。例如:2.IsArray函数函数:IsArray(变量名)(变量名)判断一个变量是否为数组变量。函数值为判断一个变量是否为数组变量。函数值为Boolean型型3.下界函数(下界函数(Lbound)Lbound(数组名数组名,维数,维数)求数组指定维数的最小下标。
7、函数值为求数组指定维数的最小下标。函数值为Long型数据。型数据。4.上界函数(上界函数(Ubound)UBound(数组名数组名,维数,维数)返回返回2.1数列排序案例说明数列排序案例说明该程序可以产生一个包含十个元素的随机整数序该程序可以产生一个包含十个元素的随机整数序列,通过运行代码可以求出这个数列中的最大列,通过运行代码可以求出这个数列中的最大值、数列的平均值以及按升序排列,当按下值、数列的平均值以及按升序排列,当按下“插入新数据插入新数据”按钮时,用户可以通过键盘输按钮时,用户可以通过键盘输入一个新的整数,构成一个包含入一个新的整数,构成一个包含11个元素的数个元素的数组,并且把新输
8、入的整数按升序插入到正确的组,并且把新输入的整数按升序插入到正确的位置,位置,2.2 程序实现程序实现 1.界面设计:在界面上添加界面设计:在界面上添加5个命令按钮,按图个命令按钮,按图5-3调整调整控件的大小和位置,并按照图示设置窗体和命令按钮控件的大小和位置,并按照图示设置窗体和命令按钮的的Caption属性,并把它们的名称依次更改为属性,并把它们的名称依次更改为cmdCreat、cmdMax、cmdAve、cmdSort、cmdInsert。2.代码设计:代码设计:2.3 相关知识相关知识 1.一维数组的定义一维数组的定义Public|Private|Dim(下标)(下标)As (1)建
9、立)建立“全局数组全局数组”,在模块的声明段用,在模块的声明段用“Public”语语句声明数组;句声明数组;(2)建立)建立“模块模块”或或“窗体数组窗体数组”,在模块的声明段用,在模块的声明段用“Private”语句声明数组;语句声明数组;(3)建立)建立“局部数组局部数组”,在过程中用,在过程中用“Private”语句声语句声明数组。明数组。2.3 相关知识相关知识 2.几点说明:几点说明:(1)“下标下标”的一般形式为的一般形式为“下界下界 To 上界上界”。上界、下界为整。上界、下界为整数,不得超过数,不得超过Long数据类型的范围,并且下界应该小于上界。数据类型的范围,并且下界应该小
10、于上界。(2)如果无)如果无“下界下界”,则默认为,则默认为“下界下界”为为0。如果希望。如果希望“下界下界”默认为默认为1,应该通过语句,应该通过语句“Option Base 1”来设置;来设置;(3)引用数组元素的格式是)引用数组元素的格式是“数组名(下标)数组名(下标)”。(4)给数组元素赋值的方法与变量的赋值相同。)给数组元素赋值的方法与变量的赋值相同。(5)要注意区分)要注意区分“可以使用的最大下标值可以使用的最大下标值”和和“元素个数元素个数”。“可以使用的最大下标值可以使用的最大下标值”指的是指的是“下标值下标值”的的“上界上界”,而,而“元素个数元素个数”则是指数组中则是指数组
11、中“成员成员”的个数。的个数。(6)在同一个过程中,)在同一个过程中,“数组名数组名”不能与不能与“变量名变量名”相同,否则相同,否则会出现会出现“当前范围内的声明重复当前范围内的声明重复”的错误。的错误。返回返回3.1变换矩阵案例说明变换矩阵案例说明通过这个案例来掌握二维数组中第一维下标和第通过这个案例来掌握二维数组中第一维下标和第二维下标的含义,以及在程序中如何对二维数二维下标的含义,以及在程序中如何对二维数组的下标进行控制。组的下标进行控制。在一个二维数组中存入一组数据,并且将这些数在一个二维数组中存入一组数据,并且将这些数据按矩阵的方式显示在窗体的控件上。运行程据按矩阵的方式显示在窗体
12、的控件上。运行程序时,当用户按下序时,当用户按下“行列互换行列互换”按钮时,可以按钮时,可以实现矩阵的行列互换,并且显示在右边的实现矩阵的行列互换,并且显示在右边的“图图片框片框”中,按下中,按下“行颠倒行颠倒”和和“列颠倒列颠倒”按钮按钮时,能实现矩阵相关数据的时,能实现矩阵相关数据的“颠倒颠倒”,按下,按下“退出退出”按钮时则可以退出程序。按钮时则可以退出程序。3.2 程序实现程序实现1.界面设计:在窗体上添加界面设计:在窗体上添加2个图片框(个图片框(PictureBox)控件、控件、4个命令按钮控件,调整控件的大小和位置,个命令按钮控件,调整控件的大小和位置,并设置各个控件的有关属性:
13、并设置各个控件的有关属性:2.代码设计:代码设计:3.3 相关知识相关知识1.二维数组的定义二维数组的定义:Public|Private|Dim|Static 数组名数组名(下标下标1,下标,下标2)As 说明:说明:Public、Private、Dim和和Static的用法与变量的的用法与变量的定义一样。每一维的下标都有上界和下界来标示下标定义一样。每一维的下标都有上界和下界来标示下标的取值范围。每一维的大小为的取值范围。每一维的大小为“上界上界-下界下界1”,二维,二维数组元素的个数为数组元素的个数为“两个维的大小的乘积两个维的大小的乘积”。2.二维数组元素的引用二维数组元素的引用二维数组
14、的元素的引用方法和一维数组相同,格式为:二维数组的元素的引用方法和一维数组相同,格式为:数组名(下标数组名(下标1,下标,下标2)说明:说明:“下标下标1”、“下标下标2”可以是常量、变量或者表达可以是常量、变量或者表达式,并且它们的取值范围不可以超过所声明的上界和式,并且它们的取值范围不可以超过所声明的上界和下界。下界。3.4 拓展知识拓展知识1.案例说明:案例说明:在窗体上绘制一个简易迷宫。在本案例中,在窗体上绘制一个简易迷宫。在本案例中,“迷宫迷宫”用一个由用一个由0和和1组成的组成的“2020”的矩阵来表示,这个的矩阵来表示,这个矩阵可以定义为一个二维数组,整型,比如矩阵可以定义为一个
15、二维数组,整型,比如a(20,20)。在这个二维数组中,设)。在这个二维数组中,设0表示表示“隔墙隔墙”,1表示表示“通路通路”。在一个记事本文件中先画好在一个记事本文件中先画好“迷宫迷宫”的线路,文本的线路,文本内容全部由内容全部由0和和1组成。然后利用文件操作的组成。然后利用文件操作的“读方式读方式”和和“字符串操作字符串操作”函数,把这个文件中的每一行中的函数,把这个文件中的每一行中的每一个字符读入到这个二维数组的各个数组元素中,每一个字符读入到这个二维数组的各个数组元素中,根据数组元素中的值是根据数组元素中的值是0还是还是1,则利用窗体的,则利用窗体的“Line”方法画出方法画出“黑黑
16、”“”“白白”分明的分明的“正方形正方形”,其实,其实“迷迷宫宫”就是由这些就是由这些“正方形正方形”紧密排列而成的。紧密排列而成的。返回返回4.1 简易计算器案例说明简易计算器案例说明该该“计算器计算器”可以实现简单的四则混合运算。用可以实现简单的四则混合运算。用户通过界面上的按钮输入户通过界面上的按钮输入“操作数操作数”和和“操作操作符符”,按下,按下“”按钮之后可以在文本框中显按钮之后可以在文本框中显示运算结果。按下示运算结果。按下“Cls”按钮可以清除文本框按钮可以清除文本框内容,按下内容,按下“Exit”则退出则退出“计算器计算器”。4.2 程序实现程序实现 1.界面设计界面设计在计
17、算器中的在计算器中的09数字数字“按钮按钮”以及小数点以及小数点“按按钮钮”的功能是一样的,用来完成输入数据的工作,而的功能是一样的,用来完成输入数据的工作,而“”、“”、“”、“”以及以及“Mod”按钮的功能按钮的功能也是相通的,主要是提供输入运算符,以完成不同的运也是相通的,主要是提供输入运算符,以完成不同的运算。对于这些功能基本相同的控件,在实际编程中,无算。对于这些功能基本相同的控件,在实际编程中,无需定义单个的控件,因为这样在控件数量上会比较多,需定义单个的控件,因为这样在控件数量上会比较多,容易混淆。容易混淆。2.代码设计:代码设计:4.3 相关知识相关知识1.控件数组的概念控件数
18、组的概念“控件数组控件数组”由是一组相同类型的控件组成的,由是一组相同类型的控件组成的,这一组控件共用一个相同的控件名称,即这一组控件共用一个相同的控件名称,即“名称名称”属性必须相同,具有基本相同的属性设置。当建属性必须相同,具有基本相同的属性设置。当建立控件数组时,系统给每个元素赋予了一个唯一立控件数组时,系统给每个元素赋予了一个唯一的索引号的索引号(Index),即控件数组的,即控件数组的“下标下标”,下标,下标值由值由Index属性指定。通过属性指定。通过“属性属性”窗口的窗口的Index属性,可以知道该控件的下标是多少。系统规定属性,可以知道该控件的下标是多少。系统规定第一个控件数组
19、元素的下标是第一个控件数组元素的下标是0,也就是说,控件,也就是说,控件数组的名字由数组的名字由“名称名称”属性指定,而数组中的每属性指定,而数组中的每个元素则由个元素则由Index属性指定。属性指定。4.3 相关知识相关知识2.创建控件数组的方法创建控件数组的方法创建控件数组的方法有两种:创建控件数组的方法有两种:(1)在进行界面设计添加控件时,通过)在进行界面设计添加控件时,通过“复复制制”、“粘贴粘贴”建立。建立。(2)在给控件对象命名时建立,)在给控件对象命名时建立,4.4 拓展知识拓展知识1.函数函数Format的应用的应用Forma()函数可以接受格式代码,按指定的格式()函数可以
20、接受格式代码,按指定的格式输出表达式。使用格式为:输出表达式。使用格式为:Format(表达式(表达式,格式,格式)2.案例案例5-5改进的改进的“调色板调色板”返回返回5.1变化矩阵案例说明变化矩阵案例说明该程序在运行时,如果单击该程序在运行时,如果单击“输出(输出(33)数组)数组”按钮,则会在界面上输出一个按钮,则会在界面上输出一个3行行3列的矩阵,列的矩阵,如图如图5-14所示;如果单击所示;如果单击“输出(输出(34)数)数组组”,则会在界面上输出一个,则会在界面上输出一个3行行4列的矩阵,列的矩阵,如图如图5-15所示。从表面上看,这应该需要定义所示。从表面上看,这应该需要定义两个
21、不同的二维数组,但在程序中我们并没有两个不同的二维数组,但在程序中我们并没有定义两个,仅仅需要一个数组就可以实现该程定义两个,仅仅需要一个数组就可以实现该程序。序。5.2 程序实现程序实现 1.界面设计:界面设计:2.代码设计:代码设计:5.3 相关知识相关知识 可以通过使用可以通过使用“动态数组动态数组”,在程序中任意改,在程序中任意改变数组的长度。在变数组的长度。在Visual Basic 6.0中,中,“动态动态数组数组”是最灵活、最方便的,有助于有效管理是最灵活、最方便的,有助于有效管理内存。内存。动态数组的定义一般分为两步:动态数组的定义一般分为两步:5.3 相关知识相关知识1.声明
22、一个没有下标参数的数组,其格式为:声明一个没有下标参数的数组,其格式为:Public|Static|Dim ()()As 类型类型“Public”,“Dim”,“Static”或或“Dim”与前面的定义语句与前面的定义语句说明是一致的。说明是一致的。2.用用“ReDim”语句分配数组实际的元素个数,格式为:语句分配数组实际的元素个数,格式为:ReDim Preserve 数组名数组名(维数定义维数定义)As 数据类型数据类型5.3 相关知识相关知识几点说明:几点说明:(1)“上界上界”和和“下界下界”可以是常量和有确定值的变量;可以是常量和有确定值的变量;(2)可以使用)可以使用“ReDim”
23、语句多次改变数组的数组元素个数和维语句多次改变数组的数组元素个数和维数,但不能改变这个数组的数据类型;数,但不能改变这个数组的数据类型;(3)如果重新定义数组,则会删除它原有数组元素中的数据,并)如果重新定义数组,则会删除它原有数组元素中的数据,并将数值型数组元素全部赋将数值型数组元素全部赋0,将字符型数组元素全部赋空串;,将字符型数组元素全部赋空串;(4)如果要重定义后不删除原有数据,应在定义数组时增加)如果要重定义后不删除原有数据,应在定义数组时增加“Preserve”关键字,只能改变最后一维的上界,不可以改变关键字,只能改变最后一维的上界,不可以改变数组的维数。数组的维数。(5)ReDim语句只能出现在过程中。语句只能出现在过程中。由上可知,动态数组声明时省略了括号中的下标,没有给定数组由上可知,动态数组声明时省略了括号中的下标,没有给定数组的大小。使用时需要用的大小。使用时需要用“ReDim”语句重新指出其大小。使用语句重新指出其大小。使用动态数组的优点是根据用户需要,有效地利用存储空间,是在动态数组的优点是根据用户需要,有效地利用存储空间,是在程序执行到程序执行到ReDim语句时才分配存储单元,而静态数组是在程语句时才分配存储单元,而静态数组是在程序编译时分配存储单元的序编译时分配存储单元的 返回返回