




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章 数组,10.1 数组的概念 10.2 数组的作用域 10.3 一 维 数 组 10.4 默 认 数 组 10.5 数组元素的操作 10.6 静态数组与动态数组 10.7 数组的清除和重定义 10.8 控 件 数 组 10.9 数组的排序与查找,10.1 数组的概念,数组是一组变量的集合,各个变量有相同的名字,相同的数据类型,彼此间具有特定的关系。,10.2 数组的作用域,与变量一样数组按作用域分为:全局数组(应用程序级)、模块级数组和局部数组(过程级)。,1全局数组 在标准模块的声明部分使用Public声明,可以在应用程序的所有模块中对其元素进行存取。 Public 数组名(n)As 数据类型 注意:不能在窗体模块和类模块中声明全局数组。,2模块级数组 在模块的声明部分使用Private或Dim语句(二者等价)声明,模块级数组只在声明它的模块中可用。 Private | Dim 数组名(n)As 数据类型,3过程级数组 在过程中使用Dim或Static语句声明,只能在本过程中使用。 Dim|Static 数组名(n)As 数据类型 使用Static声明的静态数组,在过程的两次执行之间它的所有元素的值均被保留。,10.3 一 维 数 组,1引例 2语法结构 一维数组是数组的最简单形式,就像简单的变量一样,你必须在使用数组前声明它。声明一维数组的语法有以下两种方式。,Dim 数组名称(下标下界 To 下标上界)As 数据类型 Dim 数组名称(下标上界)As 数据类型,要点提示: (1)“数组名称”的命名规则与普通变量的命名规则一致。 (2)在同一过程中,数组名称不能与其他变量名称相同,否则会出错。图10-1表示数组名与变量名相同,出现编译错误。,(3)在定义数组时,每一维的元素个数必须由一个常数来确定,不能是变量或表达式。 (4)下标下界和下标上界一起用来限定数组起止单元的序号,下界必须小于上界,它们必须是整数,下标下界默认为0。语句Option Base n用来指定数组下标的默认下界,n只能是0或1。,(5)LBound函数返回数组某一“维”的下界值,而UBound函数返回数组某一“维”的上界值,两个函数一起使用即可确定一个数组的大小。其格式为: LBound(数组,维) UBound(数组,维) (6)数据类型是指组成数组的单元中所存储的数的类型,它们是相同的,就是说每一个特定的数组中,只能存储一种类型的数据。,10.4 默 认 数 组,默认数组就是默认数据类型为Variant的数组。在一般情况下,定义数组应指明其类型。,如上节所述,数组在定义时要声明其数据类型,也就是说一个数组各个元素的数据类型都要求相同,即一个数组只能存放同一种类型的数据。然而对于默认数组而言,同一个数组中却可以存放各种不同数据类型的数据。因此,默认数组可以说是一种“混合数组”。,一般来说,默认数组变量可以通过以下3种方式定义: (1)显式定义为Variant。例如: Dim Numbers() As Variant (2)在定义时不指明类型。例如: Dim Numbers() (3)不定义而直接使用。,10.5 数组元素的操作,10.5.1 数组的引用 结论:类似于Number(2)的表示,只有出现在声明语句中时为数组的定义,出现在其他任何地方都是对数组元素的引用。,10.5.2 数组的输入 对于数组元素的输入,一般有3种方法: (1)直接使用赋值语句,即通过赋值运算符“”来输入。 (2)使用InputBox函数,结合For循环控制结构来输入。 (3)特别的,对于一维数组,可使用Array函数来输入。,10.5.2.1 一维数组使用Array函数输入 1引例 2语法结构 Array函数用来把一个数据集合读入一维数组。其格式为: Dim 数组变量名 As Variant 数组变量名Array(数组元素值),注意: (1)在“数组变量名”之后没有括号。 (2)数组变量只能定义为Variant型,且没有上下界。 (3)“数组元素值”是需要赋给数组各元素的值,各值之间以逗号分开。 (4)只能给一维数组赋值。,10.5.2.2 使用InputBox函数 对于二维或二维以上的数组的数组元素一般通过For循环语句配合InputBox函数输入。 10.5.3 数组元素的输出 数组元素的输出可使用Print方法来实现。,10.5.4 For EachNext语句 类似于循环控制的ForNext语句For EachNext语句可以用来执行指定重复次数的一组操作,但不需要为其提供初值和终值,而是根据数组元素的个数确定执行循环体的次数。For EachNext语句专门用于数组或对象“集合”的操作。其一般形式为:,For Each 成员 In 数组 循环体 Exit For Next成员 这里的“成员”是一个变体类型变量,它是为循环提供的,并在For EachNext结构中重复使用,它实际上代表的是数组中的每个元素。“数组”是一个数组名,它没有括号及上下界。,10.6 静态数组与动态数组,定义数组后,为了使用数组必须为数组开辟所需要的内存区。然而在实际应用中往往不能马上确定数组中元素的个数,也就是说在Visual Basic中内存区开辟的时机不同,根据内存开辟的时机可以把数组分为静态(Static)数组和动态(Dynamic)数组。通常把需要在编译程序时开辟内存区的数组叫做静态数组,而把需要在运行时开辟内存区的数组叫做动态数组。,数组的定义形式决定了其为动态数组还是静态数组,即: (1)用数值常数或符号常量作为下标定维的数组是静态数组。 (2)用变量作为下标定维的数组是动态数组。,动态数组以变量作为下标值,在程序运行过程中完成定义。创建动态数组的一般步骤如下: (1)和普通数组的声明一样使用Dim语句。公用数组用Public语句声明数组;模块级数在模块级(窗体层或标准模块)用Dim语句声明数组;局部数组在过程中用Static或Dim语句声明数组。,此数组为一个空维数组,即一个没有下标的数组,但括号不能省略。 (2)用ReDim语句在过程中分配实际的元素个数。 例如: Dim TestVar() As Integer 在窗体层或标准模块中声明 Dim Size As Integer Sub Form_Click() Size=InputBox(“输入一个值:“,“数据“,“12“) ReDim TestVar(Size) End Sub,该例先在窗体层或标准模块中用Dim语句声明了一个空维数组TestVar和一个变量,然后在过程中用ReDim语句定义该数组,下标Size在运行时输入。 ReDim语句的格式为: ReDimPreserve 数组变量名(下标变量) As 类型,该语句用来重新定义动态数组按定义的上下界重新分配存储单元。当重新分配动态数组时,数组中的内容将被清除,但如果在ReDim语句中使用了Preserve选择项,则不清除数组内容。,ReDim只能出现在事件过程或通用过程中,用它定义的数组是一个“临时”数组。即在执行数组所在的过程时为数组开辟一定的内存空间,当过程结束时,这部分内存即被释放。,在使用ReDim 语句进行数组重定义时应注意: (1)ReDim只能出现在过程中,与Dim、Static语句不同,ReDim是一个可执行语句,应用程序在运行该语句时执行一个操作。 (2)ReDim语句只能改变元素的个数,不能改变数组的维数。 (3)不能用ReDim改变数组类型。,10.7 数组的清除和重定义,1引例 2语法结构 静态数组一经定义其大小是不能改变的,动态数组的大小在执行期间可以重新定义。在程序运行中,对静态数组有时需要清除数组的内容,对动态数组有时需要对数组进行多次重新定义,这时可以用Erase语句来实现,其格式为: Erase数组名,数组名,说明: (1)Erase语句用于静态数组时,如果数组是数值型数组,则把数组中的所有元素置为0;如果是字符串数组,则把所有元素置为空字符串;如果是记录数组,则根据每个元素(包括定长字符串)的类别重新进行设置 。,(2)Erase语句用于动态数组时,将删除整个数组结构并释放该数组所占用的内存。 (3)Erase语句用于变体数组时,每个元素将被重置为“空”(Empty)。 Erase释放动态数组所使用的内存。在下次引用该动态数组之前,必须用ReDim语句重新定义该数组变量的维数。,10.8 控 件 数 组,10.8.1 基本概念 控件数组由一组相同类型的控件组成,比如一组按钮或一组单选钮。这些控件共用一个相同的控件名字,具有同样的属性设置。与其类型的数组一样,数组中的每个控件都有惟一的索引号(IndexNumber),即下标,其所有元素(控件)的Name属性必须相同。,对于若干个控件执行大致相同操作的情况时,控件数组是很有用的,控件数组共享同样的事件过程。 控件数组的每个元素都有一个与之关联的下标,或称索引(Index),与其他类型的数组不同,控件数组的下标值由Index属性指定。由于一个控件数组中的各个元素共享Name属性,所以Index属性与控件数组中的某个元素相对应。,10.8.2 建立控件数组 控件数组是针对控件建立的,因此与普通数组的定义不一样。可以通过以下两种方法来建立控件数组。,第一种方法操作步骤如下: (1)在窗体上画出作为数组元素的各个控件。 (2)单击要包含到数组中的某个控件,将其激活。 (3)在属性窗口中选择“(名称)”属性,并键入控件的名称。,(4)对每个要加到数组中的控件重复步骤(2)、步骤(3),键入与步骤(3)中相同的名称。 当对第二个控件键入与第一个控件相同的名称后,Visual Basic将显示一个对话框,询问是否确实要建立控件数组。单击“是”将建立控件数组,单击“否”将放弃建立操作。,第二种方法操作步骤如下: (1)在窗体上画出一个控件,将其激活。 (2)执行“编辑”菜单中的“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省揭阳市空港经济区2026届九上化学期中综合测试试题含解析
- 山东省日照市东港区新营中学2024-2025学年部编版七年级下学期历史期中考试题(含答案)
- 2026届四川省自贡市曙光中学化学九年级第一学期期末达标检测试题含解析
- 2026届广东省茂名市直属学校英语九上期末联考模拟试题含解析
- 2026届福建省厦门市四校化学九年级第一学期期中质量检测试题含解析
- 旅游景区物业经营权及旅游服务合作协议
- 离婚协议书中个人债务分担协议书范本
- 专科康复治疗学考试题及答案
- 珠宝拍卖代理合同及拍卖规则及流程清单
- 专技十三级考试题目及答案
- 2025年全国企业员工全面质量管理知识竞赛题库及答案(共70题)
- 改良风险矩阵法在压力管道安全风险分级管控中的应用
- 工程竣工财务决算审计服务方案投标文件(技术方案)
- 2024年IMO中国国家集训队第一阶段选拔试题及答案解析
- 2025年农村土地承包经营权流转合同样本
- 特种设备定期检验与维护管理
- 2025年上海闵行区高三一模高考英语模拟试卷(含答案详解)
- 流浆箱工作原理及控制
- 《保险诚信教育》课件
- 统编版2024-2025学年道德与法治三年级上册全册教案
- 第一章 地球的运动 单元复习 课件高二上学期 地理 人教版(2019)选择性必修一
评论
0/150
提交评论