【文档说明】VB第5章数组课件.ppt,共(53)页,1.029 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-3251.html
以下为本文档部分文字说明:
2022/11/13111/13/2022VisualBasic程序设计2022/11/132211/13/20221.了解数组的基本概念2.熟练掌握一维数组的使用方法3.掌握数组的基本操作4.灵活应用静态数组
与动态数组5.掌握数组的常用算法本章学习目标6.掌握用户自定义类型的基本用法教学重点——数组和控件数组的应用教学难点——控件数组2022/11/133311/13/20225.1数组的概念引例1.己知50名学生的一门课成绩,要求找出高于平均分的所有学生的成绩。
2.输入50个数,要求程序按输入时的逆序把这50个数输出来。即按输入时的相反顺序输出这50个数。少量的数据可以使用简单变量方便地存取或处理。若数据量很大,采用这种处理方法几乎是难以做到的。而数组可以很方便地处理这种大量的数据。2022/11/134411/13/2022数组是一组按一定
规律进行排列的相同类型变量的集合。•数组用于表示一组性质相同的有序的数,这一组数用一个统一的名称来代替,称为数组名。数组名的命名规则与简单变量的命名规则相同。•数组中的每一个变量称为数组元素。为了在处理时能够区分数
组中的每一个元素,需要用一个索引号加以区别,该索引号称为下标。数组中的每一个元素可以用数组名和下标唯一表示,写成:数组名(下标)。•数组元素在程序中的使用与简单变量类似,在简单变量允许出现的地方也允许出现数组元素。所以,数组元素又称为下标变量。20
22/11/135511/13/2022表示数组元素时,应注意1)需用圆括号也只能用把下标括起来。2)下标可以是常量、符号常量或表达式,其值必须是整数。3)下标的最小值称为下界,下标的最大值称为上界。在没有任何说明的情况下,数组的下界默认值为0。例如dimscore(48)assingle
(integer)OptionBase1•一个班(48个)学生的成绩Score或30种图书的名字BookName或100种商品的价格Cost•数组元素——数组中的各个变量,使用唯一的下标(索引)来标识。•Score(1)、Score(2)……Score(48
)或BookName(0)~BookName(29)或Cost(0)~Cost(99)2022/11/136611/13/20225.2数组的定义5.2.1定义数组的一般格式Dim数组名(第一维说明[
,第二维说明]……)[As类型名称]说明:(1)数组须先定义后使用,未定义不能使用。(2)格式中的[]部分为可选部分。(3)省略[As类型名称]定义数组,默认为变体类型的数组。(4)维说明的形式为:[下标下界to]下标上界其中当下标的下界为默认值0时,可以省略不写(5)也可
以下面方式定义下标下界的默认值:OptionBasen(其中n为0或1)。(6)用Dim语句定义数组时,该语句把数组元素初始化为0或空字符串。(7)在同一过程中,数组名不能与其他数组名或变量名相同。2022/11/13711/13/2022数组的维数•一个数组元素只有一个下标,则
称为一维数组。例如,要表示某班40名同学的英语成绩可以表示成G(1)、G(2)、G(3)……G(40)。•用两个下标来表示的数组称为二维数组。对于可以表示成表格形式的数据,如矩阵、行列式等,用二维数组来表示则比较方便。例如,要表示六个班(各班40人
)共240个学生的英语成绩,就可以用二维数组表示G(6,40),第一个下标表示班级,第二个下标表示学号,则一班30号学生的成绩可以表示成G(1,30)。•根据需要,还可以使用三维数组、四维数组等,VB最多允许
有60维。2022/11/138811/13/20225.2.2数组的引用引用数组元素的格式数组名(下标1,[下标2]…)说明:(1)在程序中,凡是能用变量的地方,都可用数组元素来替换。(2)引用数组元素时,要注意数组
名、类型及维数要与定义的一致。(3)数组元素的下标要在定义的范围之内,否则出现下标越界错误。2022/11/139911/13/2022一般通过循环语句及InputBox函数给数组输入数据。数组的输出一般用Pr
int方法、标签或文本框实现。赋值Fori=1To10a(i)=Val(InputBox("输入第"&i&"个数"))Nexti输出Fori=1To10Printa(i);Nexti5.2.3数组的赋值和输出2022/11/13101011/13/2022
对输入的20个整数按每行5个数的格式输出。例5-1PrivateSubCommand1_Click()Dimb(20)AsInteger,i%Fori=1To20b(i)=InputBox("请输入一
个整型数")NextiFori=1To20Printb(i);IfiMod5=0ThenPrintNextiEndSub2022/11/13111111/13/2022由键盘输入10个数,再逆序输出。例5-2PrivateSubCo
mmand1_Click()Dima(10)AsInteger,i%Print"输入的数据为"Fori=1To10a(i)=InputBox("请输入第"&i&"个数")Printa(i),NextiEnd
SubPrivateSubCommand2_Click()Dima(10)AsInteger,i%PrintPrint"逆序输出为"Fori=10To1step-1Printa(i),NextiEndSub2022/11/13121211/13/2022由键盘上输入
40人的考试成绩,输出高于平均成绩的分数。例5-3分析:该问题需处理三部分,一输入40个人的成绩;二求平均分;三把这40个分数逐一和平均成绩进行比较,若高于平均成绩,则输出。程序代码如下:PrivateSubCommand1_Click()Dimscore(40)AsSingle,ave
r!,i%aver=0Fori=1To40score(i)=InputBox("请输入成绩")aver=aver+score(i)Nextiaver=aver/40Fori=1To40Ifscore(i)>averThenPrintscore(i)NextiEn
dSub2022/11/13131311/13/2022定义一个可存放不同类型数据的一维数组并输出。例5-4OptionBase1PrivateSubCommand1_Click()Dimabc(4)abc
(1)=dateabc(2)="你的考试得了"abc(3)=100abc(4)="分"PrintFori=1To4Printabc(i)NextiEndSub2022/11/13141411/13/20225.2.4二维数组的定义和引用1.二维数组定义格式Di
m数组名(下标1,下标2)[As类型名称]说明:(1)两个下标形式为:[下标下界]To上界,如果下标下界省略,则下标下界默认为0。如果之前用OptionBase1说明,则下标下界默认值为1。(2)二维数组可以形象地用平
面的二维表格来表示,表格的行数和列数就是数组地第一个下标和第二个下标地取值个数,同一行上的元素,第一个下标是相同的,同一列上的元素,第二个下标是相同的。(3)二维数组的元素个数为(上界1-下界1+1)×(上界2-下界2+1)202
2/11/13151511/13/20222.二维数组的引用引用形式:数组名(下标1,下标2)说明:习惯上将下标1为行下标,下标2为列下标。例如:a(1,2)为数组第二行第三列的元素。二维数组的下标范围由下标的下界和上界来确定,下界和上界可以是任何整型常量或常量表达式。如:Dima
a(2,3)asintegeraa(0,0)aa(0,1)aa(0,2)aa(0,3)aa(1,0)aa(1,1)aa(1,2)aa(1,3)aa(2,0)aa(2,1)aa(2,2)aa(2,3)2022/11/13161611/13/2022又如:Dimaa(-1to1,-2to1)aa(-
1,-2)aa(-1,-1)aa(-1,0)aa(-1,1)aa(0,-2)aa(0,-1)aa(0,0)aa(0,1)aa(1,-2)aa(1,-1)aa(1,0)aa(1,1)3.二维数组的赋值可以
通过循环语句赋值:例如:fori=0to2forj=0to3a(i,j)=int(rnd*100)nextjnexti2022/11/13171711/13/2022LBound函数和UBound函数格式:LBound(数组名[
,维])UBound(数组名[,维])说明:(1)数组名是要测试的数组。(2)LBound函数返回数组的下界值,UBound函数返回数组的上界值。(3)一维数组可省略[,维],二维数组必须指定LBound(aa,
2)表示测试aa数组的第二维下界,其值为:-2。UBound(aa,1)表示测试aa数组的第一维上界,其值为:1。5.2.5数组下标的界值2022/11/13181811/13/2022用LBound函数和UBound函数改写例
4-4。例5-5OptionBase1PrivateSubCommand1_Click()Dimabc(4)abc(1)=dateabc(2)="你的考试得了"abc(3)=100abc(4)="分"Pr
intFori=LBoundToUBound(abc)Printabc(i)NextiEndSub2022/11/13191911/13/20225.3静态数组动态数组5.3.1.静态数组静态数组的二种形式:用Dim语句所定义的数组。用Static语句定义的数组。两者的区别:
(1)Static语句只能出现在过程中,Dim语句不仅可以出现在过程中,还可以出现在通用声明中。(2)在过程中用Dim语句定义的数组,过程执行结束后将释放内存空间。(3)在过程中用Static语句定义的数组,过程执行结束
后将不会释放内存空间。2022/11/13202011/13/2022比较用Static语句定义的数组与用Dim语句定义的数组之区别。单击5次“打印”命令按钮后的结果如图所示.例5-62022/11/13212111/13/20225.3.2.动态数组(可调数组)定义
可调数组分两步:第一步:声明一个没有下标参数的数组。格式:Dim数组名()[As类型]第二步:引用数组前用ReDim语句重新定义。格式:ReDim[Preserve]数组名([下界to]上界[,[下界to]上界……])[As类型]2022/11/13222211/13/2022例如:Priva
teSubCommand1_Click()Dima()AsIntegerDimn%……n=Val(InputBox("inputn"))ReDima(n)……EndSub2022/11/13232311/13/2022可调数组说明(1)在过
程中,可多次用ReDim语句来改变数组的大小,也可改变数组的维数,但不能改变数组的类型。(2)若不指定[Preserve]保留字,在执行ReDim语句时,数组中原来所存放的值将全部丢失。(3)指定[Preserve]保留字,在执行ReDim语句时,数组中原来所存放的值将不会丢失。但使用[
Preserve]保留字后,只能改变最后一维的大小,前几维的大小不能改变。2022/11/13242411/13/2022通过输入对话框输入一批成绩,把及格的和不及格的成绩分别存放在数组a和b中,并以每行5个数据的形式输出数组a和b。输入-1时程
序结束。例5-62022/11/13252511/13/2022数组是一种构造类型,数组名通常是整个数组的标识,对数组的操作实际上是对数组元素的操作。基本操作一般是指对数组元素所进行的输入和输出,即如何给数组元素赋值,又如何将数组元素的值显示在窗体上或控件上。5.4数组的基本操作2022/
11/13262611/13/2022方法一用循环结构及InputBox函数给数组元素赋值由键盘输入10个数据,分别统计正数之和及负数之和。例5-75.4.1.数组元素的输入2022/11/13272711/13/2022例5-8方法二用数组名直接赋值
用静态数组ww元素的值给动态数组yy赋值。OptionBase1PrivateSubCommand1_Click()Dimww(4)asintegerDimyy()asinteger'yy为动态数组Fori=1To5Nextiyy=ww'用ww给yy赋值printyy(i)nextiEndSu
b2022/11/13282811/13/2022例5-8说明(1)通过数组名给数组名赋值的条件是:两个数组的类型相同,且赋值号左边为动态数组,右边为静态数组。(2)赋值号左边的动态数组,通过赋值确定大小。2022/11/13
292911/13/2022格式:数组变量名=Array(数组元素值)功能:将小括号中的数据依次赋给数组中的各元素。说明:(1)数组可以说明成Variant类型或不说明类型。(2)所声明的数组为可调数组,圆括号可省略不写(3)数组下标的上界值由括号内的参数个数决定(4)Array函数只适用于一
维数组。(5)Array函数中的数组元素值之间以逗号分隔方法三用Array函数给数组元素赋值。2022/11/13303011/13/2022用Array函数为数组C赋初值。例5-9PrivateSubCommand1_Click()DimcasVari
antc=Array(4,5,3,7,2,9)Fori=LBound(c)ToUBound(c)printc(i)NextiprintprintFori=0To5printc(i)nextiEndSub2022/11/13313111
/13/2022根据提示分别将5个数据通过文本框赋给一维数组w,单击输入框中的“确定”按钮完成每次的输入操作;单击显示框中的“确定”按钮,在图片框中输出数组w中所有元素的值。例5-10方法四将控件(对象)的属性给数组元素赋值。2022/11/13323211/1
3/2022如例5-9中的语句:Fori=0To5Printc(i)Nexti再如例5-10中的语句:Fori=1To5Picture1.Printww(i)Nexti是利用循环并结合Print语句将数组元素的值依次输出在窗体上。是利用循环并结合Pr
int语句将数组元素的值依次输出在图片框上。5.4.2.数组元素的输出方法一用print方法将数组元素的值直接输出到窗体上或图片框中。2022/11/13333311/13/2022求数组中的最大元素及下标。例5-11方法二用赋值语句方法将数组元素的值显
示在标签、文本框中或其它控件上。2022/11/13343411/13/2022格式:ForEach成员in数组…[ExitFor]…Next[成员]功能:ForEach…Next语句用于对数组或集合中的元素逐一进行循环控制操作。方法三用ForEach...Next语句输出。2022/1
1/13353511/13/2022该语句的执行过程:(1)首先计算数组元素的个数,决定循环的次数(2)每次执行循环体之前先将数组的一个元素的值赋给成员,第一次是第一个数组元素,第二次是第二个数组元素,依次类推。(3)执行循环体后,转到(2)。(4)直到遍历完每一个数组元素或遇到ExitFo
r语句则退出该循环。2022/11/13363611/13/2022说明:(1)“成员”必须是一个变体变量名,为循环而设,表示某个数组元素的值。(2)“数组”仅为一个数组名,不需括号、上界、下界等。(3)从ForEach语句到Next语句之间
的语句为循环体。可用ExitFor语句直接跳出循环。2022/11/13373711/13/2022用ForEach…Next语句输出数组元素。例5-122022/11/13383811/13/20225.5控件数组控件数组的建立方法一1.在界面设计时建立(1)先创建数组中的第一个控
件(注意此时控件的Index属性值为空)。(2)选取该控件复制,再粘贴。系统自动提示:“是否创建一个控件数组吗?”。(3)单击“是”按钮,窗体上自动增加一个属性基本相同的控件(注意此时第一个控件的Index=0,新增控件的Index=1)。(4)继续粘贴,便会产生一系列属性基
本相同,而只有Index属性不同的一组控件,即控件数组。1.控件数组的概念2.控件数组的建立2022/11/13393911/13/20225.5控件数组1.控件数组的概念2.控件数组的建立一组完成类似功能且类型相同的控件,将它们组合起来,以控件的名称作为数组名,并给各个控件冠以不
同的下标,所组成的数组,称之为控件数组。数组中的某个元素,代表某一个具体的控件,所完成的功能与独立的控件几乎一样。2022/11/13404011/13/20225.5控件数组控件数组的建立方法二2.在程序运行时增加控件数组元素(1
)在窗体上添加第一个控件,将其Index属性设置为0,Visible属性设置为False。(2)在编写事件代码中,用Load方法添加新的控件数组元素,并将其Visible属性设置为True;用UnLoad方法可以删除控件数
组元素。(3)设置其Left属性和Top属性。(4)当程序运行时,则会根据编程中的命令,添加或删除控件。1.控件数组的概念2.控件数组的建立2022/11/13414111/13/20225.5控件数组1.
控件数组的概念2.控件数组的建立建立一个含有三个命令按钮的控件数组,当单击某个命令按钮时,标签的背景分别显示不同的颜色。例5-132022/11/13424211/13/20225.5控件数组Load语句和UnLoad语句Load语句的一般
格式为:Load控件数组名(下标)其中控件数组名为控件名称,如:Label1、Command1、Picture1等,下标为1、2、3等。UnLoad语句的一般格式为:UnLoad控件数组名(下标)1.控件数组的概念2
.控件数组的建立2022/11/13434311/13/20225.5控件数组单击“添加图片”按钮,在窗体上增加一幅图片,单击“删除图片”按钮,在窗体上删除一幅图片,最多显示四幅图片。例5-141.控件数组的概念2.控件数组的建立2022/11/13444411/13/20225.
7数组应用举例将输入的一维数组的数据逆序存放并输出。例5-18例5-18例5-19例5-20例5-21例5-22例5-232022/11/13454511/13/2022从键盘输入7个数据,从小到大排序。例5-195.7数组应用举例例5-18例5-19例5-20
例5-21例5-22例5-23代码2022/11/13464611/13/2022选择排序:2022/11/13474711/13/2022冒泡原理:2022/11/13484811/13/2022求矩阵A的转置矩阵。例5-20矩阵A12345
67895.7数组应用举例例5-18例5-19例5-20例5-21例5-22例5-232022/11/13494911/13/2022在一个二维数组中查找某个整数,若找到就显示该元素及其数组下标,若未找到则给出提示。例5-215.7数组应用举例例5-
18例5-19例5-20例5-21例5-22例5-232022/11/13505011/13/2022分别求下列矩阵两个对角线元素之和。例5-225.7数组应用举例例5-18例5-19例5-20例5-21例5-22例5-231234567892022/11/13515111/13
/2022求下列两个矩阵之和。矩阵A矩阵B123012456345789678例5-235.7数组应用举例例5-18例5-19例5-20例5-21例5-22例5-232022/11/13525211/13/2022设要在一个具有n个升序
排列元素的一维数组中插入一个新的元素k,使原数组仍然是有序的。算法描述如下:(1)从第1个元素开始逐个与k比较,一旦发现第p个元素大于k,则确定插入的位置为p,如果所有元素均小于k,则确定插入的位置为n+1。(2)重新定义数组大小,从第n个元素到第p个元素逐一向后移动一个位置。(3)将k赋值给第p
个元素,完成插入操作。例5-245.7数组应用举例246108待插入元素ka(1)a(2)a(3)a(4)a(5)a(6)7①②③例5-24例5-252022/11/13535311/13/2022在窗上画一个文本框一个图形框,和一个
命令按钮,在文本框中输入一串字符,当单击“统计”按钮时,统计各字母出现的次数,并在图形框中输出。输入不区分大小写字母例5-255.7数组应用举例例5-25例5-24