




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章数组 6 1数组的概念6 2静态数组及其声明6 3动态数组及其声明6 4ForEach Next结构6 5数组的基本操作6 6控件数组6 7程序示例 数学中表示一个数列时 通常使用a0 a1 a2 ai an的形式 我们将其称为数列a 用来表示一组相同类型的数 数列中的每一项都表示为ai的形式 其中a为数列名 i为该项在数列中所处的位置 又称为下标 比如把50名学生的成绩放到a0 a1 a2 a49中 a0中存放的是第一个学生的成绩 a1中存放的是第二个学生的成绩 6 1数组的概念 同样在VB中 要表示这50名学生的成绩 我们把50名学生的成绩放到a 0 a 1 a 49 中 与数列表示形式的不同点是 将下标放到了一对圆括号中 我们称这种表示为数组 使用数组可以缩短和简化程序 方便地对数组中的元素加以处理 6 1 1数组的引入 在VB中 数组是一组按一定顺序排列的数据的集合 例如 可以用一个数组a来存放100名学生的成绩 这时 这些学生成绩就表示为a 0 a 1 a 99 其中 a称为数组名 a i i 0 1 99 为数组元素 它表示第i 1个学生的成绩 i称为数组元素的下标 例6 1 数组是一组按一定顺序排列的数据的集合 通常情况下 同一数组中的数组元素的数据类型是相同的 但也可以不同 由声明时的数据类型所决定 例如 下面的声明语句 Dima 1To50 AsInteger声明了一个数组a 数组a中有50个数组元素 分别是a 1 a 2 a 3 a 50 其共同特点是 数组名是a 类型是整型 不同点是每个数组元素括号中的下标是不同的 6 1 2数组的概念 数组元素是由其下标来决定各自在数组中的位置的 因此数组元素又称为下标变量 数组元素由数组名 下标和圆括号共同组成 其一般形式如下 数组名 下标1 下标2 其中 下标可以是常量 变量或算术表达式 当下标的值为非整数时 系统会自动进行四舍五入处理 没有特别说明时 下标从0开始 例1 由一行共5个元素组成的数组x 它的5个下标变量为 x 1 x 2 x 3 x 4 x 5 例2 三元一次方程组的系数矩阵 组成的数组a 它有3行3列9个元素 这9个下标变量可表示为 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 a 2 0 a 2 1 a 2 2 在一个数组中 如果只需一个下标就可以确定一个数组元素在数组中的位置 则该数组称为一维数组 如例1 如果需要两个下标才能确定一个数组元素在数组中的位置 则该数组称为二维数组 如例2 依此类推 必须由N个下标才能确定一个数组元素在数组中的位置 则该数组称为N维数组 因此确定数组元素在数组中的位置的下标个数就是数组的维数 通常把二维以上的数组称为多维数组 VB规定数组的维数不得超过60 6 2静态数组及其声明 程序中使用某个数组之前必须对数组进行声明 声明的目的是确定数组的名称和它的数据类型 指明数组的维数和每一维的上 下界的取值范围 即维的大小 VB系统依据声明给该数组分配空间 以存放数组的所有元素 我们将声明时指定了上 下界的数组称为静态数组 1 一维数组声明一维数组的格式如下 Dim数组名 下界To 上界 As数据类型 其中 数组名 与简单变量相同 其命名应符合标识符规则 下界To 上界 下标下界最小可为 32768 最大上界为32767 若省略下界时 表示下标的取值是从0开始 等价于 0To上界 As数据类型 与简单变量相同 用来说明数组的类型 如果省略 则默认为是Variant类型 6 2 1 数组声明语句 一维数组的大小为 上界 下界 1所谓数组的大小就是该数组所包含的数组元素的个数 有时也称为数组的长度 例如 Dima 1To50 AsInteger声明了数组a是一维数组 有50个元素 下标的范围为1 50 Dimxm 9 AsString 3声明了数组xm是一维定长字符串数组 有10个元素 下标的范围为0 9 每个元素最多存放3个字符 3个英文字母或3个汉字 2 多维数组声明多维数组的格式如下 Dim数组名 下界1To 上界1 下界2To 上界2 As数据类型 其中 数组名 As数据类型与一维数组的规定相同 下界To 上界的个数决定了数组的维数 最多允许有60维 多维数组大小的计算公式如下 每一维的大小 上界 下界 1数组的大小 第1维大小 第2维大小 第n维大小 例如 DimB 2 1To2 AsSingle声明了一个二维单精度型数组B 第1维的下界为0 上界为2 第2维的下界为1 上界为2 数组元素为B 0 1 B 0 2 B 1 1 B 1 2 B 2 1 B 2 2 B数组的大小 2 0 1 2 1 1 3 2 6 个数组元素 DimA 1To100 3To4 AsInteger声明了一个二维整型数组A 第1维的下界为1 上界为100 第2维的下界为 3 上界为4 数组元素为 A 1 3 A 1 2 A 1 1 A 1 0 A 1 4 A 2 3 A 2 2 A 2 1 A 2 0 A 2 4 A 100 3 A 100 2 A 100 1 A 100 0 A 100 4 A数组的大小 100 1 1 4 3 1 100 8 800 个数组元素 使用数组时注意 1 数组名的命名规则与变量名相同 在命名时尽可能有一定含义 做到 见名知义 2 在同一个过程中 数组名不能与变量名同名 否则会出错 例如 PrivateSubForm Click Dima 5 AsIntegerDimaAsIntegera 3a 1 2Printa a 1 EndSub 运行程序 单击窗体 将显示如图所示的信息框 3 下标只能放到圆括号中 不能使用中括号或大括号 4 数组的声明语句中维的上 下界只能是常数表达式 不能为变量名 例如 Dima n AsInteger是不合法的 即使在执行数组声明语句之前给变量赋了值 也是错误的 例如 n InputBox 请输入n的值 Dima n AsInteger执行上面的操作后 将产生出错信息 如图6 4所示 5 数组的声明格式中 若省略下界时 表示下标的取值是从0开始 等价于 0To上界 实际使用中 在程序的窗体模块或标准模块用OptionBasen语句可重新设定数组的下界 例如 OptionBase1设定下界为1 6 数组声明语句声明数组的同时 还将数组初始化 数值型的数组元素初始值为0 变长字符类型的数组元素初始值为空字符串 定长字符类型的数组元素初始值为指定长度个数的空格 布尔型的数组元素初始值为 False 变体 Variant 类型的数组元素初始值为 Empty 7 静态数组声明以后 在使用中就不能改变其维数和大小 一旦使用了声明范围以外 数组元素的下标值小于声明时的下界或大于声明时的上界 的数组元素就会产生 下标越界 错误 8 声明格式中只使用了Dim来声明数组 除此之外 还可以使用Private Public Static以及ReDim几个保留字 他们的用法取决于数组使用的作用域 见下表所示 思考题 例6 2 在窗体模块的通用声明处声明数组 分析下列语句的正确性 A PublicA 10 AsIntegerB DimA 10 AsIntegerC PrivateA 10 AsIntegerD StaticA 10 AsInteger 6 2 2变体型数组数组声明中如果指定数据类型为Variant或者省略 As数据类型 子句时 称数组为变体型数组 变体型数组特殊的地方是其数组元素的数据类型可以不同 例如 OptionBase1DimElement 5 声明了一个有5个元素的变体型数组 数组元素为Element 1 Element 2 Element 5 这5个元素分别可以有不同的数据类型 动态数组是在声明时不指明数组的大小 使用时用ReDim语句指出大小的数组 动态数组使用灵活 方便 有助于有效管理内存 6 3动态数组及其声明 6 3 1动态数组声明动态数组的声明格式如下 Dim数组名 As数据类型 ReDim Preserve 数组名 下界1To 上界1 下界2To 上界2 As数据类型 说明 1 使用ReDim语句重新声明动态数组时 维界表达式中可以出现变量 也就是说 可以使用变量作为下标值 2 ReDim语句只能在过程中使用 在使用ReDim语句时 不能改变数组的数据类型 3 在过程中可以多次使用ReDim语句改变数组的大小 也可以改变数组的维数 4 可以用ReDim语句直接声明一个数组 5 每次使用ReDim语句都会使原来数组中的值丢失 解决的方法是在ReDim语句中使用Preserve选项 该选项用来保留数组中的数据 但使用Preserve选项后只能改变最后一维的上界 如果改变了其他维的上 下界或最后一维的下界 运行时都会出现 下标越界 的错误 思考题 例6 4 下面是有关数组的叙述 分析其正确性 A 根据数组声明的方式 数组分为静态数组与动态数组B 在过程中 不能用Private语句声明数组C 利用ReDim语句重新声明一个数组时 不得改变已声明的数组的数据类型D 数组重新声明后 原有的数组元素内容将不予保留 6 3 2Erase语句 Erase语句的功能是重新初始化静态数组的元素 或者释放动态数组占用的存储空间 Erase语句的格式如下 Erase数组名 数组名 说明 1 对于静态数组 Erase语句根据数组的数据类型不同 初始化的值也不同 2 对于动态数组 Erase语句释放数组占用的内存 也就是说 经Erase处理后动态数组不复存在 在下次引用该动态数组之前 程序必须使用ReDim语句来重新声明该数组 例6 7 针对下列有关数组的说法 分析其正确性 A 在窗体模块中不可以声明全局数组B 可以使用Erase语句释放所有数组所占据的存储空间C 语句DimX 3 6 2 AsInteger声明了一个维上界是6的一维整型数组D 在过程中用ReDim语句声明的动态数组 其下标的上下界可为已赋值的变量 思考题 6 3 3与数组相关的函数 1 LBound函数LBound函数的功能是返回数组某维的维下界的值 它的调用形式如下 LBound 数组名 维数 若省略 维数 参数 则函数返回数组第一维的维下界的值或一维数组的下界 2 UBound函数UBound函数的功能是返回数组某维的维上界的值 它的调用形式如下 UBound 数组名 维数 UBound函数各个参数的意义同LBound函数 不同的是它返回的是数组维上界的值 例如 执行下面的程序段 PrivateSubForm Click DimA 2To3 AsInteger B 0To5 10To30 PrintLBound A LBound B 1 LBound B 2 PrintUBound A UBound B 1 UBound B 2 EndSub程序执行结果是 20103530 3 Array函数Array函数的功能是为数组元素赋值 即把一个数据集读入某个数组 它的使用形式如下 数组变量名 Array 数组元素值表 其中 数组变量名 是预先定义的Variant类型的变量名 数组元素值表 是一个用逗号隔开的值表 例如 执行下面的程序段 OptionBase1PrivateSubForm Click DimDAsVariantD array 11 18 3 21 Fori 1To4Print D i D i NextiEndSub程序运行结果如右图所示 ForEach Next结构语句的格式是 ForEach成员In数组名 集合名 ExitFor Next成员 6 4ForEach Next结构语句 ForEach Next则不需要知道循环的次数 它可以遍历数组 或集合 中的每个数组元素 或成员 程序执行ForEach Next语句时 VB会处理数组或集合中每一个元素 并在处理完时会自动停止循环 6 5数组的基本操作 6 5 1数组的引用 例 OptionBase1DimA 5 AsInteger B 3 3 AsInteger 声明数组A 5 4 A 5 是引用A数组的第5个元素B 2 3 2 B 2 3 是引用B数组的第2行第3列即第6个元素 注意 1 上例Dim语句中的A 5 与赋值语句 A 5 4 中的A 5 的含义是不同的 Dim语句中的A 5 是声明A数组 并说明A数组的上界为5 而赋值语句 A 5 4 中的A 5 是表示引用A数组的第5个元素 并为其赋值4 2 引用二维或多维数组元素时 必须给出两个或多个下标 3 引用数组元素时 其下标的值不能超出数组声明中相应的下界或上界 否则产生 下标越界 的错误 6 5 2数组元素的赋值 1 利用赋值语句为数组元素赋值例如 OptionBase1Dimxm 4 AsString xh 4 AsString 9 声明数组xm 1 李剑锋 xh 1 200805201 xm 2 高军 xh 2 200805207 xm 3 肖海平 xh 3 200805210 xm 4 赵欣欣 xh 4 200805213 2 利用循环语句为数组元素赋值在For循环中用循环控制变量作为数组元素的下标 就可依次访问一维数组的每一个元素 同样使用嵌套的For循环 用内 外循环的循环控制变量分别作为第一维 第二维的下标就可依次访问二维数组的每一个元素 3 利用InputBox函数为数组元素赋值程序设计中 可以使用InputBox函数让用户从键盘输入数值为数组元素赋值 4 利用Array函数为数组元素赋值 6 5 3数组元素的输出 例6 11 有如下形式的二维数组 要求按元素的排列次序分别输出到文本框和图片框中 6 6 1控件数组的概念控件数组由一组相同类型的控件组成 具有以下特点 1 控件数组具有相同的控件名 控件数组名 即所有元素的Name属性必须相同 控件数组中的每个控件都有一个与之关联的下标 或称索引 Index 下标值由Index属性指定 控件数组的每一个控件称为该控件数组的一个元素 表示为 控件数组名 索引号 例如 Label1 0 Label1 1 Label1 2 就是一个标签控件数组 6 6控件数组 2 控件数组中的控件具有同样的属性设置 但属性值可以不同 3 控件数组共享同样的事件过程 例如 在窗体上建立一个命令按钮数组Cornmand1 运行时不论单击哪一个按钮 都会调用以下事件过程 SubConmmnd1 Click IndexAsInteger EndSub 思考题 例6 12 分析下面有关控件数组的说法的正确性 控件数组由一组具有共同名称和相同类型的控件组成 控件数组中的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国履动式气压油压拼板机市场调查研究报告
- 2025-2030中国汽车摩擦材料行业供需分析及发展前景研究报告
- 2025-2030中国樱桃酒行业供需趋势及投资风险研究报告
- 2025-2030中国奢华面膜行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国塑胶围栏行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国商用厨房设备和和电器行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国危化品行业市场发展现状及项目合同与案例研究报告
- 搜七年级下册试卷及答案
- 四年级道法试卷及答案
- 遴选要面试真题及答案
- 大学物业服务月考核评价评分表
- GB 36893-2024空气净化器能效限定值及能效等级
- 19G522-1钢筋桁架混凝土楼板图集
- RPA财务机器人开发与应用 课件 6.1 RPA网银付款机器人
- 软件开发中介服务协议范本
- 云南省昆明市2025届高三年级第二次联考+物理试卷
- 企业宣传与品牌形象设计手册
- 别墅设备维护方案
- DL∕T 1917-2018 电力用户业扩报装技术规范
- 山东省临沂市莒南县2023-2024学年七年级下学期期末数学试题
- 九宫数独200题(附答案全)
评论
0/150
提交评论