【教学课件】第五章Vb数组.ppt

上传人:wuy****n92 文档编号:69863417 上传时间:2023-01-10 格式:PPT 页数:33 大小:261.50KB
返回 下载 相关 举报
【教学课件】第五章Vb数组.ppt_第1页
第1页 / 共33页
【教学课件】第五章Vb数组.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《【教学课件】第五章Vb数组.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第五章Vb数组.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第五章第五章 数数 组组5.1 概 述 数组的概念:数组的概念:数组并不是一种数据类型,而数组并不是一种数据类型,而是是一组相同类型数据一组相同类型数据的集合。用一个统一的名字的集合。用一个统一的名字(数组名)数组名)代表逻辑上相关的一批数据,每个元代表逻辑上相关的一批数据,每个元素用素用下标变量下标变量来区分;下标变量代表元素在数组来区分;下标变量代表元素在数组中的位置。中的位置。其表示形式:A(1),A(10)X(1,1),X1(1,10),X(2,10)Y(0,0,0),Y(1,2,5)VisualBasic中中的的数数组组,按按不不同同的的方方式式可可分分为为以以下几类:下几类:按数组

2、的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组。按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。按数组的维数可分为:一维数组、二维数组、多维数组。对象数组:菜单对象数组、控件数组。5.2一维数组一维数组5.2.1一维数组的声明一维数组的声明形式:Dim数组名数组名(to)As或:或:Dim数组名数组名(to)例:Dim a(1 to 10)As Integer 声明了a数组有10个元素与上面声明等价形式:Dim a%(1 to 10)1是下标的下界10是下标的上界数组元数的数据类型说明:1数组名的命名规则与变量的命名相同。2数组的元素个数:上界-下界

3、+1。3缺省为0,若希望下标从1开始,可在模块的通用部分使用Option Base语句将设为1。其使用格式是:Option Base 0|1 后面的参数只能取0或1例如:Option Base 1 将数组声明中缺省下标设为1 4和不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。5如果省略As子句,则数组的类型为变体类型。6数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序,如图5-1所示:5.2.2一维数组元素的引用一维数组元素的引用使用形式:使用形式:数组名数组名(下标下标)其中:下标可以是整型变量、常量或表达式。例如:设有下面的数组B

4、(10)As Integer 则下面的语句都是正确的。A(1)=A(2)+B(1)+5 取数组元素运算 A(i)=B(i)下标使用变量 B(i+1)=A(i+2)下标使用表达式5.2.3 5.2.3 一维数组的基本操作一维数组的基本操作 1.可通过循环给数组元素的初值可通过循环给数组元素的初值 For i=1 To 10 A数组的每个元素值为1 A(i)=1 Next i 2.数组的输入数组的输入Fori=1To4Forj=1To5sc(i,j)=InputBox(输入输入sc(&i&,&j&)的值的值)NextjNextI3.3.数组的输出数组的输出输出如下图所示的下三角数据输出如下图所示的

5、下三角数据Dimsc(5,5)AsInteger,i%,j%Fori=1To5Forj=1Toisc(i,j)=i*5+jPrintsc(i,j);NextjPrint换行换行NextI4.求数组中最大元素及所在下标求数组中最大元素及所在下标DimMaxAsInteger,iMaxAsIntegerMax=A(1):iMax=1Fori=2To10IfA(i)MaxThenMax=A(i)iMax=iEndIfNextI5.将数组元素倒置将数组元素倒置Fori=1To102t=A(i)A(i)=A(10-i+1)A(10-i+1)=tNextI例例5.15.2.4一维数组的应用一维数组的应用一

6、、分类统计一、分类统计例例5.2在在例例5.1中中如如果果还还要要统统计计09,1019,2020,.8089,9099分数段及分数段及100分的学生人。分的学生人。则可另用数组则可另用数组bn来存各分数段的人数,并用来存各分数段的人数,并用bn(0)存存09分的人数,分的人数,bn(1)存存1019分的人数,分的人数,bn(9)存存9099分分的人数,的人数,bn(10)存存100分的人数。分的人数。二、二、排序问题排序问题1选择法排序选择法排序算法思想:算法思想:1)对对有有n个个数数的的序序列列(存存放放在在数数组组a(n)中中),从从中中选选出出最最小小(升升序序)或或最最大大(降降序

7、序)的的数数,与第与第1个数交换位置;个数交换位置;2)除除第第1个个数数外外,其其余余n-1个个数数中中选选最最小小或或最最大大的的数数,与与第第2个数交换位置;个数交换位置;3)依依次次类类推推,选选择择了了n-1次次后后,这个数列已按升序排列。这个数列已按升序排列。1选择法排序选择法排序算法思想:算法思想:1)对对有有n个个数数的的序序列列(存存放放在在数数组组a(n)中中),从从中中选选出出最最小小(升升序序)或或最最大大(降降序序)的的数数,与与第第1个个数数交交换换位置;位置;2)除除第第1个个数数外外,其其余余n-1个个数数中中选选最最小小或或最最大大的的数数,与第与第2个数交换

8、位置;个数交换位置;3)依依次次类类推推,选选择择了了n-1次次后后,这这个个数数列列已已按按升升序序排排列。列。For i=1 To n-1For i=1 To n-1 p=i p=i For j=i+1 To n For j=i+1 To n If a(p)a(j)Then p=j If a(p)a(j)Then p=j Next j Next j temp=a(i)temp=a(i)a(i)=a(p)a(i)=a(p)a(p)=temp a(p)=tempNext iNext i选择法排序(升序)的选择法排序(升序)的VB程序程序:2冒泡法排序(递增)冒泡法排序(递增)算法思想:算法思想

9、:(将相邻两个数比较,小的调到前头将相邻两个数比较,小的调到前头)1)有有n个个数数(存存放放在在数数组组a(n)中中),第第一一趟趟将将每每相相邻邻两两个个数数比比较较,小小的的调调到到前前头头,经经n-1次次两两两两相相邻邻比比较较后后,最最大大的的数数已已“沉沉底底”,放放在在最最后后一一个位置,小数上升个位置,小数上升“浮起浮起”;2)第第二二趟趟对对余余下下的的n-1个个数数(最最大大的的数数已已“沉沉底底”)按按上上法法比比较较,经经n-2次次两两两两相相邻邻比比较较后后得得次次大的数;大的数;3)依依次次类类推推,n个个数数共共进进行行n-1趟趟比比较较,在在第第j趟中要进行趟中

10、要进行n-j次两两比较。次两两比较。For i=1 To n-1For i=1 To n-1 For j=1 To n-i For j=1 To n-i If a(j)a(j+1)Then If a(j)a(j+1)Then temp=a(j)temp=a(j)a(j)=a(j+1)a(j)=a(j+1)a(j+1)=temp a(j+1)=temp End if End if Next j Next jNext iNext i冒泡法排序(升序)的冒泡法排序(升序)的VB程序程序:例例5.3 用随机函数产生50个10,100)的随机整数,并按照由小到大的顺序打印出来。程序界面如下:5.3二维数

11、组及多维数组二维数组及多维数组5.3.1二维数组的声明二维数组的声明声明格式如下:声明格式如下:Dim数组名数组名(to,to)As其中的参数与一维数组完全相同。例如:例如:Dim a(2,3)As Single 二二维维数数组组在在内内存存的的存存放放顺顺序序是是“先先行行后后列列”。例例如如数数组组a的各元素在内存中的存放顺序是:的各元素在内存中的存放顺序是: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)5.3.2二维数组的引用二维数组的引用引用形式:引用形式:数组名数组名(下标下标1,下标,下

12、标2)例如:例如:a(1,2)=10 a(i+2,j)a(2,3)*2 在程序中常常通过二重循环来操作使用二维数组元素。在程序中常常通过二重循环来操作使用二维数组元素。5.3.3二维数组的基本操作二维数组的基本操作1.二维数组数据的输入 2.2.求最大元素及其所在的行和列 3.3.计算两矩阵相乘 4.4.矩阵的转置 例例5.4设某一个班共有设某一个班共有60个学生,期末考试个学生,期末考试5门课程,请编一程序评定学生的奖学金,要门课程,请编一程序评定学生的奖学金,要求打印输出一、二等奖学金学生的学号和各门求打印输出一、二等奖学金学生的学号和各门课成绩。(奖学金评定标准是:总成绩超过全课成绩。(

13、奖学金评定标准是:总成绩超过全班总平成绩班总平成绩20%发给一个奖学金,超过全班总发给一个奖学金,超过全班总平成绩平成绩10%发给二个奖学金。)发给二个奖学金。)5.3.5多维数组的声明和引用多维数组的声明和引用定义多维数组的格式如下:定义多维数组的格式如下:Dim数数组组名名(to,to,)As例如:例如:Dim a(5,5,5)As Integer 声明声明a是三维数组是三维数组Dimb(2,6,10,5)AsInteger声明声明b是四维数组是四维数组5.4动态数组动态数组动动态态数数组组:在在声声明明时时未未给给出出数数组组的的大大小小。定定长长数数组组是是在在程程序序编编译译时时分分

14、配配存存储储空空间间,而而动动态态数数组组是是在在程程序序执执行行时时分分配配存存储储空间。空间。5.4.1动态数组的建立及使用动态数组的建立及使用建立动态数组包括声明和大小说明两步:建立动态数组包括声明和大小说明两步:1在使用在使用Dim、Private或或Public语句声明括号内为空的数组。语句声明括号内为空的数组。格式:格式:Dim|Private|Public数组名()数组名()As数据类型数据类型例:例:Dima()AsInteger2在过程中用在过程中用ReDim语句指明该数组的大小。语句指明该数组的大小。格式:格式:ReDimPreserve数组名(下标数组名(下标1,下标,下

15、标2)Preserve参数:保留数组中原来的数据 例:例:RedimA(10)RedimPreserveA(20)说明:说明:(1)ReDim语语句句是是一一个个可可执执行行语语句句,只只能能出出现现在在过过程程中中,并并且可以多次使用,改变数组的维数和大小。且可以多次使用,改变数组的维数和大小。(2)定长数组声时中的下标只能是常量,而动态数组)定长数组声时中的下标只能是常量,而动态数组ReDim语句中的下标是常量,也可以是有了确定值的变量。语句中的下标是常量,也可以是有了确定值的变量。例:例:PrivateSubForm_Click()DimNAsIntegerN=Val(InputBox(

16、“输入输入N=?”)Dima(N)AsInteger.Endsub(3)在过程中可以多次使用)在过程中可以多次使用ReDim来改变数组的大小,来改变数组的大小,也可也可改变数组的维数。改变数组的维数。例:例:ReDimx(10)ReDimx(20)x(20)=30Printx(20)ReDimx(20,5)x(20,5)=10Printx(20,5)(4)每次使用)每次使用ReDim语句都会使原来数组中值丢失,可语句都会使原来数组中值丢失,可以在以在ReDim后加后加Preserve参数来保留数组中的数据。但此时参数来保留数组中的数据。但此时只能改变最后一维的大小。只能改变最后一维的大小。例例

17、5.55.4.2与数组操作有关的几个函数与数组操作有关的几个函数1.Aarry函数函数2.Aarry函数可方便地对数组整体赋值,但它只能给声明函数可方便地对数组整体赋值,但它只能给声明Variant的变量或仅由括号括起的动态数组赋值。赋值后的数的变量或仅由括号括起的动态数组赋值。赋值后的数组大小由赋值的个数决定。组大小由赋值的个数决定。例如,要将例如,要将1,2,3,4,5,6,7这些值赋值给数组这些值赋值给数组a,可使用下面,可使用下面的方法赋值。的方法赋值。Dim a()A=array(1,2,3,4,5,6,7)Dim a A=array(1,2,3,4,5,6,7)2求数组的上界求数组

18、的上界Ubound()函数、函数、下界下界Lbound()函数函数Ubound()函数和Lbound()函数分别用来确定数组某一维的上界和下界值。使用形式如下:UBound(,)LBound(,)其中:必需的。数组变量的名称,遵循标准变量命名约定。:可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略默认是1。3Split函数函数使用格式:使用格式:Split(,)说明:说明:使用使用Split函数可从一个字符串中,以某个指定符号为分隔函数可从一个字符串中,以某个指定符号为分隔符,分离若干个子字符串,建立一个下标从零开始的一维符,分离若干个子字

19、符串,建立一个下标从零开始的一维数数组组。补充例:补充例:使用文件框,通过编程实现大量数据的输入使用文件框,通过编程实现大量数据的输入输入一系列的数据,存放在数组中。对输入的数据允许输入一系列的数据,存放在数组中。对输入的数据允许修改和自动识别非数字数据。修改和自动识别非数字数据。分析:分析:利用文本框实现大量数字串的输入和编辑的功能;利用文本框实现大量数字串的输入和编辑的功能;通过编程将输入的数字串以逗号为分界符分离出各项数据;通过编程将输入的数字串以逗号为分界符分离出各项数据;对非数字输入的判断能力。对非数字输入的判断能力。5.5 5.5 控件数组控件数组 5.5.1控件数组的概念控件数组

20、的概念一组相同类型的控件组成。一组相同类型的控件组成。它们共用一个控件名,具有它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)。控件数组共享同样的事件过程,通过返回的下标控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。值区分控件数组中的各个元素。例:例:PrivateSubcmdName_Click(IndexAsInteger)IfIndex=3then处理第四个命令按钮的操作处理第四个命令按钮的操作EndIfEndSub5.5.2控件数组的建立控件数组的建立一、在设计时建立控件数

21、组的步骤:一、在设计时建立控件数组的步骤:1窗窗体体上上画画出出控控件件,进进行行属属性性设设置置,这这是是建建立立的的第第一一个个元元素;素;2选选中中该该控控件件,进进行行“Copy”操操作作若若干干次次和和“Paste”操操作作若若干次建立了所需个数的控件数组元素。干次建立了所需个数的控件数组元素。3进行事件过程的编程。进行事件过程的编程。二、运行时添加控件数组的步骤如下二、运行时添加控件数组的步骤如下:1在在窗窗体体上上画画出出某某控控件件,设设置置该该控控件件的的Index值值为为0,表表示示该该控控件件为为数数组组,这这是是建建立立的的第第一一个个元元素素,并并可可对对一一些些取取

22、值值相相同同的的属属性性进进行行设设置置,如如所所有有文文本本框框的的字字体体都都取取一一样样大小。大小。2在在编编程程时时通通过过Load方方法法添添加加其其余余的的若若干干个个元元素素,也也可可以通过以通过Unload方法删除某个添加的元素。方法删除某个添加的元素。Load方法和方法和Unload方法的使用格式:方法的使用格式:Load控件数组名控件数组名()Unload控件数组名控件数组名()其中,其中,为整型数据。表示控件数组的某个元素。为整型数据。表示控件数组的某个元素。3通过通过Left和和Top属性确定每个新添加的控件数组元素在属性确定每个新添加的控件数组元素在窗体的位置,并将窗体的位置,并将Visible属性设置为属性设置为True。通过例通过例5.6来说明数组控件的使用:来说明数组控件的使用:例例5.6为例为例5.4的学生成绩处理设计如下图成绩输入界面的学生成绩处理设计如下图成绩输入界面

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁