《vb第2版》课件第6章数组.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《vb第2版》课件第6章数组.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb第2版 vb 课件 数组
- 资源描述:
-
1、第第6章章 数组和用户自定义类型数组和用户自定义类型6.1数组的概念数组的概念6.2定长数组和动态数组的定义定长数组和动态数组的定义6.3 数组的基本操作数组的基本操作6.4控件数组控件数组6.5滚动条控件滚动条控件(ScrollBar)6.6用户自定义类型和用户自定义用户自定义类型和用户自定义 类型数组类型数组6.7 实例分析实例分析6.1数组的概念数组的概念两种两种数据数据类型:基本数据类型和构造数据类型。到目前为止,类型:基本数据类型和构造数据类型。到目前为止,我们使用的数据都属于基本数据类型,如数值型、逻辑型、我们使用的数据都属于基本数据类型,如数值型、逻辑型、字符型等。该类数据具有一
2、个共同的特点:在程序运行的字符型等。该类数据具有一个共同的特点:在程序运行的任一时刻,每个变量名代表一个确定的数据,用户可以通任一时刻,每个变量名代表一个确定的数据,用户可以通过变量名访问该变量的值。本章我们学习构造数据类型数过变量名访问该变量的值。本章我们学习构造数据类型数据据数组和用户自定义类型的数据。数组是一组相同类数组和用户自定义类型的数据。数组是一组相同类型的数据的有序集合;而用户自定义类型数据由若干基本型的数据的有序集合;而用户自定义类型数据由若干基本数据类型可不同的元素组成。数据类型可不同的元素组成。数组是用统一的名字,不同下标、顺序排列的一组变量。数组是用统一的名字,不同下标、
3、顺序排列的一组变量。数组中的成员(每个变量)称为数组元素。数组元素通过数组中的成员(每个变量)称为数组元素。数组元素通过不同的下标来加以区分。因此数组元素又称为下标变量。不同的下标来加以区分。因此数组元素又称为下标变量。可以用数组名和下标来唯一地识别一个数组中的某个具体可以用数组名和下标来唯一地识别一个数组中的某个具体元素。元素。例如例如a(5)表示名称为表示名称为a的数组中的序号为的数组中的序号为5的那个元素。的那个元素。6.1数组的概念数组的概念需要说明的是:需要说明的是:(1)数组的命名和简单变量的命名规则相同。)数组的命名和简单变量的命名规则相同。(2)数组元素的下标必须用括号括起来。
4、不能把)数组元素的下标必须用括号括起来。不能把a(5)写成写成a5,a5会被认为是一个简单变量。会被认为是一个简单变量。(3)数组元素的下标必须是常量,常量可以是直接常量、)数组元素的下标必须是常量,常量可以是直接常量、符号常量或常量表达式,一般是整型常量。符号常量或常量表达式,一般是整型常量。(4)数组元素的下标必须是整数,如果是小数,系统会自)数组元素的下标必须是整数,如果是小数,系统会自动按四舍五入取整。如动按四舍五入取整。如a(4.6)将被视为将被视为a(5)。6.1数组的概念数组的概念数组下标的最小值称为数组的下界;数组下标的最小值称为数组的下界;数组下标的最大值称为数组的上界。数组
5、下标的最大值称为数组的上界。6.1数组的概念数组的概念 Visual Basic中的数据有多种类型,数组也有相应的类型。中的数据有多种类型,数组也有相应的类型。除了可以声明任何基本类型的数组,还可以声明用户自定除了可以声明任何基本类型的数组,还可以声明用户自定义类型和对象数组(如控件数组)。除了数据类型为义类型和对象数组(如控件数组)。除了数据类型为Variant的数组元素可以是不同类型的数据,一般一个数组的数组元素可以是不同类型的数据,一般一个数组的所有元素应是具有相同的数据类型。的所有元素应是具有相同的数据类型。6.1数组的概念数组的概念在一个数组中,如果用一个下标就能确定一个元素在数组在
6、一个数组中,如果用一个下标就能确定一个元素在数组中的具体位置,则该数组就是一维数组;具有两个或多个中的具体位置,则该数组就是一维数组;具有两个或多个下标的数组就是二维或多维数组。数组下标的个数就是数下标的数组就是二维或多维数组。数组下标的个数就是数组的维数。组的维数。6.1数组的概念数组的概念在在Visual Basic中有两种形式的数组:定长数组和动态数组。中有两种形式的数组:定长数组和动态数组。一旦定义后,其中的数组元素个数在程序运行过一旦定义后,其中的数组元素个数在程序运行过程中不再会发生变化;程中不再会发生变化;而而中的元素个数是可变的。中的元素个数是可变的。6.1数组的概念数组的概念
7、 在定义数组时,已确定数组元素个数的数组都是定长数组。在定义数组时,已确定数组元素个数的数组都是定长数组。定长数组的定长数组的如下:如下:Public|Static|Dim()As,6.2定长数组和动态数组的定义定长数组和动态数组的定义下面以下面以Dim语句为例加以说明。语句为例加以说明。Dim a(6)As Integer,b(3,2)As Integer(1)下标下界默认方式)下标下界默认方式在定义数组时,下标下界省略,则默认下标下界为在定义数组时,下标下界省略,则默认下标下界为0。例如例如:Dim a(6)As Integer,b(3,2)As Integer定义一维数组定义一维数组a有
8、有7个元素,下标从个元素,下标从0到到6。定义二维数组。定义二维数组b有有12个元素,第一维下标从个元素,第一维下标从0到到3,第二维下标从,第二维下标从0到到2。如果不希望数组下标从如果不希望数组下标从0开始,可用开始,可用Option Base 1语句使默语句使默认下标下界为认下标下界为1。Option Base 语句的参数只能是语句的参数只能是0或或1。它必须放在数组定义。它必须放在数组定义语句之前,且一个模块只能出现一次该语句。语句之前,且一个模块只能出现一次该语句。6.2定长数组和动态数组的定义定长数组和动态数组的定义(2)下标下界确定方式)下标下界确定方式“维数定义维数定义”格式:
9、下界格式:下界1 To 上界上界1,下界,下界2 To 上界上界2,下界下界n To 上界上界n此时此时Option Base 语句不起作用。语句不起作用。例如:例如:Dim a(-2 To 3),b(1 To 3,-2 To2)6.2定长数组和动态数组的定义定长数组和动态数组的定义数组的数据类型是指数组存放什么类型的数据。通常数组的数组的数据类型是指数组存放什么类型的数据。通常数组的数据类型定义采用以下两种方式。数据类型定义采用以下两种方式。(1)As 方式方式数据类型可以是:数据类型可以是:Integer,Long,Single,Double,String,String*n,Currenc
10、y,Boolean,Variant,还,还可以是用户自定义类型和对象(如控件)类型。可以是用户自定义类型和对象(如控件)类型。说明:说明:As 缺省,默认为缺省,默认为Variant类型。类型。(2)数组名后加类型符方式)数组名后加类型符方式类型符可以是:类型符可以是:%,&,!,#,$,等。例如:等。例如:Dim a%(5),b$(6)。6.2定长数组和动态数组的定义定长数组和动态数组的定义建立动态数组一般包括声明和大小确定两步:建立动态数组一般包括声明和大小确定两步:(1)用)用Public、Static或或Dim语句声明括号内为空的数组。语句声明括号内为空的数组。格式:格式:Dim 数组
11、名()数组名()As(2)在过程中用)在过程中用Redim语句指明该数组的大小。语句指明该数组的大小。格式:格式:Redim Preserve 数组名(数组名(维数定义维数定义数据类型数据类型)6.2定长数组和动态数组的定义定长数组和动态数组的定义例例【7-1】动态数组举例。动态数组举例。Dim a()As IntegerPrivate Sub Form_Click()Dim n As Integern=5ReDim a(n)a(1)=5:a(5)=4Print a(1);a(5);ReDim a(2,2)a(2,1)=3Print a(2,1);ReDim Preserve a(2,3)Pr
12、int a(2,1)End Sub 6.2定长数组和动态数组的定义定长数组和动态数组的定义 数组一经定义后,即可引用。引用数组元素的方法是在数组数组一经定义后,即可引用。引用数组元素的方法是在数组名后的圆括号内指定其下标。名后的圆括号内指定其下标。例如:例如:Dim arr(5)As Integer 定义数组定义数组 arr(4)=9 给数组元素给数组元素arr(4)赋值赋值 6.3 数组的基本操作数组的基本操作 数组的输入、输出操作是通过对数组中的元素逐个地输入、数组的输入、输出操作是通过对数组中的元素逐个地输入、输出操作实现的。对一维数组的操作通常采用一重循环实现;输出操作实现的。对一维数
13、组的操作通常采用一重循环实现;对二维数组的操作通常采用二重循环,是用外循环控制行标对二维数组的操作通常采用二重循环,是用外循环控制行标(或列标),内循环控制列标(或行标)。(或列标),内循环控制列标(或行标)。6.3 数组的基本操作数组的基本操作 6.3 数组的基本操作数组的基本操作例例【7-2】编一窗体单击事件过程。向一维数组输入编一窗体单击事件过程。向一维数组输入10个随个随机数(机数(1099之间的整数),并在窗体上输出这个数组中的之间的整数),并在窗体上输出这个数组中的10个数。个数。Private Sub Form_Click()Dim a(1 To 10)As IntegerFor
14、 i=1 To 10a(i)=Int(Rnd()*90+10)NextFor i=1 To 10Print a(i);NextEnd Sub 6.3 数组的基本操作数组的基本操作数组的初始化就是给数组元素赋初值。在数组的初始化就是给数组元素赋初值。在Visual Basic中,可中,可以用以用Array函数实现数组的初始化,但函数实现数组的初始化,但Array函数只能用于一维函数只能用于一维数组。数组。格式:格式:=Array()需要说明的是:需要说明的是:用用Array函数给数组元素赋初值,数组必须是函数给数组元素赋初值,数组必须是Variant。另外,。另外,数组的下标下界默认为数组的下标
15、下界默认为0,也可以通过,也可以通过Option Base 语句决定;语句决定;上界由上界由Array函数括号内参数个数决定,也可以通过函数括号内参数个数决定,也可以通过UBound函数获得。函数获得。例如:例如:a=Array(1,2,3,4,5)6.3 数组的基本操作数组的基本操作格式:格式:For Each In 数组数组Next需要说明的是:需要说明的是:(1)成员:是一个)成员:是一个Variant变量变量,是为循环提供的用于依次代表是为循环提供的用于依次代表数组中每一个元素。数组中每一个元素。(2)数组:是一个已定义的数组名,没有括号和下标。)数组:是一个已定义的数组名,没有括号和
16、下标。(3)功能:根据数组元素的个数,将数组中的每一个元素依)功能:根据数组元素的个数,将数组中的每一个元素依次赋给成员,重复执行循环体内的语句序列。次赋给成员,重复执行循环体内的语句序列。6.3 数组的基本操作数组的基本操作例例【7-3】For EachNext语句应用举例。求数组所有元素语句应用举例。求数组所有元素的和。的和。Private Sub Form_Click()Dim s As Integera=Array(9,8,7,6,5)s=0For Each x In as=s+xNextPrint sEnd Sub6.3 数组的基本操作数组的基本操作单个的数组元素可以像简单变量那样从
17、一个数组复制到另一单个的数组元素可以像简单变量那样从一个数组复制到另一个数组,而要复制整个数组则仍要使用个数组,而要复制整个数组则仍要使用For循环语句。循环语句。6.3 数组的基本操作数组的基本操作UBound 函数和函数和LBound函数分别返回数组的上界和下界函数分别返回数组的上界和下界格式:格式:UBound(arrayname,n)LBound(arrayname,n)其中:其中:arrayname 是数组名;是数组名;n表示数组的第几维,若省略,表示数组的第几维,若省略,就认为是就认为是1。例如:例如:Dim A(1 To 9,3 To 8,4 To 12)Dim B(10)U1=
18、UBound(A,1)返回返回9U2=UBound(A,3)返回返回12U3=UBound(B)返回返回10L1=LBound(A,1)返回返回1L2=LBound(A,3)返回返回4 6.3 数组的基本操作数组的基本操作数组一经定义便在内存中占据连续的存储空间。如果数组不数组一经定义便在内存中占据连续的存储空间。如果数组不再使用,就需要将该数组删除,以便释放数组所占的存储空再使用,就需要将该数组删除,以便释放数组所占的存储空间。如果数组挪做它用,就需要将该数组的数据清除。这可间。如果数组挪做它用,就需要将该数组的数据清除。这可以用以用Erase语句来实现。语句来实现。Erase语句格式如下:
19、语句格式如下:Erase 数组名数组名,数组名数组名2,说明说明:(1)Erase语句用于定长数组时,数组仍然存在,只是数组中的语句用于定长数组时,数组仍然存在,只是数组中的内容被清空。对于数值数组,则把数组中的所有元素置为内容被清空。对于数值数组,则把数组中的所有元素置为0;对于字符串数组则把数组中的所有元素置为空串;对于变体数对于字符串数组则把数组中的所有元素置为空串;对于变体数组,则把数组中的所有元素置为组,则把数组中的所有元素置为Empty。(2)Erase语句用于动态数组时将删除该数组的结构,并释放出语句用于动态数组时将删除该数组的结构,并释放出所占用的存储空间。如果下次再引用该数组
20、,则必须用所占用的存储空间。如果下次再引用该数组,则必须用Redim语句重新定义数组的大小和维数。语句重新定义数组的大小和维数。6.3 数组的基本操作数组的基本操作例例【7-4】定长数组的清除。观察运行后的结果,如图定长数组的清除。观察运行后的结果,如图7-1所示。所示。Option Base 1Private Sub Form_Click()Dim k As Integer,a(5)As IntegerFor k=1 To 5 a(k)=kNextPrintPrint 打印原数组:打印原数组:For k=1 To 5Print a(k);NextErase aPrintPrint 打印清除后
21、数组:打印清除后数组:For k=1 To 5Print a(k);NextEnd Sub6.3 数组的基本操作数组的基本操作冒泡法排序是一种简单的排序法。在每一轮排序中将相邻的数冒泡法排序是一种简单的排序法。在每一轮排序中将相邻的数比较,当次序不对就交换,出了内循环最大(或最小)数就已比较,当次序不对就交换,出了内循环最大(或最小)数就已冒出。冒出。假设有假设有N个数在个数在a数组(下标从数组(下标从1开始)中,冒泡法升序排序的开始)中,冒泡法升序排序的思路是:思路是:(1)将)将a(1)与)与a(2)相比较,若)相比较,若a(1)a(2),则交换则交换a(1)与)与a(2),然后比较然后比
22、较a(2)与)与a(3),依次类推,直到),依次类推,直到a(N-1)与)与a(N)比较完。这个过程称为一次冒泡,其结果是)比较完。这个过程称为一次冒泡,其结果是最大数在数组的最大数在数组的a(N)中。)中。(2)然后对数组)然后对数组a的前的前N-1个数进行第个数进行第2轮同样的操作,其结果轮同样的操作,其结果是次大数在是次大数在a(N-1)中。)中。(3)依次类推,)依次类推,N个数排序需排个数排序需排N-1轮。轮。6.3 数组的基本操作数组的基本操作 6.3 数组的基本操作数组的基本操作假设数组假设数组a中存在中存在6个数,分别为个数,分别为9,8,12,4,7,10。要求。要求用冒泡法
23、排序输出。用冒泡法排序输出。Const N=6Option Base 1Private Sub Form_Click()Dim i As Integer,j As Integer,temp As Integera=Array(9,8,12,4,7,10)输出原数组中的数Print 原数组中的数:“For i=1 To 6Print a(i);Next数组中的数用冒泡法升序排序For i=1 To N-1 For j=1 To N i If a(j)a(j+1)Then temp=a(j)a(j)=a(j+1)a(j+1)=temp End If Next jNext iPrintPrint 排
展开阅读全文