版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VB 编程班第十课1、介绍: 数 组1.一维数组,二维数组,数组,动态数组,控件数组。(本节课内容)2.2、说明:概 述数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合。用一个数组的应用的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。其表示形式:A(1),A(10)X(1,1),Y(0,0,0),X1(1,10),Y(1,2,5)X(2,10)Visual Basic 中的数组,按不同的方式可分为以下几类:按数组的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组。按元素的数据类型可分为:数值型数组、字符串数组、日
2、期型数组、变体数组等。按数组的维数可分为:一维数组、二维数组、对象数组:菜单对象数组、控件数组。数组。一维数组 一维数组的形式:Dim 数组名(to)As 或:例:Dim 数组名(to)Dim a(1 to 10) Aseger了a 数组有 10 个元素数组元数的数据类型1是下标的下界10是下标的上界与上面等价形式: Dim a%(1 to 10)说明:1数组名名规则与变量名相同。2数组的元素个数:上界-下界+1。3缺省为 0,若希望下标从 1 开始,可在模块的通用部分使用 Option Base 语句将设为 1。其使用格式是:Option Base 0|1 后面的参数只能取 0 或 1例如:
3、Option Base1 将数组中缺省下标设为 14和不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。5如果省略As 子句,则数组的类型为变体类型。6数组中各元素在内存占一片连续的示:空间,一维数组在内存中存放的顺序是下标大小的顺序,如图所一维数组元素的使用形式:数组名(下标)其中:下标可以是整型变量、常量或表达式。例如: 设有下面的数组 A(10) As则下面的语句都是正确的。egerA(1)=A(2)+B(1)+5 A(i)=B(i)B(i+1)=A(i+2)取数组元素运算 下标使用变量 下标使用表达式一维数组的基本操作可通过循环给数组元素的初值Fori = 1 T
4、o 10 A 数组的每个元素值为 1 A(i)=1Next i求数组中最大元素及所在下标Dim Max Aseger,iMax AsegerMax=A(1):iMax=1Fori = 2To10IfMax=A(i) iMax=iA(i)MaxThenEnd IfNext I将数组元素倒置Fori =1 To102 t=A(i) A(i)=A(10-i+1) A(10-i+1)=tNext I二、 排序问题1选择法排序算法:对有 n 个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第 1 个数交换位置;除第 1 个数外,其余 n-1 个数中选最小或最大的数,与第 2
5、 个数交换位置;依次类推,选择了 n-1 次后,这个数列已按升序排列。选择法排序(升序)的 VB 程序:For i = 1 To n - 1p = iFor j = i + 1 To nIf a(p) a(j) Then p = j Next jtemp = a(i) a(i) = a(p) a(p) = tempNext i2冒泡法排序(递增)算法:(将相邻两个数比较,小的调到前头)有 n 个数(存放在数组 a(n)中),第一趟将每相邻两个数比较,小的调到前头,经 n-1 次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;第二趟对余下的 n-1 个数(最大的数已“沉底
6、”)按上法比较,经 n-2 次两两相邻比较后得次大的数;依次类推,n 个数共进行n-1 趟比较,在第 j 趟中要进行 n-j 次两两比较。冒泡法排序(升序)的 VB 程序:For i = 1 To n - 1 For j = 1 To n-iIf a(j) a(j+1) Then temp=a(j) a(j)=a(j+1) a(j+1)=tempEnd ifNext jNext i二维数组及数组二维数组的格式如下:Dim 数组名( to , to ) As 其中的参数与一维数组完全相同。例如:Dim a(2,3)AsSingle二维数组在内存的存放顺序是“先行后列”。例如数组 a 的各元素在内
7、存中的存放顺序是:a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2)a(1,3)a(2,0)(2,1)a(2,2)a(2,3)二维数组的数组名(下标 1,下标 2)形式:例如: a(1,2)=10a(i+2,j)a(2,3)*2二维数组的二维数组的和一维数组基本相同,格式为:数组名(下标 1,下标 2)对二维数组进行赋值或输出时,一般采用二重循环来实现。数组的输入For i = 1 To 4For j = 1 To 5sc(i, j) = InputBox(输入 sc( &i & , & j & ) 的值)Next j Next I数组的输出输出如下图所示的下
8、三角数据Dim sc(5,5) AsFor i = 1 To 5eger,i%,j%For j = 1 To isc(i, j) = i * 5 + jPr Next j PrNext Isc(i, j); ; 换行二维数组的应用举例打印 4 名同学的英语、数学、法律 3 门课的成绩,并计算出每个同学的平均成绩。分析:把 4 名同学的及各科的分数分别存入一个一维字符串数组xm(4)和一个二维数值数组a(4,3)中,然后对数组(主要是二维数组)进行处理。程序如下:Private Subd1_Click()Dim a(4,3)As Single,xm(4)As String * 10,i%,j%,
9、aver!Pr Pr Pr Pr PrFor i = 1 To 4Tab(25);成绩表;Tab(15);英语;Tab(25);数学;Tab(35);法律;Tab(45);平均分aver = 0 xm(i)= InputBox(输入)Prxm(i);For j = 1 To 3a(i,j)= InputBox(输入 & xm(i)& 的一个成绩 aver = aver + a(i,j)Next javer = aver / 3PrTab(15);a(i,1);Tab(25);a(i,2);)Pr PrNext iEnd SubTab(35);a(i,3);Tab(45);aver数组的和定义数
10、组的格式如下:Dim 数组名( to , to ,) As 例如:Dim a(5,5,5) Asegera 是三维数组Dimb(2,6,10,5) As动态数组 (可调数组)egerb 是数组动态数组:在时未给出数组的大小。定长数组是在程序编译时分配空间,而动态数组是在程序执行时分配空间。5.4.1 动态数组的建立及使用建立动态数组包括和大小说明两步:1在使用 Dim、Private 或 Public 语句括号内为空的数组。格式:Dim | Private|Public数组名()As 数据类型例:Dima() Aseger2在过程中用 ReDim 语句指明该数组的大小。格式:ReDim Pre
11、serve 数组名(下标 1,下标 2)Preserve参数:保留数组中原来的数据例:RedimA(10)RedimPreserveA(20)说明:(1)ReDim 语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。(2)定长数组声时中的下标只能是常量,而动态数组 ReDim 语句中的下标是常量,也可以是有了确定值的变量。例:Private Sub Dim a()As Dim n%d1_Click()egern = Val(InputBox(input n) ReDim a(n)End Sub(3)在过程中可以多次使用 ReDim 来改变数组的大小,也可 改变数组
12、的维数。例:ReDim x(10)ReDim x(20)x(20) = 30Prx(20)ReDim x(20, 5)x(20, 5) = 10Prx(20, 5)(4)每次使用 ReDim 语句都会使原来数组中值丢失,可以在 ReDim 后加 Preserve 参数来保留数组中的数据。但此时 只能改变最后一维的大小。与数组操作有关的几个函数1.array 函数array 函数可方便地对数组整体赋值,但它只能给值后的数组大小由赋值的个数决定。Variant 的变量或仅由括号括起的动态数组赋值。赋例如,要将 1,2,3,4,5,6,7 这些值赋值给数组 a,可使用下面的方法赋值。 Dim a()
13、A=array(1,2,3,4,5,6,7)a =array(1,2,3,4,5,6,7)2求数组的上界Ubound( )函数、 下界 Lbound( )函数Ubound( )函数和 Lbound( )函数分别用来确定数组某一维的上界和下界值。使用形式如下:UBound(, ) LBound( , )其中:必需的。数组变量的名称,遵循标准变量命名约定。 :可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表示第一维,2如果省略默认是 1。3Split 函数使用格式:Split( ,)说明:表示第二维,如此等等。使用 Split 函数可从一个字符串中,以某个指定符号为分隔符,分离若干个子字
14、符串,建立一个下标从零开始的一维数组。控件数组控件数组的概念一组相同类型的控件组成。 它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)。 控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。例: Private Sub cmdName _Click(IndexIfIndex=3thenAseger)处理第四个命令按钮的操作End IfEnd Sub控件数组的建立控件数组中每一个元素都是控件,它的定义方式与普通数组不同。可以通过以下两种方法建立控件数组。方法一:已有的控件并将其粘贴到窗体上。方法二:将窗体上已有的类型相同的多个控件的Nam
15、e 属性设置为同一值。运行时添加控件数组的步骤如下:在窗体上画出某控件,设置该控件的 Index 值为 0,表示该控件为数组,这是建立的第一个元素,并可对一些取值相同的属性进行设置,如所有文本框的字体都取一样大小。在编程时通过 Load 方法添加其余的若干个元素,也可以通过Unload 方法删除某个添加的元素。Load 方法和 Unload 方法的使用格式: Load 控件数组名() Unload 控件数组名()其中,为整型数据。表示控件数组的某个元素。通过 Left 和Top 属性确定每个新添加的控件数组元素在窗体的位置,并将 Visible 属性设置为 True。你在设计时把这个属性赋值(一般为“0”)就相当于你创建了一个控件数组首先,建一个d 控件(Name 为d1)再建一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 永州市宁远县2025届三下数学期末调研模拟试题(含答案)
- 任务二 新能源电路图的识读
- 2025-2026月考试卷人教版八年级数学上册期末数学测试仿真冲刺卷(二)(解析版)
- 2026年幼儿园联合教研活动方案策划书
- 2026年幼儿园家乡主题活动方案
- 2026年初中语文学期工作计划
- 2026年护理职业风险防范措施
- 2026年小学阅读策略研究课题
- 2026年美容产品活动方案策划
- 2026年国庆美容院活动促销方案
- 仁爱科普版(2024)八年级下册英语期末复习:Unit 7-12作文 专项测试卷(含答案范文)
- 广东省深圳市龙岗区2025-2026学年初三年级中考适应性考试语文试题卷(含答案)
- 教科版小学三年级科学下册第三单元《只有一个地球》每节课教案汇编(含九个教案)
- 肝脏肿瘤疾病科普
- 2026年国开电大会计信息系统(本)形考测试卷含答案详解【培优】
- 2026年河南洛阳市中考生物考试真题及答案
- 压强(教学课件)-2025-2026学年人教版物理八年级下学期
- 中国成人2型糖尿病合并心血管疾病患者降糖药物应用专家共识课件
- 西安市自来水公司招聘试题
- 雨课堂学堂在线学堂云《创新思维与创业实验(东南)》单元测试考核答案
- 胰腺癌手术期管理国际指南解读
评论
0/150
提交评论