




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic语言程序设计 第8章数组 2 第8章数组 8 1数组的概念 8 2静态数组和动态数组 8 3数组的基本操作 8 4数组的初始化 8 5控件数组 3 8 1数组的概念 除基本数据类型外 VB还提供了数组类型 利用数组 可以方便灵活地组织和使用数据 数组是有序的数据的集合 在VB中 一个数组中的元素可以是相同类型的数据 也可以是不同类型的数据 8 1 1数组的定义8 1 2默认数组 4 8 1数组的概念 一个数组如果只用一个下标就能确定一个数组元素在数组中的位置 则称为一维数组 也可以说 由具有一个下标的下标变量所组成的数组称为一维数组 而由具有两个或多个下标的下标变量所组成的数组称为二维数组或多维数组 5 8 1 1数组的定义 数组应当先定义后使用 可以使用Dim Static Redim Public语句声明一个数组 在定义数组时 VisualBasic提供了两种格式 第一种格式对于一维数组 格式如下 Dim数组名 下标上界 As类型名称例如 DimArray 5 AsInteger该数组的名字为Array 类型为整型 有6个数组元素 array 0 array 5 6 8 1 1数组的定义 对于二维数组 格式如下 Dim数组名 第一维下标上界 第二维下标上界 As类型名称例如 DimTest 2 3 AsInteger定义了一个二维数组 名字为Test 类型为整型 该数组有3行 0 2 4列 0 3 占据12 3 4 个整型变量的空间 7 8 1数组的概念 在VB中 把一组具有同一名字 不同下标的下标变量称为数组 其一般形式如下 S n S 数组名n 下标 一个数组可以含有若干个下标变量 或称数组元素 下标用来指出某个数组元素在数组中的位置 S 8 代表S数组中的第八个元素 在VB中 使用下标变量时 必须把下标放在一对紧跟在数组名之后的括号中 必须把下标变量写成S 8 不能写成S8或S8 也不能写成S 8 8 8 1数组的概念 说明 1 数组必须先定义 后使用 如果不声明其数据类型 则自动定义为Variant类型 2 数值数组中的全部元素都初始化为0 而把字符串数组中的全部元素都初始化为空字符串 3 下标的下界默认为0 可以在通用声明处使用OptionBase1语句来设置默认下标为1 9 8 1 1数组的定义 2 第二种格式第一种格式定义的数组下标的下界只能是0或1 而如果使用第二种格式 可根据需要指定数组下标的下界 格式如下 Dim数组名 下界To 上界 下界To 上界 As类型名称例如 DimArr 2To3 AsInteger定义了一个一维数组Arr 其下标的下界为 2 上界为3 数组元素为Arr 2 Arr 1 Arr 0 Arr 1 Arr 2 Arr 3 共有6个 10 8 1 1数组的定义 UBound和LBound函数返回一个数组中指定维数的上下界 例 DimA 1To100 0To50 3To4 PrintLBound A 1 UBound A 1 PrintLBound A 2 UBound A 2 PrintLBound A 3 UBound A 3 输出结果为 1100 第一维的下界和上界050 第二维的下界和上界 34 第三维的下界和上界 11 8 1 2默认数组 在VB中 允许定义默认数组 所谓默认数组 就是数据类型为Variant的数组 在一般情况下 定义数组应指明其类型 例如 StaticElec 1To100 AsInteger定义了一个类型为整型的数组Elec 如果把上面的定义改为 StaticElec 1To100 则定义的数组是默认数组 其类型默认为Variant 该定义等价于 StaticElec 1To100 AsVariant 12 8 1 2默认数组 默认数组中可以存放各种不同的数据 因此 默认数组可以说是一种 混合数组 例如 SubForm Click StaticDefau 5 Defau 1 100Defau 2 234 56Defau 3 Beijing Defau 4 20 NowDefau 5 HAAFEndSub 该过程定义了一个默认数组 并且给数组元素赋予了不同类型的数据 在随机文件操作时经常使用 13 8 2静态数组和动态数组 为了使用数组 必须为数组开辟所需要的内存区 根据内存区开辟时机的不同 可以把数组分为静态 Static 数组和动态 Dynamic 数组 在编译时开辟内存区的数组叫做静态数组 在运行时开辟内存区的数组叫做动态数组 8 2 1动态数组的定义8 2 2数组的清除和重定义 14 8 2 1动态数组的定义 动态数组的定义过程 首先用Dim等语句定义一个没有下标的数组 然后在过程中用ReDim语句数组分配数组元素 例 DimTest AsIntegerDimSize Size InputBox 输入数字 ReDimTest Size 该程序段首先定义了一个动态数组Test 然后可以通过Inputbox函数输入数组的大小 在程序运行过程使用Redim语句动态分配数组元素的个数 15 8 2 1动态数组的定义 说明 Redim语句可以随时修改数组中元素的个数 Dimthis AsStringSubCommand1 Click ReDimthis 4 this 2 Microsoft Printthis 2 ReDimPreservethis 6 this 5 VisualBasic Printthis 5 EndSub 注意 Redim语句不可以改变原有定义的数据类型 注意 当redim语句中带有Preserve关键字 重新定义数组元素的时候将保留数组元素原有值 16 8 2 2数组的清除和重定义 数组一经定义 便在内存中分配了相应的存储空间 其大小是不能改变的 也就是说 在一个程序中 同一个数组只能定义一次 有时候 可能需要清除数组的内容或对数组重新定义 这可以用Erase语句来实现 其格式为 Erase数组名 数组名 注意 在Erase语句中 只给出要刷新的数组名 不带括号和下标 17 8 2 2数组的清除和重定义 说明 1 Erase用于静态数组 将把该数组所有数组元素置为初始值 但是数组还存在 2 Erase用于动态数组 将删除该数组 释放数组内存空间 也就是说删除动态数组后 该数组消失 18 8 3数组的基本操作 建立一个数组之后 可以对数组或数组元素进行操作 数组的基本操作包括输入 输出及复制 这些操作都是对数组元素进行的 此外 在VisualBasic中还提供了ForEach Next语句 可用于对数组的操作 8 3 1数组元素的输入 输出和复制8 3 2ForEach Next语句 19 8 3 1数组元素的输入 输出和复制 1数组的引用Dimx 8 x 8 56 t x 9 该语句中 x 8 不是数组元素 而是数组说明 说明了该数组中可以使用的最大下标为8 该语句中 x 8 是数组元素 代表数组x中序号为8的元素 注意使用数组元素类型和维数和定义时保持一致 如果引用数组元素超出定义时的范围 则运行时将出现 下标越界 错 20 8 3 1数组元素的输入 输出和复制 2数组元素的输入 1 可以用InputBox函数为数组元素依次赋值 DimA 5 Fori 0To5A i InputBox 请输入一个数 Nexti 2 将数组元素赋值为有规律的数列 DimA 5 Fori 0To5A i iNextI 3 将数组元素赋值为某个范围的随机数DimA 5 Fori 0To5A i int rnd 100 NextI 21 8 3 1数组元素的输入 输出和复制 3数组元素的输出通常使用For循环输出一维数组 用双重For循环输出二维数组 例 Fori 0To5PrintA i NextI 例 Fori 0To4Forj 0To4Printa i j NextPrintNext 22 8 3 1数组元素的输入 输出和复制 4数组元素的复制单个数组元素可以像简单变量一样从一个数组复制到另一个数组 例如 DimB 4 8 A 6 6 B 2 3 A 3 2 二维数组中的元素也可以复制给一个一维数组中的某个元素 并且反之亦然 例如 DimA 8 B 3 2 A 3 B 1 2 B 2 1 A 4 23 8 3 2ForEach Next语句 ForEach Next语句类似于For Next语句 两者都用来执行指定重复次数的一组操作 但ForEach Next语句专门用于数组 其一般格式为 ForEach成员In数组循环体 ExitFor Next 成员 成员 变体型变量 每次循环指代数组中的一个数组元素 数组 数组名 没有括号和上下界 24 8 3 2ForEach Next语句 例 DimMyArray 1to5 ForEachxinMyArrayPrintx Nextx 因为数组MyArray有5个元素 所以循环将重复执行5次 每次输出数组中的一个元素的值 x类似于For循环中的循环控制变量 但不需要为其提供初值和终值 而是根据数组元素的个数确定执行循环体的次数 此外 第一次循环 x的值代表的是myarray 1 第二次循环 x代表myarray 2 等等 25 8 4数组的初始化 所谓数组的初始化 就是给数组的各元素赋初值 VisualBasic提供了Array函数 利用该函数 可以使数组在程序运行之前初始化 得到初值 26 8 4数组的初始化 Array函数格式为 数组变量名 Array 数组元素值 例 Dimabcasvariantabc array 9 4 6 5 8 作用是 将array函数中的数据序列分别赋予数组abc中的各个数组元素 相当于abc 0 9 abc 1 4 abc 4 8 27 8 4数组的初始化 说明 1数组的最小下标可以为0或1 要注意Optionbase命令的设置 2数组变量不能是具体的数据类型 只能是变体 Variant 类型 3Array函数只适用于一维数组 即只能对一维数组进行初始化 不能对二维或多维数组进行初始化 28 8 5控件数组 在VB中 可以使用控件数组 它为处理一组功能相近的控件提供了方便的途径 8 5 1基本概念8 5 2建立控件数组 29 8 5 1基本概念 控件数组由一组相同类型的控件组成 这些控件共用一个相同的控件名字 具有同样的属性设置 数组中的每个控件都有惟一的索引号 IndexNumber 即下标 其所有元素的Name属性必须相同 控件数组共享同样的事件过程 30 8 5 1基本概念 控件数组中各控件名称一样 Index属性从0开始排列 第二 三个按钮的名称也是command1 Index属性分别为1和2 31 8 5 1基本概念 控件数组的事件过程中加入了一个Index参数 用来区分发生事件的各控件数组元素 单击第一个按钮时 index参数为0 依次类推 通常使用情况语句对index参数加以判断 执行不同的语句段 32 8 5 2建立控件数组 控件数组是针对控件建立的 因此与普通数组的定义不一样 可以通过以下两种方法来建立控件数组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年户外家具批发销售合同范本-生态环保材料
- 2025年智能零售终端设备租赁与市场销售执行合同
- 2025年高科技产业园区展示厅场地租赁与全方位服务管理合同
- 2025年金融数据深度分析及市场趋势预测报告定制合同
- 2025年环保材料运输中介合作协议
- 2025年生物医药研发公司实验室助理劳动合同书
- 2025年度智能农业化肥原料采购保障协议
- 2025年农村地区5G基站设备安装与网络覆盖优化服务合同
- 2025年绿色生态区改造项目拆迁及补偿服务合同
- 2025年离婚案中房产及财产重新评估分配执行合同
- 高速天桥拆除方案(3篇)
- 第1课 鸦片战争 课件 历史统编版2024八年级上册
- 2025年中国冷链物流行业投资前景分析、未来发展趋势研究报告(智研咨询发布)
- 2025合作合同范本下载
- 手外伤急救诊疗流程标准化
- 农村土地托管培训课件
- 老年专科护士学习培训汇报
- 基孔肯雅热防控培训课件
- 公司岗位补助管理办法
- 游戏与儿童发展课件
- 捐赠助学活动方案
评论
0/150
提交评论