vb第五章.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第五章数组VisualBasicProgrammingLanguage2第五章数组数组的概念数组分类数组的基本操作控件数组常用算法自定义数据类型VisualBasicProgrammingLanguage3引例(1)求一个班100个学生的平均成绩mark=InputBox(输入+i+位学生的成绩)Fori=1to100Nextiaver=0aver=aver+markaver=aver/100Dimi,mark,averDimi%,mark!,aver!求一个班100个学生的平均成绩,统计高于平均分的人数?VisualBasicProgrammingLanguage4(2)统计高于平均分的人数Fori=1to100mark=InputBox(输入+str(i)+位学生的成绩)NextiDimovern%IfmarkaverThenovern=overn+1已知平均成绩aver,高于平均分的人数用overn表示1.重新输入100个学生成绩2.容易出错VisualBasicProgrammingLanguage5方法IIDima1assingleDima2assingleDima3assingle…..Dima100assinglea1=val(InputBox(“输入第1位学生的成绩))a2=val(InputBox(“输入第2位学生的成绩))…a100=val(InputBox(“输入第100位学生的成绩))1.繁琐2.容易出错VisualBasicProgrammingLanguage6第五章数组数组的概念数组分类数组的基本操作控件数组常用算法自定义数据类型VisualBasicProgrammingLanguage7数组的概念数组是一组相同类型的变量的集合数组名代表一批数据,用下标表示该数组中的各个元素Dimmark(1To100)AsSingle数组名下标的范围Mark(100)……Mark(i)……Mark(2)Mark(1)数组元素数据类型VisualBasicProgrammingLanguage82.用数组统计高于平均分的人数-引例Fori=1To100mark(i)=val(InputBox(输入&i&位学生的成绩))aver=aver+mark(i)Nextiaver=aver/100overn=0Fori=1To100ifmark(i)averThenovern=overn+1Nextiaver=0Printaver,overnDimmark(1To100)AsSingle数组定义数组赋值数组值引用VisualBasicProgrammingLanguage9数组声明数组声明的表达式Dim数组名(下标1[,下标2…])[As类型]下标:表示顺序号,每个数组元素有一个唯一的顺序号。可以是整型的常数或变量、表达式,甚至又是一个数组元素下标范围:下标形式:[下界To]上界Dimmark(1To10)AsSingleDimmark(10)AsSingle区别?VisualBasicProgrammingLanguage10区别Mark(10)……Mark(i)……Mark(2)Mark(1)Dimmark(1To10)AsSingleDimmark(10)AsSingleMark(10)……Mark(i)……Mark(1)Mark(0)VisualBasicProgrammingLanguage11数组分类数组静态数组动态数组数组一维数组多维数组(声明时确定了大小的数组)(声明时没有确定大小的数组)(下标数为1个的数组)(下标数为2个以上的数组)Dim数组名(下标1[,下标2…])[As类型]VisualBasicProgrammingLanguage12数组分类11.一维数组Dima(4)AsInteger2.多维数组多个下标Dima(4,5)AsInteger一个下标VisualBasicProgrammingLanguage13多维数组Dim数组名(下标1,下标2[,下标3,…])[As类型]下标个数:决定了数组的维数每一维的大小:上界-下界+1数组的大小为:每一维大小的乘积a(3,4)a(3,3)a(3,2)a(3,1)a(3,0)a(2,4)a(2,3)a(2,2)a(2,1)a(2,0)a(1,4)a(1,3)a(1,2)a(1,1)a(1,0)a(0,4)a(0,3)a(0,2)a(0,1)a(0,0)二维数组a的所有数组元素a(0,j)a(i,0)Dima(0To3,0To4)AsLong什么是数组的大小?VisualBasicProgrammingLanguage14Dima(10)AsIntegerDimst(-3To5)AsString*3数组a是____维整型数组,有___个元素,下标范围为______,若使用a(11),系统提示________数组st是____维字符串型数组,有___个元素,下标范围为-3~5,每个数组元素最多存放3个字符Dima%(10)“下标越界”一110~10一9练习VisualBasicProgrammingLanguage15Dimb(3,4)AsLongb(0,0)b(0,1)b(0,2)b(0,3)b(0,4)b(1,0)b(1,1)b(1,2)b(1,3)b(1,4)b(2,0)b(2,1)b(2,2)b(2,3)b(2,4)b(3,0)b(3,1)b(3,2)b(3,3)b(3,4)二维数组b各元素排列VisualBasicProgrammingLanguage16动态数组•在声明数组时未给出数组的大小DimA()AsSingle•在使用动态数组时,用ReDim语句指出该数组的大小ReDim数组名(下标1[,下标2…])[As类型]保持一致•ReDim语句中,下标可以是常量也可以是有了确定值的变量。VisualBasicProgrammingLanguage17引例:求一个班全体学生的平均成绩Fori=1Tonmark(i)=InputBox(输入&i&位学生的成绩)aver=aver+mark(i)Nextiaver=aver/naver=0n=Val(InputBox(“请输入该班的学生人数))Dimmark!(),nAsIntegerReDimmark!(1Ton)VisualBasicProgrammingLanguage18每次使用ReDim语句会使原来数组中的值丢失,在ReDim语句后加Preserve参数可以保留原数组中的数据,但是只能改变最后一维的大小,前面几维大小不能改变[注意]在静态数组声明中的下标只能是常量,在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量在过程中可多次使用ReDim来改变数组的大小,也可以改变数组的维数ReDimlarray(n,m)…ReDimPreservelarray(n+1,m)(×)ReDimPreservelarray(n,m+1)(√)VisualBasicProgrammingLanguage19n=12Dima(1Ton)AsIntegerDima%[3,3]Dima(1,1,2)AsIntegerDima%(10)ReDima(1To12)Dima!()ReDima(3,2)AsInteger判断下列数组声明是否合法?合法的数组声明可以存放多少个数组元素?课堂练习VisualBasicProgrammingLanguage20两个重要知识点1•OptionBasen功能:指定数组下标下界的缺省值说明:•n为数组下标指定的下界,取值为0或1。不使用该语句,程序默认数组的下标的下界值为0•该语句只能出现在窗体层或模块层,不能出现在过程中,且必须位于数组定义之前VisualBasicProgrammingLanguage21•数组下标测试函数Lbound(数组名[,维]):返回数组中指定维的下界Ubound(数组名[,维]):返回数组中指定维的上界Dimy(1To12,5To20,-3To6)PrintLbound(y,1),Ubound(y,1)PrintLbound(y,2),Ubound(y,2)PrintLbound(y,3),Ubound(y,3)112520-36两个重要知识点2VisualBasicProgrammingLanguage22数组的基本操作数组的引用数组元素赋值数组的输入和输出ForEach…Next语句VisualBasicProgrammingLanguage23数组的引用指对数组元素的引用,数组元素的引用形式为:数组名(下标)0.53.61.30.7-1.52.0Dimmark(5)AsSinglemark(5)=?0.5VisualBasicProgrammingLanguage24数组引用的说明(1)数组定义与数组元素的区别,如Dima(10)′数组的定义……y=a(10)′数组元素的引用……(2)数组元素也称下标变量。在程序中,凡是简单变量可以出现的地方都可以出现数组元素的引用。例如:a(8)=a(5)+a(3)VisualBasicProgrammingLanguage25(3)引用数组元素时,数组名、数组的类型和维数必须与定义数组时保持一致。Dimb(10)AsInteger……b(3,2)=100‘赋值语句的数组元素只能为一维数组元素。(4)引用数组元素时,数组元素的下标必须在建立数组时指定的范围内,否则将发生“下标越界”的错误。Dimb%(10)……b%(15)=100‘下标越界,允许使用的下标范围:0~10(5)在同一个过程中,数组名不得与简单变量同名。VisualBasicProgrammingLanguage261.数组元素的赋初值注意:•利用Array对数组各元素赋值,声明的数组是可调数组或连圆括号都可省,且其类型只能是Variant。•数组的下界为零,上界由Array函数括号内的参数个数可决定,也可通过函数Ubound获得。(2)Array函数DimibAsVariantib=Array(abc,def,67)Fori=0ToUBound(ib)Picture1.Printib(i);;Nexti(1)用循环Fori=1To10iA(i)=0NextiDima(5)a(5)=10VisualBasicProgrammingLanguage272.数组的赋值Dima()AsVariant,b()AsVariant,i%a=Array(1,2,3,4,5)ReDimb(UBound(a))b=a在VB6.0中,提供了数组直接对数组的赋值。例如:Fori=0ToUBound(a)b(i)=a(i)Nexti注意:赋值号左边的数组只能声明为Variant的可调数组或简单变量。VisualBasicProgrammingLanguage28Fori=0To4Forj=0Toisc(i,j)=i*5+jPrintsc(i,j);;NextjPrint'换行NextI3.数组的输出输出方阵sC中的下三角元素VisualBasicProgrammingLanguage29DimMaxAsInteger,iMaxAsIntegerMax=iA(1):iMax=1Fori=2To10IfiA(i)MaxThenMax=iA(i)iMax=iEndIfNextI4.求数组中最大元素及所在下标VisualBasicProgrammingLanguage30Fori=1To10\2t=iA(i)iA(i)=iA(10-i+1)iA(10-i+1)=tNextI5.将数组中各元素交换格式:ERASE数组名[,数组名]…例编写程序,试验ERASE语句的功能StaticSubForm_Click()DimTest(1To20)AsIntegerFori=1To20Test(i)=iPrintTest(i);NextiEraseTestPrintPrintEras

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功