《VB语言数组专题讲解.pptx》由会员分享,可在线阅读,更多相关《VB语言数组专题讲解.pptx(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1VB语言语言(yyn)数组专题讲解数组专题讲解第一页,共61页。2第第第第5 5章章章章 数数数数 组组组组一个人一个人一个人一个人N N N N门课的成绩怎样门课的成绩怎样门课的成绩怎样门课的成绩怎样(znyng)(znyng)(znyng)(znyng)存储和处理?存储和处理?存储和处理?存储和处理?一个班一个班一个班一个班N N N N门课的成绩怎样门课的成绩怎样门课的成绩怎样门课的成绩怎样(znyng)(znyng)(znyng)(znyng)存储和处理?存储和处理?存储和处理?存储和处理?.这些数据的特点:具有相同的数据类型。这些数据的特点:具有相同的数据类型。这些数据的特点
2、:具有相同的数据类型。这些数据的特点:具有相同的数据类型。为了为了为了为了(wi le)(wi le)(wi le)(wi le)方便地使用这些数据,方便地使用这些数据,方便地使用这些数据,方便地使用这些数据,VBVBVBVB语言提供了一种语言提供了一种语言提供了一种语言提供了一种构造数据类型:数组构造数据类型:数组构造数据类型:数组构造数据类型:数组例如:存储学生成绩例如:存储学生成绩例如:存储学生成绩例如:存储学生成绩(chngj)(chngj)(chngj)(chngj)用实型数组用实型数组用实型数组用实型数组 score score score score(1 1 1 1 tototo
3、to 5 5 5 5)其中:其中:其中:其中:scorescorescorescore是数组名。是数组名。是数组名。是数组名。该数组可以存放该数组可以存放该数组可以存放该数组可以存放5 5 5 5个成绩个成绩个成绩个成绩(chngj)(chngj)(chngj)(chngj),分别用下标变量表示:,分别用下标变量表示:,分别用下标变量表示:,分别用下标变量表示:score(1),score(5)score(1),score(5)score(1),score(5)score(1),score(5)。第1页/共61页第二页,共61页。3 5.1 5.1数组的概念数组的概念数组的概念数组的概念(gi
4、nin)(ginin)及其声明及其声明及其声明及其声明5.1.1数组与数组元素数组与数组元素(yun s)1.数组概念数组概念 数组就是数组就是(jish)一组相同类型数据的集合,这一组数中一组相同类型数据的集合,这一组数中的每一个组成元素就叫做数组元素。的每一个组成元素就叫做数组元素。用一个统一的名字(数组名)代表逻辑上相关的一批数据,用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的每个元素用下标变量来区分;下标变量代表元素在数组中的位置。位置。例如:例如:dim mark(1 to 100)As Integer 第一个学生成绩用第一个
5、学生成绩用mark(1)来表示,其值为来表示,其值为95 第二个学生成绩用第二个学生成绩用mark(2)来表示,其值为来表示,其值为80第2页/共61页第三页,共61页。42.数组的命名数组的命名 命名规则和简单命名规则和简单(jindn)变量的命名规则相同。变量的命名规则相同。例如:用例如:用 mark 来代表来代表100个学生的成绩个学生的成绩 3.数组维数数组维数数组中下标的数组中下标的(bio de)个数称为数组的维数个数称为数组的维数一维数组:例如一维数组:例如(lr)mark(100)二维数组:有两个下标二维数组:有两个下标例如例如:x(2,3)二维数组相当于一个矩阵二维数组相当于
6、一个矩阵三维数组:有三个下标,例如:三维数组:有三个下标,例如:m(3,4,5)5.1.1数组与数组元素数组与数组元素第3页/共61页第四页,共61页。54.数组元素数组元素(yun s)5.1.1数组与数组元素数组与数组元素(yun s)如何确定如何确定(qudng)100个学生和这个数据组中的各个成绩对应关系呢?个学生和这个数据组中的各个成绩对应关系呢?给数组中的数据编号,也就是顺序号,从而出现了数组中的下标变量,所以给数组中的数据编号,也就是顺序号,从而出现了数组中的下标变量,所以数组元素也称为下标变量数组元素也称为下标变量.数组元素表示为:数组元素表示为:()例如:例如:mark(1)
7、、mark(99)例如例如:c(2,3)表示数组表示数组c中第中第2行第行第3列的那个元素列的那个元素对于数组中下标的使用说明:对于数组中下标的使用说明:对于数组中下标的使用说明:对于数组中下标的使用说明:(1 1)下标放在数组名后的)下标放在数组名后的)下标放在数组名后的)下标放在数组名后的括号括号括号括号内内内内mark1mark1,mark2mark2,mark(1),mark(1)第4页/共61页第五页,共61页。65.1.15.1.1数组与数组元素数组与数组元素(yun s)(yun s)(2 2)下标可以是常量、变量)下标可以是常量、变量)下标可以是常量、变量)下标可以是常量、变量
8、(binling)(binling)或者表达式或者表达式或者表达式或者表达式mark(1)=60mark(1)=60for i=2 for i=2 toto 100 100 mark(i)=cint(inputbox(“mark(i)=cint(inputbox(“输入输入输入输入(shr)”)(shr)”)next inext imark(mark(i+1i+1)=0)=0(3 3)下标反映的是数据在数组中的位置,应该为整数,)下标反映的是数据在数组中的位置,应该为整数,)下标反映的是数据在数组中的位置,应该为整数,)下标反映的是数据在数组中的位置,应该为整数,如为非整数,要四舍五入取整如为
9、非整数,要四舍五入取整如为非整数,要四舍五入取整如为非整数,要四舍五入取整例如例如例如例如x(3.6)x(3.6)取整后为取整后为取整后为取整后为x(4)x(4)第5页/共61页第六页,共61页。7 5.数组的类型(lixng)Visual Basic中的数组,按不同的方式可分为以下几类:按数组的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组,也称为静态数组或动 态数组。5.1.15.1.1数组与数组元素数组与数组元素(yun(yun s)s)v 按元素的数据类型可分为:数值型数组、字符串数组、按元素的数据类型可分为:数值型数组、字符串数组、v 日期日期(rq)型数组、变体数
10、组等。型数组、变体数组等。v 按数组的维数可分为:一维数组、二维数组、多维数组。按数组的维数可分为:一维数组、二维数组、多维数组。v 对象数组:菜单对象数组、控件数组对象数组:菜单对象数组、控件数组。第6页/共61页第七页,共61页。85.2 5.2 静态静态静态静态(jngti)(jngti)数组数组数组数组 静态数组是指固定大小的数组,类型静态数组是指固定大小的数组,类型(lixng)(lixng)、维、维数和大小将不得改变。数和大小将不得改变。5.2.1 5.2.1 静态静态(jngti)(jngti)数组及声明数组及声明语法语法语法语法:Dim Dim 数组名数组名(下标下标1,下标下
11、标2)As 类型类型下界下界 to 上界上界维数:几个下标为几维数组,最多维数:几个下标为几维数组,最多维数:几个下标为几维数组,最多维数:几个下标为几维数组,最多6060维维维维例:例:例:例:Dim mark(1 to 100)As IntegerDim mark(1 to 100)As Integer Dim c(0 to3,0 to 4)Dim c(0 to3,0 to 4)As IntegerAs Integer第7页/共61页第八页,共61页。9每一维大小每一维大小(dxio):上界下界上界下界+1数组大小数组大小数组大小数组大小(dxio):(dxio):每一维大小每一维大小每一
12、维大小每一维大小(dxio)(dxio)的乘积的乘积的乘积的乘积Dim lArray(0 To 3,0 To 4)As Long共有共有共有共有(n yu)45(n yu)45个元素个元素个元素个元素下标下标下标下标:下界下界下界下界 To To 上界,下界可以省略上界,下界可以省略上界,下界可以省略上界,下界可以省略,当缺省时,当缺省时,当缺省时,当缺省时,下标的下界由下标的下界由下标的下界由下标的下界由Option Base nOption Base n语句控制语句控制语句控制语句控制 ,给出的上下界给出的上下界给出的上下界给出的上下界必须为常数。必须为常数。(1)(1)如果在数组声明的时
13、候,没有给出下标下界,则下界由如果在数组声明的时候,没有给出下标下界,则下界由如果在数组声明的时候,没有给出下标下界,则下界由如果在数组声明的时候,没有给出下标下界,则下界由Option Base Option Base 语句控制语句控制语句控制语句控制,默认值为默认值为默认值为默认值为0 0。例如:例如:例如:例如:Dim b(2,4,3)Dim b(2,4,3)5.2.1 5.2.1 静态数组及声明静态数组及声明Option Base 1Option Base 1Dim a(2,0 to 4,3)Dim a(2,0 to 4,3)第8页/共61页第九页,共61页。10Dim lArray(
14、0 To 3,0 To 4)As Long 等价等价(dngji)于于:Dim lArray(3,4)As Long 5.2.1 5.2.1 静态静态(jngti)(jngti)数组及声明数组及声明(2)(2)考虑:下面对数组的声明考虑:下面对数组的声明考虑:下面对数组的声明考虑:下面对数组的声明(shngmng)(shngmng)是否正确?是否正确?是否正确?是否正确?n=Inputbox(“n=Inputbox(“输入输入输入输入n”n”)Dim x(n)As Single Dim x(n)As Single 错误的声明,下标是变量错误的声明,下标是变量第9页/共61页第十页,共61页。1
15、15.2.1 5.2.1 静态静态(jngti)(jngti)数组及声明数组及声明(3)(3)例如:考虑两个例如:考虑两个例如:考虑两个例如:考虑两个(lin)x(10)(lin)x(10)的区别?的区别?的区别?的区别?Dim x(10)As Integer Dim x(10)As Integer x(10)=100 x(10)=100 声明声明(shngmng)了了x数组有数组有11个元素个元素 对对x(10)这个数组元素赋值这个数组元素赋值在数组声明中的下标说明了数组的整体在数组声明中的下标说明了数组的整体,即每一维的大即每一维的大小小;而在程序其他地方出现的下标表示数组中的一个元而在程
16、序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。素。两者写法形式相同,但意义不同。声明数组:声明数组:声明数组:声明数组:声明了数组的名、维数、大小、类型声明了数组的名、维数、大小、类型,并且对数组进行并且对数组进行初始化初始化第10页/共61页第十一页,共61页。12补充补充 与数组操作有关的几个与数组操作有关的几个(j)函数函数1.Array函数函数2.(1)Array函数可方便地对数组整体赋值,但它只能给声明函数可方便地对数组整体赋值,但它只能给声明Variant的变量或仅由括号的变量或仅由括号(kuho)括起的动态数组赋值。括起的动态数组赋值。=Array()(
17、2)数组的下界由数组的下界由option base控制语句决定,上界由控制语句决定,上界由Array函数括号内的参数个数决定,也可通过函数函数括号内的参数个数决定,也可通过函数Ubound获得获得例如,要将例如,要将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)第11页/共61页第十二页,共61页。13 2.求数组的上界求数组的上界Ubound()函数函数(hnsh)、下界下界 Lbound()函数函数(hnsh)作用
18、:分别用来确定数组某一维的上界和下界作用:分别用来确定数组某一维的上界和下界(xi ji)值。值。使用形式如下:使用形式如下:UBound(,)LBound(,)补充补充 与数组操作有关的几个与数组操作有关的几个(j)函数函数Dim score(3,4)as integerUBound(score,2)其中:其中:必需的,遵循标准变量命名约定。:必需的,遵循标准变量命名约定。:可选的;一般是整型常量或变量。指定返回哪一维的上界。:可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表示第一维,表示第一维,2 表示第二维,如此等等。表示第二维,如此等等。如果省略默认是如果省略默认是1。4LB
19、ound(score,2)0第12页/共61页第十三页,共61页。145.2.2 数组的引用数组的引用(ynyng)使用数组就是(jish)对数组元素进行操作,对数组元素的操作类似于对简单变量的操作。引用引用(ynyng)(ynyng)数组元素需要注意的问题:数组元素需要注意的问题:引用数组元素的方法:在数组名后的括号中指明下标引用数组元素的方法:在数组名后的括号中指明下标例如例如a(5),b(3,4)a(5),b(3,4)引用数组元素时,数组名、数组类型必须与数组引用数组元素时,数组名、数组类型必须与数组声明时一致声明时一致 引用数组元素时,下标值应在数组声明时所指定引用数组元素时,下标值应
20、在数组声明时所指定的范围内的范围内 在同一过程中,数组与简单变量不能同名在同一过程中,数组与简单变量不能同名第13页/共61页第十四页,共61页。151.1.数组元素数组元素(yun s)(yun s)的输入的输入(赋初值)(赋初值)(1)赋值语句赋值语句(yj)Dim iA(1 To 10)As String iA(1)=“张三张三”:iA(2)=“李四李四”再如再如:for i=1 to 10 a(i)=int(Rnd*90)+10 循环循环(xnhun)加赋值加赋值 next i (2)在运行时通过)在运行时通过 inputbox函数输入函数输入for i=1 to 10 a(i)=in
21、putbox(“请输入请输入”)next i 第14页/共61页第十五页,共61页。16(3)用循环用循环(xnhun)For i =1 To 10 a(i)=0 Next i 1.1.数组元素数组元素(yun s)(yun s)的输入(赋的输入(赋初值)初值)(4)Array函数函数(hnsh)Dim ib()用用array函数函数(hnsh)给动态数组赋值时不能指定数组类型给动态数组赋值时不能指定数组类型 ib=Array(abc,def,67)For i=0 To UBound(ib)form1.Print ib(i);Next i第15页/共61页第十六页,共61页。171.1.数组元
22、素数组元素(yun s)(yun s)的输入(赋的输入(赋初值)初值)一维数组在输入时可用一重循环,一维数组在输入时可用一重循环,二维数组要用二重循环,多维数组用多重循环。二维数组要用二重循环,多维数组用多重循环。在在VB中,数据按行存储,所以一般中,数据按行存储,所以一般(ybn)将数组第一维的循环变量放在外重循环中将数组第一维的循环变量放在外重循环中例例5.1 求数组中的最小元素及下标求数组中的最小元素及下标要求:要求:创建一个包含创建一个包含10个元素的数组,从键盘输入个元素的数组,从键盘输入10个数,找出其中最小的数,并且个数,找出其中最小的数,并且(bngqi)输出最小数的下标。输出
23、最小数的下标。数据分析数据分析:除了声明包含除了声明包含 10个元素的数组外个元素的数组外,还应该声明几个变量还应该声明几个变量,分别是什么类型分别是什么类型?求最大值最小值算法分析求最大值最小值算法分析:?第16页/共61页第十七页,共61页。18Private Sub Form_Click()Dim a(1 To 10)As Integer Dim min As Integer,p As IntegerFor i=1 To 10 a(i)=Val(InputBox(请输入请输入(shr)一个数一个数,输入输入(shr)数数,0)Next imin=a(1):p=1For i=2 To 10
24、 If a(i)选择选择(xunz)法法外重循环变量外重循环变量i:比较的趟数比较的趟数,n个数需要个数需要(xyo)n-1趟比较趟比较,n从从1变化到变化到n-1内重循环内重循环j:每一趟比较的次数每一趟比较的次数,j从从i+1变化到变化到n第22页/共61页第二十三页,共61页。24输入输入n个数据给个数据给a(1)到到 a(n)For i=1 to n-1For j=i+1 to na(j)a(i)YN打印输出打印输出a(1)到到a(n)交换交换a(i)和和a(j)这个算法能这个算法能化简吗化简吗第23页/共61页第二十四页,共61页。25输入输入n个数据给个数据给a(1)到到 a(n)
25、For i=1 to n-1imin=iFor j=i+1 to na(j)选择选择(xunz)法法改进改进第24页/共61页第二十五页,共61页。26例例53 由计算机产生由计算机产生10个个0100之间的随机之间的随机(su j)整数,使用选择法排序,将这些数按递增的顺序排列。整数,使用选择法排序,将这些数按递增的顺序排列。(纠正课本错误纠正课本错误)Dim a(1 To 10)As IntegerFor i=1 To 10 a(i)=Int(Rnd*100)+1 Print a(i);Next iFor i=1 To imin=i For j=To 10 If a(j)冒泡排序冒泡排序(
26、1)比较第一个数与第二个数,若为逆序)比较第一个数与第二个数,若为逆序a(0)a(1),则交换;然后比较第二个数与第三个数;依次类推,直至第,则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第个数和第n个数比较为止个数比较为止第一趟冒泡排序,结果最大的数被安置在最后第一趟冒泡排序,结果最大的数被安置在最后(zuhu)一个元素位置上一个元素位置上(2)对前)对前n-1个数进行个数进行(jnxng)第二趟冒泡排序,结果使次大的数被安置第第二趟冒泡排序,结果使次大的数被安置第n-1个元素位置个元素位置(3)重复上述过程,共经过)重复上述过程,共经过n-1趟冒泡排序后,排序结束趟冒泡排
27、序后,排序结束第26页/共61页第二十七页,共61页。282冒泡排序冒泡排序从上述过程可以从上述过程可以(ky)(ky)看到:看到:N N个数要比较个数要比较N-1N-1趟,而在第趟,而在第i i趟比较中,要进趟比较中,要进行行N-iN-i次两两比较。次两两比较。第27页/共61页第二十八页,共61页。29冒泡法排序冒泡法排序(pi x)(升序)的(升序)的VB程序:程序:2冒泡排序冒泡排序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
28、)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第28页/共61页第二十九页,共61页。303.二维数组的应用(yngyng)Dim StuScore(1 to 10,1 to 5)定义定义(dngy)105的二维数组的二维数组可以使用可以使用(shyng)For(shyng)For循环嵌套处理多维数组循环嵌套处理多维数组.二维数组中的元素的存储顺序是二维数组中的元素的存储顺序是按行存储按行存储的,的,因此因此外循环对应行的变化,内循环对应列的变化外循环
29、对应行的变化,内循环对应列的变化比较合适比较合适。第29页/共61页第三十页,共61页。31例例5.4 设定一个设定一个5行行5列的矩阵,首先给这个矩阵赋值,其值为对应的行坐标和列坐标之和,然后列的矩阵,首先给这个矩阵赋值,其值为对应的行坐标和列坐标之和,然后(rnhu)在窗体上以五行五列的方式输出。在窗体上以五行五列的方式输出。数组定义数组定义(dngy):Dim a(1 To 5,1 To 5)As IntegerFor i=1 To 5 For j=1 To 5 a(i,j)=i+j Next jNext i赋值:赋值:输出输出(shch):For i=1 To 5 For j=1 To
30、 5 Print a(i,j);Next j Print 作用是什么?作用是什么?Next i3.二维数组的应用演示演示第30页/共61页第三十一页,共61页。323.二维数组的应用(yngyng)请大家考虑:请大家考虑:请大家考虑:请大家考虑:如果声明一个如果声明一个如果声明一个如果声明一个 5 5行行行行5 5列的矩阵,其中元素列的矩阵,其中元素列的矩阵,其中元素列的矩阵,其中元素(yun(yun s)s)由计算机随机生成的小于由计算机随机生成的小于由计算机随机生成的小于由计算机随机生成的小于100100的整数。求的整数。求的整数。求的整数。求(1 1)主对角线上元素)主对角线上元素)主对
31、角线上元素)主对角线上元素(yun s)(yun s)之和之和之和之和(2 2)主对角线上元素)主对角线上元素)主对角线上元素)主对角线上元素(yun s)(yun s)之积之积之积之积(3 3)方阵中最大元素)方阵中最大元素)方阵中最大元素)方阵中最大元素(yun s)(yun s)和最小元素和最小元素和最小元素和最小元素(yun s)(yun s)及其对应的下标及其对应的下标及其对应的下标及其对应的下标第31页/共61页第三十二页,共61页。335.3 5.3 动态动态动态动态(dngti)(dngti)数组数组数组数组请大家考虑:请大家考虑:如果首先要通过用户界面输入数组长度,然后如果首
32、先要通过用户界面输入数组长度,然后再用数组保存数据再用数组保存数据(shj)(shj),应该如何定义数组,应该如何定义数组呢?呢?例如:(动态例如:(动态例如:(动态例如:(动态(dngti)(dngti)数组示例)数组示例)数组示例)数组示例)动态数组:动态数组:动态数组:动态数组:指在声明数组时指在声明数组时指在声明数组时指在声明数组时未给出数组的大小未给出数组的大小未给出数组的大小未给出数组的大小(省略括省略括省略括省略括号中的下标号中的下标号中的下标号中的下标);当要使用它时,随时用;当要使用它时,随时用;当要使用它时,随时用;当要使用它时,随时用ReDimReDim语句重新指语句重新
33、指语句重新指语句重新指出数组大小;出数组大小;出数组大小;出数组大小;但不能改变数组的类型但不能改变数组的类型但不能改变数组的类型但不能改变数组的类型。第32页/共61页第三十三页,共61页。34创建动态创建动态(dngti)数组的过程数组的过程创建动态数组的步骤如下创建动态数组的步骤如下(rxi):Public、Dim或或Static语句声明一个空维数组。语句声明一个空维数组。格式:格式:Dim 数组名数组名()As 数据类型数据类型 可以省略可以省略 在过程中用在过程中用ReDim语句分配语句分配(fnpi)实际的元素个数实际的元素个数(维数和每维下标范围)。(维数和每维下标范围)。形式形
34、式:ReDim 数组名数组名(下标下标1,下标,下标2)As 类型类型 Sub Form_Load()Dim sArray()As Single ReDim sArray(4,8)End Sub第33页/共61页第三十四页,共61页。35说明:说明:(1)Dim、Private、Public变量声明语句是说明变量声明语句是说明性语句,可出现在过性语句,可出现在过 程内或通用声明段;程内或通用声明段;ReDim语句是执行语句,只能语句是执行语句,只能(zh nn)出现在过程内。出现在过程内。(2)ReDim语句可以改变数组的维数、上界和下界,但是,不能改变数组的类型。同时数组的维数只能改变一次,
35、由第一次出现的语句可以改变数组的维数、上界和下界,但是,不能改变数组的类型。同时数组的维数只能改变一次,由第一次出现的Redim语句定义语句定义(dngy)的维数来决定的维数来决定。(3)在过程中可多次使用在过程中可多次使用(shyng)ReDim来改变数组的大小,每次使用来改变数组的大小,每次使用(shyng)ReDim语句都会使原来数组中的值丢失,可以在语句都会使原来数组中的值丢失,可以在ReDim语句后加语句后加Preserve 参数用来保留数组中的数据,但使用参数用来保留数组中的数据,但使用(shyng)Preserve 只能改变最后一维的大小,前面几维大小不能改变。只能改变最后一维的
36、大小,前面几维大小不能改变。第34页/共61页第三十五页,共61页。36 例如(lr):Dim aa()As Integer Redim aa(2,3,4)Redim Preserve aa(2,3,7)Dim MyArray()As Interger Redim MyArray(10)Redim Preserve MyArray(15)(4)ReDim中的下标可以中的下标可以(ky)是常量,也可以是常量,也可以(ky)是有了确定值的变量。是有了确定值的变量。第35页/共61页第三十六页,共61页。37Private Sub Command1_Click()Dim a()As Integer
37、Dim sum As Integer Dim n As Integer Dim p As String n=Val(Text1.Text)ReDim a(1 To n)For i=1 To n a(i)=i Next i p=For i=1 To n-1 p=p&i&+sum=sum+a(i)Next p=p&i sum=sum+a(n)Label2.Caption=p&=&sumEnd Sub例例:用动态用动态(dngti)(dngti)数组求和数组求和第36页/共61页第三十七页,共61页。38附加内容附加内容(nirng):For EachNext语句语句:它是一个循环语句,用来执行指定
38、次数的循环,它是一个循环语句,用来执行指定次数的循环,但但For EachNext语句专门用于数组或对象集语句专门用于数组或对象集合中的每个元素。合中的每个元素。1.语法格式语法格式For Each In Exit For Next 2.2.执行过程执行过程 可以对数组中的元素可以对数组中的元素进行查询、显示进行查询、显示(xinsh)(xinsh)和读取。和读取。执行的循环次数由数组元执行的循环次数由数组元素的个数决定。素的个数决定。说明:说明:1成员是一个成员是一个Variant 型变量型变量2数组是一个数组是一个数组名数组名,没有上下界,也可以没,没有上下界,也可以没 有括号有括号第37
39、页/共61页第三十八页,共61页。39例:例:7-12用用For EachNext语句语句(yj),求,求1+2+3+100的值的值Private Sub Command1_Click()Dim x(1 to 100)As Integer Dim a 定义定义(dngy)变量变量a,默认的,默认的 数据类型为数据类型为Variant 型型 Dim s As Integer 和变量和变量 s=0 求和初始化求和初始化 For i=1 To 100 给数组赋初值给数组赋初值 x(i)=i Next iEnd Sub For Each a In x s=s+a Next a Label1.Capti
40、on=sEnd Sub 代表着数组x中确定(qudng)的元素值执行次数?执行次数?第38页/共61页第三十九页,共61页。405.4 5.4 控件数组控件数组 一组相同类型的控件组成。一组相同类型的控件组成。它们共用一个它们共用一个(y)控件名,具有相同的属性,建立时系统给每个元素赋一个控件名,具有相同的属性,建立时系统给每个元素赋一个(y)唯一的索引号唯一的索引号(Index)。控件数组共享同样的事件控件数组共享同样的事件(shjin)过程,通过返回的下标值区分控件数组中的各个元素过程,通过返回的下标值区分控件数组中的各个元素。例:例:Private Sub cmdName _Click(
41、Index As Integer)If Index=3 then 处理处理(chl)第四个命令按钮的操作第四个命令按钮的操作 End If End Sub第39页/共61页第四十页,共61页。412 选择以下方法之一创建控件数组:为控件起相同的名字 复制(fzh)现有的控件 指定控件的索引值演示5.4.2 控件数组的建立(jinl)1.设计阶段在窗体中创建控件数组的步骤为:设计阶段在窗体中创建控件数组的步骤为:1 在窗体上添加一个新的控件(如命令按钮在窗体上添加一个新的控件(如命令按钮Command1),以决定控件的类型),以决定控件的类型(lixng)和控件数组中的第和控件数组中的第1个控件
42、。个控件。设置控件的设置控件的Name属性值,为控件命名。属性值,为控件命名。第40页/共61页第四十一页,共61页。422.运行时添加控件数组成员运行时添加控件数组成员(chngyun)控件数组必须是设计时创建的,在程序运行时,可以通过控件数组必须是设计时创建的,在程序运行时,可以通过Load方法向控件数组中添加新的控件成员方法向控件数组中添加新的控件成员(chngyun),并设置其属性值,也可以通过,并设置其属性值,也可以通过Unload方法删除控件数组中的控件。方法删除控件数组中的控件。Load方法方法(fngf)和和Unload方法方法(fngf)的格式是:的格式是:Load 控件数组
43、名(控件数组名(Index)Unload 控件数组名(控件数组名(Index)Index为控件为控件数组元素数组元素(yun s)的的下标下标第41页/共61页第四十二页,共61页。43例:建立例:建立(jinl)含有四个命令按钮的控件数组,当单击含有四个命令按钮的控件数组,当单击某个命令按钮,分别显示不同的图形或结束操作。某个命令按钮,分别显示不同的图形或结束操作。第42页/共61页第四十三页,共61页。44 Private Sub Command1_Click(Index As Integer)Select Case Index Case 0 画直线(zhxin)Case 1 画矩形 Ca
44、se 2 画圆 Case Else End End Select End Sub演示演示(ynsh)默认控件名默认控件名默认控件名默认控件名下标下标下标下标(Index)(Index)标题标题标题标题(Caption)(Caption)Command1Command1 0 0直线直线直线直线Command1Command1 1 1矩形矩形矩形矩形Command1Command1 2 2圆圆圆圆Command1Command1 3 3结束结束结束结束Picture1Picture1 空白空白空白空白无定义无定义无定义无定义第43页/共61页第四十四页,共61页。45【例【例】设计】设计(shj)
45、一个简易计算器,能进行整数的加、减、一个简易计算器,能进行整数的加、减、乘、除运算。其运行界面如图所示。乘、除运算。其运行界面如图所示。界面设计:界面设计:一个标签一个标签(bioqin)用于计算器输出用于计算器输出,名称改名称改为为dataout;数字数字(shz)按钮控件数组按钮控件数组Number 09;操作符控件数组操作符控件数组Operator +-*/;一个一个“=”按钮用按钮用于计算结果于计算结果,名称改为名称改为result;一个一个“Cls”按钮用于清屏按钮用于清屏演示演示第44页/共61页第四十五页,共61页。46程序如下程序如下程序如下程序如下(rxi)(rxi):窗体级
46、变量声明窗体级变量声明窗体级变量声明窗体级变量声明 Dim op As Byte Dim op As Byte 用来记录前面输入的操作符用来记录前面输入的操作符用来记录前面输入的操作符用来记录前面输入的操作符 Dim ops1&Dim ops1&,ops2&ops2&两个操作数两个操作数两个操作数两个操作数,长整型长整型长整型长整型 Dim res As Boolean Dim res As Boolean 用来表示是否已算出结果用来表示是否已算出结果用来表示是否已算出结果用来表示是否已算出结果Private Sub clear_ClickPrivate Sub clear_Click()()
47、()()clscls按钮按钮按钮按钮 dataout.Caption=dataout.Caption=End Sub End SubPrivate Sub Form_LoadPrivate Sub Form_Load()()()()res=Falseres=FalseEnd SubEnd Sub第45页/共61页第四十六页,共61页。47 按下数字键按下数字键按下数字键按下数字键0 09 9的事件过程的事件过程的事件过程的事件过程(guchng)(guchng)Private Sub number_Click Private Sub number_Click(i1 As i1 As Integ
48、erInteger)If Not res Then If Not res Then 连续按下好几个数字键连续按下好几个数字键连续按下好几个数字键连续按下好几个数字键,例如例如例如例如8989 dataout.Caption=dataout.Caption&i1 dataout.Caption=dataout.Caption&i1 Else Else dataout.Caption=i1 dataout.Caption=i1 res=False res=False 结果还未算出结果还未算出结果还未算出结果还未算出 End If End If End Sub End Sub第46页/共61页第四十
49、七页,共61页。48 按下操作键按下操作键按下操作键按下操作键+、/的事件的事件的事件的事件(shjin)(shjin)过程过程过程过程 Private Sub operator_Click Private Sub operator_Click(i2 As Integeri2 As Integer)ops1=dataout.Caption ops1=dataout.Caption 记下第一个操作数记下第一个操作数记下第一个操作数记下第一个操作数 op=i2 op=i2 记下对应的操作符记下对应的操作符记下对应的操作符记下对应的操作符 dataout.Caption=dataout.Captio
50、n=End Sub End Sub 第47页/共61页第四十八页,共61页。49 按下按下=键的事件键的事件(shjin)(shjin)过程过程 Private Sub result_Click Private Sub result_Click()()ops2=dataout.Caption ops2=dataout.Caption 记下第二个操作数记下第二个操作数 Select Case op Select Case op Case 0 Case 0 dataout.Caption=ops1+ops2 dataout.Caption=ops1+ops2 Case 1 Case 1 datao