您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Visual-Basic-清华大学vb编程语言基础-第6讲
第六讲数组内容提要数组的概念数组的声明与数组有关的函数和语句控件数组数组的概念数组是保存一组具有相同名字和类型的数据的集合。用统一的名字代表逻辑上相关的一批数据,每个元素用下标来区分。数组必须先声明后使用声明时指定数组名称、类型、维数和大小。•数组声明时下标的个数确定数组的维数,VB中的数组最多60维。•按声明时数组的大小是否确定分为静态数组和动态数组。Dimstudent(1to30)asString数组的声明Dim数组名(下标1[,下标2,……)[as类型]定义数组的名称指定数组的数据类型指定数组中元素的数目初始化数组中每个元素的值,数值数组中的所有元素初始化为0,字符数组中的所有元素初始化为空字符串。Dimstudent(1to30)asStringstudent(1)student(2)student(3)……student(30)静态数组Dim数组名(下标)[As类型]下标必须是常数,不允许是表达式或变量。下标的形式为:[下界to]上界最小下界是-32768,最大上界是32767,下界的缺省值是0。一维数组的大小为:上界-下界+1。As类型缺省时是Variant类型。缺省情况下,下标从0开始,VisualBasic中可用optionbasen语句在窗体或标准模块中重新设定数组的下界。optionbase1,设定数组的下标从1开始。一维数组声明格式静态数组多维数组声明格式Dim数组名(下标1[,下标2,……)[as类型]数组声明中若有两个下标,则为二维数组,有两个或两个以上下标,则为多维数组。Dima(2,3)asintegera(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)a(2,1)a(2,2)a(2,3)静态数组应用随机产生一个班50个学生的成绩,计算出平均分并统计出高于85分的人数。PrivateSubCommand1_Click()Dimscore(1To50)AsInteger'声明一个有50个元素的数组scoreDimi%,j%DimaverageAsSingleaverage=0j=0Randomize'初始化随机数生成器Print学生成绩为:分析:使用随机函数产生随机数,赋给数组score,通过循环计算出总分,然后计算出平均分,通过循环统计出高于85分的人数。静态数组应用Fori=1To50score(i)=Int(Rnd*90+11)'产生[11,100]的随机数并赋给数组scorePrintscore(i);IfiMod10=0ThenPrintaverage=average+score(i)Nextiaverage=average/50Print平均分是:&averageFori=1To50Ifscore(i)=85Thenj=j+1NextiPrint高于85分的有:&j&人EndSub动态数组动态数组也称为可调数组,在数组声明时不指定数组的大小,而在使用时才指定数组的大小。动态数组使用灵活、方便,可以更高效的使用计算机内存。创建动态数组:在窗体模块、标准模块或过程中用Dim语句或Public语句声明一个没有下标的数组,将数组声明为动态数组在过程中用ReDim语句指明数组的大小,其一般格式为:ReDim[Preserve]数组名(下标1[,下标2……])[as类型]动态数组的使用在过程外部用Dim语句声明一个动态数组:Dima()asinteger在过程内部用ReDim语句指明数组的实际大小:ReDima(2,3)ReDim语句是执行语句,只能出现在过程中,在程序运行时执行,可动态的分配内存空间。ReDim语句中数组的下标即可以是常量,也可以是有确定值的变量,as类型可省略,若不省略,必须与Dim语句声明的类型一致。在过程中可多次使用ReDim语句改变数组的维数和大小。每执行一个新的ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加上Preserve参数用来保留数组中的数据,但Preserve参数只能改变最后一维的大小,前面几维大小不能改变。动态数组的应用OptionBase1'设定数组的下界为1Dima()AsInteger'在过程外声明动态数组aPrivateSubCommand1_Click()Dimm%,n%,i%,j%m=Val(InputBox(输入m))n=Val(InputBox(输入n))ReDima(m,n)'定义数组的大小Print输出数组a:Fori=1TomForj=1Tona(i,j)=i*j'为数组赋值Printa(i,j);NextjPrintNexti动态数组的应用ReDima(6)'重定义数组的大小Print第2次输出数组a:Fori=1To6a(i)=i'再次为数组赋值Printa(i);NextiPrintReDimPreservea(10)'重定义数组的大小,但保留其中的元素Print第3次输出数组a:Fori=1To10Printa(i);NextiEndSub数组元素赋初值数组有关的操作数组元素一般通过for循环和InputBox赋初值Dima(30)AsIntegerDimiAsIntegerFori=0To30a(i)=InputBox(请输入学生成绩:)Nexti当数组元素较少或只给指定的数组元素赋初值时,可用赋值语句为指定的数组元素赋初值a(4)=88数组元素的引用数组元素的引用方法是在数组的后面的括号中指定下标,引用方法和简单变量相同,即可以被赋值也可以参与运算。a(2)=a(1)+10引用数组时,其下标要在数组声明的范围内,否则程序运行时会出现“下标越界”的错误。数组有关的操作数组元素的输出数组有关的操作数组元素的输出可以用Print方法实现。对于矩阵形式的输出,如:123456789先把上面的数据存放在3行3列的数组a中,然后用二重循环按原样输出。OptionBase1(放在过程外)Dima(1To3,1To3)AsIntegerDimi%,j%Fori=1To3Forj=1To3Printa(i,j);NextjPrintNextiForEach……Next语句ForEach……Next语句专门用于数组或对象集合的每一个成员ForEach成员In数组循环体[ExitFor]Next成员“成员”是一个Variant变量,代表数组中的每个元素该语句可以对数组元素进行查询、显示和读取,循环重复的次数由数组的元素数决定,即数组有多少个元素,该语句就自动循环多少次。ForEach……Next语句-例定义一个有10个元素的一维整型数组a,使用随机函数为数组的每个元素赋1~99之间的值,然后用ForEach……Next语句读取并显示数组a中各元素的值。OptionBase1(放到过程外)PrivateSubForm_Click()Dima(10)AsIntegerDimiAsIntegerFori=1To10a(i)=Int(Rnd*100)NextiForEachxInaPrintx;NextxPrintEndSub窗体上单击4次后的结果。Array()函数对一维数组进行初始化数组变量名=Array(数组元素值)Array()函数只能给Variant变量或动态数组赋值“数组元素值”是要赋给数组各元素的值,之间用逗号隔开。数组有关的函数Dima()‘声明动态数组a=array(2,4,6,8,10)相当于:a(0)=2a(1)=4a(2)=6a(3)=8a(4)=10Dimb'声明Variant变量b=array(A,B,C,D)相当于:b(0)=Ab(1)=Bb(2)=Cb(3)=DUBound()、LBound()函数数组有关的函数UBound()函数和LBound()函数用来求数组某一维的上界和下界UBound(数组名[,维数])LBound(数组名[,维数])DimDynArray(8)AsStringDimUB%,LB%,U2B%,L2B%UB=UBound(DynArray)LB=LBound(DynArray)PrintUB,LBDimmatrix(1To5,6)AsIntegerU2B=UBound(matrix,2)L2B=LBound(matrix,2)PrintU2B,L2BUB=8LB=0U2B=6L2B=0Split函数从一个字符串开始,以某个指定符号为分隔符,分离若干个子字符串建立一个下标为0的一维数组Split(字符串表达式[,分隔符])Dimi%Dima()AsStringa=Split(how!are!you,!)Fori=0ToUBound(a)Printa(i)Nextihowareyou控件数组控件数组由一组相同类型的控件组成,它们具有相同的控件名、相同的属性、相同的事件过程。在设计时创建控件数组一般步骤为:在窗体上画出控件数组的第一个控件,并设置该控件的Name等属性。选中该控件,执行“复制”/“粘贴”操作系统弹出对话框,询问是否创建控件数组,选择“是”,创建了控件数组的一个元素,其索引值是1。重复执行前两步,创建多个控件数组的元素。双击任一控件数组元素,打开代码编辑窗口,编写事件过程代码控件数组-例创建有4个复选框的控件数组,单击不同的复选框,文本框中的文字分别显示宋体、楷体、隶书和黑体。控件名indexstylecaptionCheck101宋体Check111楷体Check121隶书Check131黑体PrivateSubCheck1_Click(IndexAsInteger)SelectCaseIndexCase0Text1.FontName=宋体Case1Text1.FontName=楷体_GB2312Case2Text1.FontName=隶书Case3Text1.FontName=黑体EndSelectEndSub运行时创建控件数组在窗体上画出一个控件,并在属性面板上设置该控件的Index属性值为0,代表控件数组,还可以设置该控件的其它属性。在程序中用Load方法添加该控件数组的其它元素,用Unload方法删除添加的元素,一般格式为:Load控件数组名(index)Unload控件数组名(index)设置每个添加的控件数组元素的Left和Top属性,以确定该元素在窗体中的位置,设置Visible属性为True。运行时创建控件数组-例用“筛法”找100以内的全部素数分析:用“筛法”求素数时首先把要判断的全部整数写在纸上,然后逐一判断是否是素数,不是素数的就把该整数筛掉,最后剩下的就是素数。n控件名属性值picture1backcolor空白label1caption空白index0backcolor白command1caption开始form1caption筛法求素数具体步骤是:先将1筛掉,分别用2到去除它们后面的每个数,能整除的就不是素数,把该数筛掉。“筛法”求素数“筛法”求素数PrivateSubForm_Load()Picture1.Move0,0Label1(0).Visible=FalsePicture1.Height=Label1(0).Height*10+100'设置图形控件的高度和宽度Picture1.Width=Label1(0).Width*10+100Form1.Width=Picture1.Width+100'设置窗体的高度和宽度Form1.Height=Picture1.Height+800Forn=1To100'创建标签控件数组i=(n-1)\10j=(n-1)Mod10LoadLabel1(n)WithLabel1(n)'设置控件数组的位置,可见性和标题.Left=5+j*Label1(0).Width.Top=5+i*Label1(0).Height.Visible=True.Caption=nEndWithNextEndSub“筛法”求素数PrivateSubCommand1_Click()Label1(
本文标题:Visual-Basic-清华大学vb编程语言基础-第6讲
链接地址:https://www.777doc.com/doc-3661885 .html