vb之_数组及其使用课件_第1页
vb之_数组及其使用课件_第2页
vb之_数组及其使用课件_第3页
vb之_数组及其使用课件_第4页
vb之_数组及其使用课件_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 数组 西南交通大学峨眉校区唐加胜唐加胜 本章要求:本章要求: 1.理解数组的概念 2.掌握数组的定义及其引用 3.掌握控件数组的建立及使用。 4. 理解常用的排序方法。本章重点:本章重点:数组定义及引用方法,排序算法本章难点:本章难点:动态数组、排序算法p数组是具有相同数据类型的一组有序数据。p数组中的变量称为数组元素。p数组元素的表示 :数组名(下标数组名(下标1,下标下标2)。p例如:a(1) 、 a(1,2)p只有一个下标的数组叫一维数组一维数组p有两个下标的数组叫二维数组二维数组, ,最多可达60维。p数组在使用前必须先声明数组在使用前必须先声明(数组名、类型、维数和数组的大小

2、)。p数组声明时,静态数组静态数组 没有指定维数和大小的数组称为动态数组动态数组。前者大小固定,后者在使用前需要重定义。7.1 数组的定义和使用一、数组的定义n也可以使用Public和Private来定义数组。n数组定义举例:数组定义举例:oDim Counter(1 To 14) As Integer oPrivate Sum (20) As Double oDim x(3,4) as Integer oDim A(-5 To 20) As Integer n数组定义说明o数组名的命名规则与变量命名相同。o一维数组的元素个数:上界上界-下界下界+1。o缺省下界为缺省下界为0 。若希望缺省下界

3、设为1,可在模块的通用部分使用语句: Option Base 1o下界下界和上界上界不能使用变量,必须是常量(整型常量)o数组定义后自动获得默认值:数值为0,字符为“”,逻辑为False一、数组的定义n数组中各元素在内存占一片连续的存储空间。n二维数组则按先行后列的顺序。A(0)A(1)A(2)A(n). 一维数组一维数组A在内存中存放的顺序在内存中存放的顺序 S(0,0) S(0,1) S(0,2) S(0,3) S(1,0) S(1,1) S(1,2) S(1,3) S(2,0) S(2,1) S(2,2) S(2,3) 第 0 行 第 1 行 第 2 行 第 0 列 第 1 列 第 2

4、列 第 3 列 一维数组一维数组S(2,3)在内存中存放的顺序在内存中存放的顺序n数组的引用通常是指对数组元素的引用。n格式为: 数组名数组名 (下标下标1 , 下标下标2)n下标可以是常量、变量或表达式,但表达式的值必须介于定义数组时指定的下标的下界和上界之间,否则将导致“下标越界”的错误。n例如: A(1)=A(1)+B(1) 取数组元素运算 A(i)=B(i) 下标使用变量 B(i+1)=A(i+2) 下标使用表达式 C(3,4)=100 下标使用常量二、数组的使用静态数组静态数组只能逐个元素赋值只能逐个元素赋值。如果赋值有规律,可以使用。n用=直接赋值A(1)=10A(2)=20n如果

5、赋值有规律,使用赋值。o例如,给数组A(4)的元素赋值 n通过InputBox函数输入值。例如:n通过文本框输入值。例如:A(1)=Text1.textA(2)=Text2.text二、数组的使用n静态数组之间不能整体赋值,只能逐个元素赋值。可使用循环结构。n可以将一个静态数组整体赋值给一个动态数组,并自动确定动态数组的大小。相互赋值的两个数组的类型必须相同类型必须相同。n例如: Dim A(4) As , B() As A(0)=0 : A(1)=1 : A(2)=2: A(3)=3 : A(4)=4 B =A n输出数组中的全部或部分元素,一般使用 二、数组的使用nFor Each Nex

6、t 语句与 For Next 语句类似,都是实现循环结构的语。但 For Each Next 语句是专用于数组和对象集合的。 n语法格式:o成员成员:为一个为一个Variant变量变量,在For Each Next 语句中代表数组代表数组中的每个元素中的每个元素,数组中有几个元素,此成员就重复使用几次,循环体就执行几遍。o数组数组:在此之前经过定义的数组,用在此处时仅仅是一个数组名,没有括号和上下界。o不能在For Each Next中使用用户自定义数据类型。o使用For Each Next的好处是不用知道数组的大小和维数,就可输出数组的所有元素。二、数组的使用示例:Dim A(1 To 4)

7、For Each x In A Print x ; Next x求二、数组的使用o动态数组的声明:o动态数组大小的说明: nPreserve :选择Preserve时,保留数组中原来的数据,但只允许ReDim 语句改变动态数组最后一维的上界。n例如: Dim A() AS integer Redim A(4,5) Redim Preserve A(4,)n注意:Redim语句可以多次使用,但只能改变数组的维数和大小,不能改变数组的类型。动态数组举例o输入n个整数,存入动态数组,再输出这些数Array函数函数nArray函数可以对Variant类型类型的动态数组或变量动态数组或变量整体赋值。赋值

8、后的数组大小由赋值的个数决定。n例如,要将1,3,4,6,7 这些值赋值给数组a,可使用下面的方法赋值。 Dim a() A=array(1,3,4,6,7)或 Dim a A=array(1,3,4,6,7)Array函数举例:函数举例:自动抽题系统自动抽题系统2. Ubound( ) 和和Lbound( )函数函数 求数组的上界求数组的上界求数组的下界求数组的下界oN:可选;一般是整型常量或变量。指定返回哪一维的上:可选;一般是整型常量或变量。指定返回哪一维的上界。界。1 表示第一维,表示第一维,2 表示第二维,如此等等。如果省略表示第二维,如此等等。如果省略默认是默认是1。n例如:不知道

9、数组例如:不知道数组A的元素个数,要用的元素个数,要用FOR循环输出数组循环输出数组A的的全部元素值。全部元素值。For i=Lbound(a) to Ubound(a) print a(i)Next i 数据的排序就是将一批数据由小大到数据的排序就是将一批数据由小大到(升序)(升序)或由大到小或由大到小(降序)(降序)进行排列。常用的有进行排列。常用的有选择法、冒泡法。选择法、冒泡法。v 冒泡排序是常用的一种排序方法。假设n个元素按递增的顺序排序,排序思想为:从数组的第一项开始,每一项(i)都与下一项(i+1)进行比较。如果下一项的值较小,就将这两项的位置交换,直到最后第n-1与第n项进行比

10、较,将最大的数排列在最后。从数组的第一项开始,每一项(i)都与下一项(i+1)进行比较。如果下一项的值较小,就将这两项的位置交换,直到最后第n-2与第n-1项进行比较,将第二大的数排列在倒数第二位。直到只有第一项与第二项进行比较交换,完成递增法排序。例:随机产生例:随机产生1010个个1010100100的整数,从小到大顺序输出。的整数,从小到大顺序输出。 Randomize Dim a(1 To N) As Integer Print 原始数据:原始数据: For i = 1 To N 产生产生10个随机数个随机数 a(i) = Int(91 * Rnd + 10) Print a(i);

11、Next i For i = 1 To N-1 For j = 1 To N - i If a(j) a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t 交换位置交换位置 End If Next j Next i Print: Print 排序结果:排序结果: For i = 1 To N Print a(i); Next i v选择法排序是最为简单且易理解的算法,其基本思想是每次将最小(或最大)的数找出来放在序列的最前面。假设按递增法将有n个数的数组A(1To n)进行排列,步骤为:(1)假定最小值Temp,将Temp与A(2)进行比较

12、,若A(2) a(j) Then t = a(i): a(i) = a(j): a(j) = t 交换位置交换位置 End If Next j Next i Print: Print 排序结果:排序结果: For i = 1 To N Print a(i);Next i For i = 1 To N - 1 p = i For j = i + 1 To N If a(p) a(j) Then p = j Next j t = a(i): a(i) = a(p): a(p) = tNext i o控件数组:控件数组:具有相同的具有相同的名称名称和和事件过程事件过程的一组的一组同类型控件同类型控件。n控件数组中的每一个控件具有一个唯一的索引值index属性值,它相当于数组的下标。n控件数组中的所有控件共享同一事件过程控件数组中的所有控件共享同一事件过程。例如,假定某个控件数组含有5个命令按钮,则不管单击哪个标签,系统都会调用同一个Click过程。由于每个按钮在程序中的作用不同,系统会将被单击的按钮的Index属性值传递给过程,由事件过程根据不同的Index值执行不同的操作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论