vb之-数组及其使用课件

上传人:博****1 文档编号:568662533 上传时间:2024-07-25 格式:PPT 页数:22 大小:118KB
返回 下载 相关 举报
vb之-数组及其使用课件_第1页
第1页 / 共22页
vb之-数组及其使用课件_第2页
第2页 / 共22页
vb之-数组及其使用课件_第3页
第3页 / 共22页
vb之-数组及其使用课件_第4页
第4页 / 共22页
vb之-数组及其使用课件_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《vb之-数组及其使用课件》由会员分享,可在线阅读,更多相关《vb之-数组及其使用课件(22页珍藏版)》请在金锄头文库上搜索。

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 数组的定义和使用一、数组的定义oo静态数组的声明:静态数组的声明:静态数组的声明:静态数组的声明:n n格式:格式:格式:格式:Dim Dim 数组名数组名数组名数组名( ( 下界下界下界下界 To To 上界上界上界上界 ,),) As As 数数数数据类型据类型据类型据类型n也可以使用Public和Private来定义数组。n数组定义举例:数组定义举例:oDim Counte

3、r(1 To 14) As Integer 1414个元素的局部数组。个元素的局部数组。oPrivate Sum (20) As Double 2121个元素的模块级数组。个元素的模块级数组。oDim x(3,4) as Integer 2020个元素的二维数组。个元素的二维数组。oDim A(-5 To 20) As Integer n数组定义说明o数组名的命名规则与变量命名相同。o一维数组的元素个数:上界上界-下界下界+1。o缺省下界为缺省下界为0 。若希望缺省下界设为1,可在模块的通用部分使用语句: Option Base 1o下界下界和上界上界不能使用变量,必须是常量(整型常量)o数组

4、定义后自动获得默认值:数值为0,字符为“”,逻辑为False一、数组的定义oo数组的存放顺序数组的存放顺序数组的存放顺序数组的存放顺序n数组中各元素在内存占一片连续的存储空间。n二维数组则按先行后列的顺序。A(0)A(1)A(2)A(n). 一维数组一维数组A在内存中存放的顺序在内存中存放的顺序一维数组一维数组S(2,3)在内存中存放的顺序在内存中存放的顺序1 1、数组元素的引用、数组元素的引用 n数组的引用通常是指对数组元素的引用。n格式为: 数组名数组名 (下标下标1 , 下标下标2)n下标可以是常量、变量或表达式,但表达式的值必须介于定义数组时指定的下标的下界和上界之间,否则将导致“下标

5、越界”的错误。n例如: A(1)=A(1)+B(1) 取数组元素运算 A(i)=B(i) 下标使用变量 B(i+1)=A(i+2) 下标使用表达式 C(3,4)=100 下标使用常量二、数组的使用2 2、给数组元素赋值、给数组元素赋值 静态数组静态数组只能逐个元素赋值只能逐个元素赋值。如果赋值有规律,可以使用循环结构循环结构。n用=直接赋值A(1)=10A(2)=20n如果赋值有规律,使用循环结构循环结构赋值。o例如,给数组A(4)的元素赋值 For i = 1 To 4For i = 1 To 4 A(i) = iA(i) = i Next i Next in通过InputBox函数输入值。

6、例如:For i = 1 To 4For i = 1 To 4 A(i)= inputbox(“ A(i)= inputbox(“请输入第请输入第请输入第请输入第” & i & “” & i & “个整数个整数个整数个整数”)”)NextNextn通过文本框输入值。例如:A(1)=Text1.textA(2)=Text2.text二、数组的使用3 3、数组间的赋值、数组间的赋值n静态数组之间不能整体赋值,只能逐个元素赋值。可使用循环结构。n可以将一个静态数组整体赋值给一个动态数组,并自动确定动态数组的大小。n n注意:注意:相互赋值的两个数组的类型必须相同类型必须相同。n例如: Dim A(4

7、) As integerinteger , B() As integerinteger A(0)=0 : A(1)=1 : A(2)=2: A(3)=3 : A(4)=4 B =A 将将A A数组整体赋值给数组整体赋值给B B数组且大小确定为数组且大小确定为5 5。 4 4、数组的输出、数组的输出n输出数组中的全部或部分元素,一般使用循环结构。循环结构。循环结构。循环结构。例如:例如:例如:例如: For i = 1 To 4For i = 1 To 4 print A(i)print A(i) Next i Next i二、数组的使用5 5、For each NextFor each Nex

8、t语句语句nFor Each Next 语句与 For Next 语句类似,都是实现循环结构的语。但 For Each Next 语句是专用于数组和对象集合的。 n语法格式:For Each For Each 成员成员成员成员 In In 数组数组数组数组 循环体循环体循环体循环体 Exit For Exit For Next Next 成员成员成员成员o成员成员:为一个为一个Variant变量变量,在For Each Next 语句中代表数组代表数组中的每个元素中的每个元素,数组中有几个元素,此成员就重复使用几次,循环体就执行几遍。o数组数组:在此之前经过定义的数组,用在此处时仅仅是一个数组

9、名,没有括号和上下界。o不能在For Each Next中使用用户自定义数据类型。o使用For Each Next的好处是不用知道数组的大小和维数,就可输出数组的所有元素。二、数组的使用示例:Dim A(1 To 4)For Each x In A Print x ; Next x求1! + 2! + 3! + 10!1! + 2! + 3! + 10!Private Sub Command1_Click()Private Sub Command1_Click() Dim a(1 To 10) As Long, sum As Long, t As Long Dim a(1 To 10) As

10、Long, sum As Long, t As Long Dim n As Integer, x Dim n As Integer, x t = 1 t = 1 For n = 1 To 10 For n = 1 To 10 t = t * n t = t * n a(n) = t a(n) = t Next n Next n sum = 0 sum = 0 For Each For Each x x In In a a sum = sum + x sum = sum + x Next x Next x Print 1! + 2! + 3! + 10! =; sum Print 1! + 2!

11、 + 3! + 10! =; sum End SubEnd Sub二、数组的使用7.2 7.2 动态数组的声明和使用动态数组的声明和使用动态数组的声明和使用动态数组的声明和使用o动态数组的声明:Dim Dim 数组名数组名( ) As ( ) As 数据类型数据类型o动态数组大小的说明: Redim Redim preservepreserve 数组名数组名( ( 下界下界 To To 上界上界 , ) , )nPreserve :选择Preserve时,保留数组中原来的数据,但只允许ReDim 语句改变动态数组最后一维的上界。n例如: Option Base 1Option Base 1 D

12、im A() AS integer Redim A(4,5) Redim Preserve A(4,UBound(Str,2)+4UBound(Str,2)+4)n注意:Redim语句可以多次使用,但只能改变数组的维数和大小,不能改变数组的类型。动态数组举例o输入n个整数,存入动态数组,再输出这些数与数组有关的函数与数组有关的函数与数组有关的函数与数组有关的函数1.Array函数函数nArray函数可以对Variant类型类型的动态数组或变量动态数组或变量整体赋值。赋值后的数组大小由赋值的个数决定。n例如,要将1,3,4,6,7 这些值赋值给数组a,可使用下面的方法赋值。 Dim a() A=

13、array(1,3,4,6,7)或 Dim a A=array(1,3,4,6,7)Array函数举例:函数举例:自动抽题系统自动抽题系统与数组有关的函数与数组有关的函数与数组有关的函数与数组有关的函数2. Ubound( ) 和和Lbound( )函数函数 n n格式:格式:格式:格式:UBound( UBound( 数组名数组名数组名数组名,N ) ,N ) 求数组的上界求数组的上界n n格式:格式:格式:格式:LBound( LBound( 数组名数组名数组名数组名 , N ) , N ) 求数组的下界求数组的下界oN:可选;一般是整型常量或变量。指定返回哪一维的上:可选;一般是整型常量

14、或变量。指定返回哪一维的上界。界。1 表示第一维,表示第一维,2 表示第二维,如此等等。如果省略表示第二维,如此等等。如果省略默认是默认是1。n例如:不知道数组例如:不知道数组A的元素个数,要用的元素个数,要用FOR循环输出数组循环输出数组A的的全部元素值。全部元素值。For i=Lbound(a) to Ubound(a) print a(i)Next i 数据的排序就是将一批数据由小大到数据的排序就是将一批数据由小大到(升序)(升序)或由大到小或由大到小(降序)(降序)进行排列。常用的有进行排列。常用的有选择法、冒泡法。选择法、冒泡法。1.1.1.1.冒泡法排序:冒泡法排序:冒泡法排序:冒

15、泡法排序:v冒泡排序是常用的一种排序方法。假设n个元素按递增的顺序排序,排序思想为:vv第一轮:第一轮:从数组的第一项开始,每一项(i)都与下一项(i+1)进行比较。如果下一项的值较小,就将这两项的位置交换,直到最后第n-1与第n项进行比较,将最大的数排列在最后。vv第二轮:第二轮:从数组的第一项开始,每一项(i)都与下一项(i+1)进行比较。如果下一项的值较小,就将这两项的位置交换,直到最后第n-2与第n-1项进行比较,将第二大的数排列在倒数第二位。vv依此类推,依此类推,直到只有第一项与第二项进行比较交换,完成递增法排序。 7.3 7.3 7.3 7.3 数组的排序数组的排序数组的排序数组

16、的排序例:随机产生例:随机产生1010个个1010100100的整数,从小到大顺序输出。的整数,从小到大顺序输出。冒泡排序法(升序)程序冒泡排序法(升序)程序冒泡排序法(升序)程序冒泡排序法(升序)程序 Const N=10Const N=10 Randomize Dim a(1 To N) As Integer Print 原始数据:原始数据: For i = 1 To N 产生产生10个随机数个随机数 a(i) = Int(91 * Rnd + 10) Print a(i); Next i For i = 1 To N-1 For j = 1 To N - i If a(j) a(j +

17、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 数组的排序数组的排序数组的排序数组的排序思考思考思考思考: : : :产生产生产生产生7 7 7 7个个个个0-90-90-90-9之间的随机数如何改程序之间的随机数如何改程序之间的随机数如何改程序之间的随机数如何改程序? ? ? ?a,ba,b间的数间的数间的数间的数=int (b-a+1)*rnd+a=int (b-a+1

18、)*rnd+a2.2.2.2.选择法排序(升序)选择法排序(升序)选择法排序(升序)选择法排序(升序)v选择法排序是最为简单且易理解的算法,其基本思想是每次将最小(或最大)的数找出来放在序列的最前面。假设按递增法将有n个数的数组A(1To n)进行排列,步骤为:(1)假定最小值Temp,将Temp与A(2)进行比较,若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 数组的排序数

19、组的排序数组的排序数组的排序选择法排序(升序)的改进:选择法排序(升序)的改进:选择法排序(升序)的改进:选择法排序(升序)的改进: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 7.4 7.4 控件数组控件数组控件数组控件数组o控件数组:控件数组:具有相同的具有相同的名称名称和和事件过程事件过程的一组的一组同类型控件同类型控件。n控件数组中的每一个控件具有一个唯一的索引值index属性值,它相当于数组的下标。n控件数

20、组中的所有控件共享同一事件过程控件数组中的所有控件共享同一事件过程。例如,假定某个控件数组含有5个命令按钮,则不管单击哪个标签,系统都会调用同一个Click过程。由于每个按钮在程序中的作用不同,系统会将被单击的按钮的Index属性值传递给过程,由事件过程根据不同的Index值执行不同的操作。n一个控件数组中至少应有一个元素,最多可有32767个。n控件数组中的每个控件都有自己独立的属性。o控件数组的建立控件数组的建立n复制已有的控件并将其粘贴到窗体上复制已有的控件并将其粘贴到窗体上。n将窗体上已有的类型相同的多个控件的将窗体上已有的类型相同的多个控件的Name属性属性(名称)(名称)设置为设置

21、为同一值同一值。 7.4 7.4 控件数组控件数组控件数组控件数组oo访问控件数组元素:访问控件数组元素:访问控件数组元素:访问控件数组元素:控件数组名(控件数组名(控件数组名(控件数组名(indexindex值)值)值)值)n n如:如:Command1(0).Caption = Command1(0).Caption = 确定确定 n n Command1(1).Caption = Command1(1).Caption = 取消取消 oo控件数组的属性控件数组的属性控件数组的属性控件数组的属性n nLBoundLBound 控件数组下标的下界,如:控件数组下标的下界,如:command1

22、.Lboundcommand1.Lbound n nUBoundUBound 控件数组下标的上界,如:控件数组下标的上界,如:command1.Uboundcommand1.Uboundn nCountCount 控件数组的个数,如:控件数组的个数,如:command1.countcommand1.countn注意:对于控件数组,不能使用Ubound()和Lbound()函数。控件数组示例控件数组示例控件数组示例控件数组示例 7.4 7.4 控件数组控件数组控件数组控件数组pp动态添加控件数组元素动态添加控件数组元素动态添加控件数组元素动态添加控件数组元素Load Load Load Load

23、 控件数组名(控件数组名(控件数组名(控件数组名(indexindexindexindex值)值)值)值) 注意:注意:LoadLoad语句中的控件数组必须已经存在,并且添加的控件元素的语句中的控件数组必须已经存在,并且添加的控件元素的indexindex值不能与其他元素的值不能与其他元素的indexindex值重复。值重复。 如:如:Load Load Command1(Command1(command1.Ubound+1command1.Ubound+1) ) Command1(Command1(command1.Ubound+1command1.Ubound+1).).move 1000

24、,1000,1000,600move 1000,1000,1000,600 Command1(command1.Ubound+1).visible=True Command1(command1.Ubound+1).visible=Truepp动态删除控件数组元素动态删除控件数组元素动态删除控件数组元素动态删除控件数组元素 UnLoadUnLoadUnLoadUnLoad 控件数组名(控件数组名(控件数组名(控件数组名(indexindexindexindex值)值)值)值) 例如:例如:unload command1(6)unload command1(6) 注意:注意:不能不能UnLoadUnLoad设计时创建的控件。设计时创建的控件。 7.4 7.4 控件数组控件数组控件数组控件数组

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号