1、2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程16.1 6.1 一维数组l一维数组的定义方式:一维数组的定义方式:Dim Dim 数组名数组名(下界下界 ToTo上界上界)As)As 类型类型l例如:例如:Dim a(1 To 5)As IntegerDim a(1 To 5)As Integerl 数组的元素在内存中按顺序存放,数组数组的元素在内存中按顺序存放,数组所占据的字节数是各元素所占字节数之和。所占据的字节数是各元素所占字节数之和。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程
2、2说明:说明:(1 1)数组名应该是一个合法的标识符,数组中所有)数组名应该是一个合法的标识符,数组中所有元素的数据类型都相同。元素的数据类型都相同。(2 2)下界和上界均为整型常量表达式,它们规定了)下界和上界均为整型常量表达式,它们规定了元素下标的取值范围。下界最小可以是元素下标的取值范围。下界最小可以是-32768-32768,上界最,上界最大可以是大可以是3276732767。应该满足下界。应该满足下界上界,一维数组的长上界,一维数组的长度即元素的个数为上界度即元素的个数为上界-下界下界+1+1。(3 3)对于没有赋初值的数组元素,如果是数值型,)对于没有赋初值的数组元素,如果是数值型
3、,系统都自动赋以系统都自动赋以0 0;如果是字符型,系统都自动赋以空;如果是字符型,系统都自动赋以空串;如果是逻辑型,系统都自动赋以串;如果是逻辑型,系统都自动赋以FalseFalse。(4 4)如果定义数组时省略了下界,则下界默认是)如果定义数组时省略了下界,则下界默认是0 0。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程3数组元素的引用数组元素的引用 l元素引用的形式是:元素引用的形式是:数组名数组名(下标下标)l例如:例如:a(4)=a(1)*a(3)+a(2)l在引用数组的元素时,应注意下标值不在引用数组的元素时,应注意下标值不要
4、超过数组的范围。要超过数组的范围。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程4例例6.1 6.1 计算全班学生的计算全班学生的VBVB平均成绩平均成绩 Const N As Integer=30 Private Sub Command1_Click()Dim a(1 To N)As Integer,i As Integer,sum As Integer,aver!For i=1 To N 输入学生成绩输入学生成绩 a(i)=Val(InputBox(请输入第请输入第&i&位学生的成绩位学生的成绩)Next i sum=0 For i=1
5、 To N 累加学生成绩累加学生成绩 sum=sum+a(i)Next i aver=sum/N 计算平均成绩计算平均成绩 Picture1.Print 平均成绩是平均成绩是;aver End Sub2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程5 Const N As Integer=30 Private Sub Command2_Click()Dim a(1 To N)As String,i%,j%,flag As Boolean,name$For i=1 To N 输入学生姓名输入学生姓名 a(i)=InputBox(请输入第请输入第
6、&i&位学生的姓名位学生的姓名)Next i Do name=InputBox(请输入要查询的学生姓名请输入要查询的学生姓名)flag=False For i=1 To N If a(i)=name Then flag=True 找到,改变标志找到,改变标志 Exit For End If Next i If flag=True Then Picture1.Print 找到姓名为找到姓名为;name;的学生的学生 Else Picture1.Print 没有找到姓名为没有找到姓名为;name;的学生的学生 End If j=MsgBox(还要继续查询吗?还要继续查询吗?,vbYesNo+vbq
7、uestin)Loop While j=6 如果按下如果按下“是是”按钮,则继续循环按钮,则继续循环 End Sub 例例6.2 6.2 查询学生查询学生2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程6Const N As Integer=30Private Sub Command3_Click()Dim a(1 To N)As Integer,i As Integer,max As Integer,min As IntegerFor i=1 To N 输入学生成绩输入学生成绩 a(i)=Val(InputBox(请输入第请输入第&i&位学
8、生的成绩位学生的成绩)Next imax=a(1)假定第一位学生的成绩是最高分假定第一位学生的成绩是最高分min=a(1)假定第一位学生的成绩是最低分假定第一位学生的成绩是最低分For i=2 To N If max a(i)Then min=a(i)确保确保min是当前最低分是当前最低分 End IfNext iPicture1.Print 最高分是最高分是;maxPicture1.Print 最低分是最低分是;minEnd Sub 例例6.3 6.3 统计全班统计全班最高分和最低分最高分和最低分返回返回2023-12-13Visual BasicVisual Basic程序设计简明教程程序
9、设计简明教程76.2 6.2 二维数组l二维数组的定义方式:二维数组的定义方式:Dim 数组名数组名(下界下界 To上界上界,下界下界 To上界上界)As 类型类型l例如:例如:Dim a(1 To 2,1 To 2)As Integera(1,1)a(1,2)a(2,1)a(2,2)2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程8说明:说明:(1)通常把二维数组的第一个下标形象地称为行下)通常把二维数组的第一个下标形象地称为行下标,第二个下标称为列下标。标,第二个下标称为列下标。(2)二维数组的元素个数为行的长度)二维数组的元素个数为行的
10、长度列的长度,列的长度,行或者列的长度为各自的上界行或者列的长度为各自的上界-下界下界+1。(3)类似地还可以定义多维数组。例如:)类似地还可以定义多维数组。例如:Dim a(1 To 2,1 To 2,1 To 2)As Integer 共有共有8个个元素的三维数组元素的三维数组2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程9例例6.46.4 求两个求两个3 33 3矩阵的和。矩阵的和。Private Sub Command1_Click()Const N As Integer=3 Dim a(1 To N,1 To N)As Integ
11、er,b(1 To N,1 To N)As Integer Dim c(1 To N,1 To N)As Integer,i As Integer,j As Integer For i=1 To N For j=1 To N a(i,j)=Val(InputBox(输入输入a(&i&,&j&)输入数据存入数组输入数据存入数组a Next j Next i MsgBox(矩阵矩阵A的数据输入完毕!的数据输入完毕!)For i=1 To N For j=1 To N b(i,j)=Val(InputBox(输入输入b(&i&,&j&)输入数据存入数组输入数据存入数组b Next j Next i
12、MsgBox(矩阵矩阵B的数据输入完毕!的数据输入完毕!)2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程10 Picture1.Print 开始输出矩阵开始输出矩阵C的数据的数据 For i=1 To N For j=1 To N c(i,j)=a(i,j)+b(i,j)矩阵求和矩阵求和 Next j Next i For i=1 To N For j=1 To N Picture1.Print Tab(j*4);c(i,j);输出数组输出数组c Next j Picture1.Print 输出一行数据,另换一行输出一行数据,另换一行 Ne
13、xt i End Sub2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程11输入输入输出输出返回返回2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程126.3 6.3 动态数组l动态数组在程序运行过程中才被分配存动态数组在程序运行过程中才被分配存储空间,它的定义方式是:储空间,它的定义方式是:Dim 数组名数组名()As 类型类型l例如:例如:Dim a()As Integer 2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程13数组名赋值
14、数组名赋值 Dim a(1 To 3)As Integer,b()As Integer,i%For i=1 To 3 对静态数组对静态数组a a的所有元素赋值的所有元素赋值 a(i)=i Next i b=a 数组名赋值数组名赋值 For Each x In b 输出动态数组输出动态数组b b中所有元素的值中所有元素的值 Print x Next x2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程14l两个函数的格式是:两个函数的格式是:LBound(a,n)UBound(a,n)l说明:说明:(1)参数)参数a是数组名。参数是数组名。参数n
15、表示数组表示数组a的第的第n维,如果省略,则默认是维,如果省略,则默认是1。(2)LBound函数返回数组函数返回数组a第第n维的下界,维的下界,UBound函数返回数组函数返回数组a第第n维的上界。维的上界。LBoundLBound和和UBoundUBound函数函数 2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程15Array函数 Dim b(),i%b=Array(1,2,3)For i=0 To 2 Print b(i)Next i 2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程
16、16ReDimReDim语句语句 l使用使用ReDim语句,确定动态数组的维语句,确定动态数组的维数以及元素下标的下界和上界。其一数以及元素下标的下界和上界。其一般形式为:般形式为:ReDim Preserve数组名数组名(下界下界 To上上界界,下界下界 To 上界上界,)As 类型类型2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程17说明:说明:(1)可以多次使用)可以多次使用ReDim语句对某个动态语句对某个动态数组进行设置。数组进行设置。(2)数组的维数以及元素下标的下界和上)数组的维数以及元素下标的下界和上界都能够改变,甚至下界和
17、上界可以是有了确界都能够改变,甚至下界和上界可以是有了确定值的变量,但是数组的类型不能改变。定值的变量,但是数组的类型不能改变。(3)每次执行)每次执行ReDim语句之后,数组中所语句之后,数组中所有元素的值将会丢失。如果想保留数组元素的有元素的值将会丢失。如果想保留数组元素的值,则可以使用关键字值,则可以使用关键字Preserve。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程18例例6.66.6 计算计算FibonacciFibonacci数列的前数列的前n n项项 Private Sub Command1_Click()Dim a()
18、As Long,n As Integer,i As Integer,j%n=Val(Text1.Text)ReDim a(1 To n)设置动态数组的长度设置动态数组的长度 For i=1 To n If i=1 Or i=2 Then a(i)=1 第一项和第二项都是第一项和第二项都是1 Else a(i)=a(i-1)+a(i-2)每一项是前两项之和每一项是前两项之和 End If Next i j=0 For i=1 To n Picture1.Print Tab(j*7);a(i);j=j+1 If i Mod 5=0 Then Picture1.Print j=0 End If Ne
19、xt i End Sub返回返回2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程196.4 6.4 控件数组控件数组的创建方法:控件数组的创建方法:(1)复制现有的控件,然后粘贴在窗体中。)复制现有的控件,然后粘贴在窗体中。(2)为现有的同类控件取同一个对象名,一般)为现有的同类控件取同一个对象名,一般是与第一个控件的名字一致。这时系统会提示是是与第一个控件的名字一致。这时系统会提示是否创建控件数组,选择否创建控件数组,选择“是是”即可。即可。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程
20、20例例6.76.7 用控件数组改写用控件数组改写例例4.64.6 Private Sub Command1_Click()Dim s As String,i As Integer Dim t1(3)As String,t2(4)As String t1(0)=计算机计算机:t1(1)=汽车汽车 t1(2)=机械机械:t1(3)=管理管理 t2(0)=足球足球:t2(1)=围棋围棋 t2(2)=游泳游泳:t2(3)=文学文学 t2(4)=上网上网 s=s+姓名:姓名:+Text1.Text+vbCr s=s+年龄:年龄:+Text2.Text+vbCr For i=0 To 3 If Opti
21、on1(i).Value=True Then s=s+t1(i)+系系+vbCr Exit For End If Next I s=s+爱好:爱好:For i=0 To 4 If Check1(i).Value=1 Then s=s+t2(i)End If Next i MsgBox(s)End Sub 返回返回2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程216.5 6.5 自定义类型l自定义的类型又称为记录类型,它由一些基本自定义的类型又称为记录类型,它由一些基本类型的成员所组成。类型的成员所组成。l定义记录类型的关键字是定义记录类型的
22、关键字是Type,其一般形式为:,其一般形式为:Type 记录类型名记录类型名 成员表列成员表列 End Type 2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程22说明:说明:(1)对成员表列中的所有成员都应进行类型)对成员表列中的所有成员都应进行类型声明。成员声明的形式为:声明。成员声明的形式为:成员名成员名 As 类型类型(2)记录类型只是刻画了一个数据结构的模)记录类型只是刻画了一个数据结构的模型,并没有定义实例,也不要求分配实际的内存型,并没有定义实例,也不要求分配实际的内存空间。在程序中使用记录类型时,必须定义记录空间。在程序中
23、使用记录类型时,必须定义记录变量。变量。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程23Student类型 Type Student sno As Long 学号学号 name As String 姓名姓名 sex As String 性别性别 score As Integer 成绩成绩 End Type lDim s1 As Student,s2 As Studentl引用记录变量成员的形式为:引用记录变量成员的形式为:记录变量名记录变量名.成员名成员名l例如:例如:s1.sno=2051226记录变量记录变量2023-12-13Vis
24、ual BasicVisual Basic程序设计简明教程程序设计简明教程24记录数组 lDim s(1 To 10)As Studentl访问记录数组元素的成员:访问记录数组元素的成员:记录数组名记录数组名(下标下标).成员名成员名l例如:例如:s(2).sno=2051227 Text1.Text=s(6).name 返回返回2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程256.6 6.6 字符串的处理格式转换格式转换 Val函数函数 Str函数函数 Asc函数函数 Chr函数函数 UCase函数函数 LCase函数函数2023-12-
25、13Visual BasicVisual Basic程序设计简明教程程序设计简明教程266.6 6.6 字符串的处理统计长度统计长度l函数函数Len用于统计字符串的长度即所用于统计字符串的长度即所包含字符的个数,其格式是:包含字符的个数,其格式是:Len(s)l例如例如Len(VB6.0环境环境)得到的值是得到的值是7。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程276.6 6.6 字符串的处理删除多余的空格删除多余的空格lLTrim(s)lRTrim(s)lTrim(s)l函数函数LTrim删除字符串中前面的空格,删除字符串中前面的空格
26、,函数函数RTrim删除字符串中后面的空删除字符串中后面的空格,函数格,函数Trim则删除字符串中前后则删除字符串中前后两边的空格。两边的空格。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程286.6 6.6 字符串的处理生成字符串生成字符串 String函数函数 String(m,s|n)Space函数函数 Space(n)(1)InStr函数函数 InStr(n,s1,s2)(2)Replace函数函数 Replace(s1,s2,s3,m,n,)6.6 6.6 字符串的处理查找和替换查找和替换2023-12-13Visual Basi
27、cVisual Basic程序设计简明教程程序设计简明教程296.6 6.6 字符串的处理截取子串截取子串 Left函数函数 Left(s,n)Right函数函数 Right(s,n)Mid函数函数 Mid(s,m,n)Split函数函数 Split(s,d,n,)2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程30 Private Sub Command1_Click()Dim a()As String,i%,j%,flag As Boolean,name$a=Split(Text1.Text)输入学生姓名输入学生姓名 Do name=In
28、putBox(请输入要查询的学生姓名请输入要查询的学生姓名)flag=False For i=LBound(a)To UBound(a)If a(i)=name Then flag=True 找到,改变标志找到,改变标志 Exit For End If Next i If fl ag=True Then Picture1.Print 找到姓名为找到姓名为;name;的学生的学生 Else Picture1.Print 没有找到姓名为没有找到姓名为;name;的学生的学生 End If j=MsgBox(还要继续查询吗?还要继续查询吗?,vbYesNo+vbquestin)Loop While
29、j=6 End Sub例例6.96.9 改写改写例例6.26.2 2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程31返回返回2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程326.7 6.7 列表框l列表框(列表框(ListBox)控件能够显示一个项目列)控件能够显示一个项目列表,用户可以从中选择一个或者多个项目。表,用户可以从中选择一个或者多个项目。l如果项目列表中的项目过多而无法一次全部显如果项目列表中的项目过多而无法一次全部显示,则列表框将自动出现滚动条。示,则列表框将自动出现滚动条
30、。l在工具箱中图示为:在工具箱中图示为:2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程33列表框的常用属性列表框的常用属性 属性属性作用作用Name设置列表框的对象名设置列表框的对象名Text确定用户当前所选的项目,该属性不能在属性窗口中设置,只确定用户当前所选的项目,该属性不能在属性窗口中设置,只能在程序中设置或引用能在程序中设置或引用List设置列表框所显示的项目列表设置列表框所显示的项目列表ListCount确定列表框中项目的总数,该属性只能在程序中设置或引用确定列表框中项目的总数,该属性只能在程序中设置或引用ListIndex确定当
31、前选中的项目在项目列表中的索引值,该属性只能在程确定当前选中的项目在项目列表中的索引值,该属性只能在程序中设置或引用序中设置或引用Selected确定项目列表中某个项目是否被选中,该属性只能在程序中设确定项目列表中某个项目是否被选中,该属性只能在程序中设置或引用置或引用MultiSelect确定列表框是否允许多选确定列表框是否允许多选Style设置列表框的外观,默认值是设置列表框的外观,默认值是0,表示标准方式;如果是,表示标准方式;如果是1,则,则项目的左边有复选框项目的左边有复选框2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程34说明:
32、说明:(1)程序第一个列表框控件的默认对象名是)程序第一个列表框控件的默认对象名是List1,依次类推。,依次类推。(2)List是列表框控件最重要的属性之一,其属性值是一个是列表框控件最重要的属性之一,其属性值是一个 字符串数组,每一个元素存放项目列表其中的一个项目。字符串数组,每一个元素存放项目列表其中的一个项目。(3)在程序中)在程序中ListIndex和和ListCount往往与往往与List属性配合使属性配合使用。如果用户未选择任何项目,用。如果用户未选择任何项目,ListIndex的值是的值是-1;如果用户;如果用户选中项目列表中的第一项,选中项目列表中的第一项,ListIndex
33、的值是的值是0;如果用户选中;如果用户选中项目列表中的最后一项,则项目列表中的最后一项,则ListIndex的值是的值是ListCount-1。(4)Selected的属性值是一个逻辑型数组,其每一个元素与的属性值是一个逻辑型数组,其每一个元素与项目列表中的每一个项目一一对应。如果某个项目被用户选中,项目列表中的每一个项目一一对应。如果某个项目被用户选中,Selected数组相应元素的值是数组相应元素的值是True;如果未被选中,则相应元;如果未被选中,则相应元素的值是素的值是False。2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程35列
34、表框的常用方法列表框的常用方法 方法方法功能功能AddItem向列表框中添加一个项目向列表框中添加一个项目RemoveItem从列表框中删除一个项目从列表框中删除一个项目Clear清除列表框中所有项目清除列表框中所有项目 2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程36说明:说明:(1)AddItem方法的调用形式为:方法的调用形式为:对象对象.AddItem Item,Index(2)RemoveItem方法的调用形式为:方法的调用形式为:对象对象.RemoveItem Index 例如删除列表框例如删除列表框List1中的第一个项中的
35、第一个项 目,可以写为:目,可以写为:List1.RemoveItem 0返回返回2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程376.8 6.8 组合框l组合框(组合框(ComboBox)控件组合了文本框和)控件组合了文本框和列表框的特性,用户既可以在它的文本框部分列表框的特性,用户既可以在它的文本框部分输入文本以选择项目,也可以在它的列表框部输入文本以选择项目,也可以在它的列表框部分选择项目。分选择项目。l当用户在列表框部分选定某个项目之后,该项当用户在列表框部分选定某个项目之后,该项目会自动出现在文本框部分。目会自动出现在文本框部分。
36、l在工具箱中表示为:在工具箱中表示为:2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程38 组合框的常用属性组合框的常用属性 属性属性作用作用Name设置组合框的对象名设置组合框的对象名Text确定用户当前选择的项目或者在文本框部分输入的项目确定用户当前选择的项目或者在文本框部分输入的项目List设置组合框所显示的项目列表设置组合框所显示的项目列表ListCount确定组合框中项目的总数确定组合框中项目的总数ListIndex确定当前选中的项目在项目列表中的索引值确定当前选中的项目在项目列表中的索引值Selected确定项目列表中某个项目是否
37、被选中确定项目列表中某个项目是否被选中Style设置组合框的类型设置组合框的类型2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程39说明:说明:(1)程序第一个组合框控件的默认对象名是)程序第一个组合框控件的默认对象名是Combo1,依次类推。依次类推。(2)Style的属性值有的属性值有3个,默认值是个,默认值是0。常量常量值值含义含义Dropdown Combo0下拉式组合框下拉式组合框Simple Combo1简单组合框简单组合框Dropdown List2下拉式列表框下拉式列表框2023-12-13Visual BasicVisual Basic程序设计简明教程程序设计简明教程40简单组合简单组合框框下拉式下拉式组合框组合框下拉式列表框下拉式列表框返回返回