资源预览内容
第1页 / 共86页
第2页 / 共86页
第3页 / 共86页
第4页 / 共86页
第5页 / 共86页
第6页 / 共86页
第7页 / 共86页
第8页 / 共86页
第9页 / 共86页
第10页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 Visual Basic 6.0编程基础 (第二部分) 基本流程结构 2.7数组 2.8过程 2.9Visual Basic 6.0程序组成 2.10综合案例 2.11实训 2.122.7 基本流程结构控制结构可控制程序执行的流程。如 果未使用控制流语句,程序便从左至右、 自顶向下地贯穿这些语句。有些简单程序 可以只用单向流程来编写,有些流程可以 依靠运算符的优先级来控制,但任何编程 语言的效力和用途皆由其通过结构和循环 改变语句顺序的能力而得。2.7.1 顺序结构 顺序结构中程序按照语句编写的先后 顺序一条一条地执行。使用顺序结构只需 要将合法语句按照合理的执行顺序排列即 可一一执行。【案例2-6】 二次函数计算器按钮单击事件中的代码为 Private Sub Command1_Click() Dim x, y As DoubleConst a = 3Const b = -5x = Val(Text1.Text)y = a * x 2 + b * x + 1y = y / Abs(a + b)Text2.Text = Str$(y) End Sub2.7.2 条件结构Visual Basic 6.0支持的条件结构有: IfThen; IfThenElse; Iif; Select Case;(1)用IfThen结构有条件地执行一个或多个语句,单 行语法和多行块语法都可以使用。 If 条件 Then 语句 If 条件 Then 语句块 End If “条件”通常是比较式,但它可以是任何计算数值的表达 式。Visual Basic 6.0 将这个值解释为True或False。一个 为零的数值为False,而任何非零数值都被看做True。若“ 条件”为True,则Visual Basic 6.0执行“Then”关键字后面 的所有“语句块”。(2)用 IfThenElse块定义几个语句块,执行其中一个 语句: If 条件1 Then 语句块1 Else If 条件2 Then语句块2 . Else 语句块n End If Visual Basic 6.0首先测试“条件1”。如果它为False,Visual Basic 6.0就测试“条件2”,依此类推,直到找到一个为True 的条件。当它找到一个为True的条件时,Visual Basic 6.0 就会执行相应的语句块,然后执行End If后面的代码。作 为一个选择,可以包含Else语句块,如果前n-1个条件都是 False,则Visual Basic 6.0执行Else语句块。(3)IIf函数用于实现一些简单的条件判断 分支结构,其格式如下: IIf(条件,条件为真时的值,条件为假时的 值) 其作用是对条件进行测试,若条件成立( 为真值),则取第一个值(即“条件为真时 的值”),否则取第二个值(即“条件为假 时的值”)。(4)Visual Basic 6.0提供Select Case结构替代 IfThenElse,从而可在多个语句块中有选择地执行其中 一个。Select Case语句的能力与IfThenElse语句类似, 但对多重选择的情况,Select Case语句使代码更加易读。 Select Case在结构的开始便处理一个测试表达式并只计算一 次。然后,Visual Basic 6.0将表达式的值与结构中每个Case 的值进行比较。如果相等,就执行与该Case相关联的语句 块。 Select Case test 测试表达式 Case 表达式列表1语句块1Case 表达式列表2语句块2.Case Else语句块n End Select【案例2-7】 求数据的绝对值按钮单击事件中的代码为 Private Sub Command1_Click() Dim a As Integer定义变量a = Val(Text1.Text)将文本框中输入的值赋给变量aIf a = 20 Then Exit For 当人口数大于等于20亿时跳出循环Next i Print i; “年后中国人口达到20亿“ End Sub2.8 数组在Visual Basic 6.0中,把一组具有同 一名字、不同下标的下标变量称为数组, 其一般形式如下: S(i)其中S称为数组名,i是下标。一个数组 可以含有若干个下标变量,下标用来指出 某个数组元素在数组中的位置,S(8)代表S 数组中的第八个元素。 2.8.1 数组的声明声明固定大小的数组有3种方法,用哪 一种方法取决于数组应有的有效范围。 建立全局数组,在模块的声明段用Public 语句声明数组。 建立模块或窗体数组,在模块的声明段用 Private语句声明数组。 建立局部数组,在过程中用Private语句声 明数组。声明数组时,在数组名之后跟一个用括弧括起来的,其 上界、下界不得超过Long数据类型的范围(-2 147 483 6482 147 483 647)。 例如,下列数组声明可出现在模块的声明段: Dim A(4) As Integer 同时定义了A(0),A(1),A(2),A(3),A(4)5个元素。 Dim S (20) As Double 定义了S(0)到S(20)21个元素。 为建立公用数组,直接用Public取代Dim: Public A(4) As Integer Public S (20) As Double第一个声明建立了一个有5个元素的数组,其索引号为0 4;第二个声明建立了一个有21个元素的数组,其索引号范 围是020。为了规定下界,可以使用关键字“To”显式 提供下界(为Long数据类型): Dim A (1 To 5) As Integer Dim S (100 To 120) As String 在前述声明中,“A”的索引值范围为15, 而“S”的索引值范围为100120。有时候,可能需要知道数组的上界值 和下界值,这可以通过Lbound和Ubound 函数来测试,其格式如下: Lbound(数组名) 返回数组索引值的上界值 Ubound(数组名) 返回数组索引值的下界值2.8.2 动态数组数组长度到底应该为多大才算合适, 有些情况下很难确定,这就需要数组能够 在运行时具有改变大小的能力。通过使用 动态数组,可以在程序中任意改变数组的 长度。在Visual Basic 6.0中,动态数组是 最灵活、最方便的,有助于有效管理内存 。 (1)如果希望数组为公用数组,则用 Public语句声明数组;如果希望数组为模 块级,则在模块级用Dim语句声明数组; 如果希望数组为局部数组,则在过程中用 Static或Dim语句声明数组。给数组赋一个 空数组,这样就将数组声明为动态数组。 例如: Dim A ()(2)用ReDim语句分配实际的元素个数。 ReDim A (X + 1) ReDim语句只能出现在过程中。与Dim语句、 Static语句不同,ReDim语句是一个可执行语句 ,由于这一语句,应用程序在运行时执行一个操 作。ReDim语句支持这样的语法,它与固定数组 中使用的语法相同。每个ReDim语句都能改变元 素数目以及上下界。2.8.3 数组的基本操作建立一个数组之后,可以对数组或数 组元素进行操作。数组的基本操作包括输 入、输出及复制,这些操作都是对数组进 行的。此外,在Visual Basic 6.0中还提供 了For EachNext语句,可用于对数组的 操作。1数组元素的引用引用数组元素的格式是:数组名(下 标)。 例如: Number(1),A(2),Num(0),B(4)等。 2给数组元素赋值(1)利用循环结构给数组元素赋值,例如 为数组元素赋初值3: For i=1 to 5A(i)=3 Next i(2)利用Array()函数为数组元素赋值,即把一个数据集读 入某个数组。其格式为: 数组变量名Array(数组元素值) 例如: Static Number Number=Array(1,2,3,4,5) 说明: Array()函数对各元素赋值,声明的数组是动态数组或连 小括号都省略的数组,并且类型只能是Varient。 数组下界默认为0,可通过Option Base语句决定,上界由 Array()函数括号内的参数个数决定,也可通过UBound()函 数获得。 “数组元素值”是需要赋给数组各元素的值,各值之间以 逗号分开。 Array()函数只适用于一维数组。4数组元素的复制(1)单个数组元素可以像简单变量一样从 一个数组复制到另一个数组。例如: Dim b(4),a(6) b(2)=a(3) (2)要复制整个数组,要使用For循环语 句。(3)要复制整个数组,也可以使用一条简单的赋值语句即 可。例如: Dim a(4) as integer,b() as integer A(0)=0:a(1)=5:a(2)=10:a(3)=13:a(4)=14 B=a 使用这种方法赋值时,必须要注意: 赋值号两边的数据类型必须一致; 如果赋值号左边的是一个大小固定的数组,则数组赋值 出错; 赋值号左边的必须是一个动态数组,赋值时系统将自动 给动态数组分配内存空间,使之与右边数组大小相同。5For EachNext语句For EachNext循环与ForNext循 环类似,与ForNext语句类似,两者都是 用来执行指定重复次数的语句。但For EachNext语句是专门用于操作数组的, 它的格式如下: For Each In Next 说明: 格式中的“成员”必须是一个变体变量,是为循环 提供的,代表的是数组中的每个元素。 数组名没有括号和上下界。 用For EachNext语句可以对数组中的每个元素 进行处理,它包括查询、显示和读取。它所重复 的次数由数组中元素的个数决定,数组中有多少 个元素,就自动重复执行多少次。【案例2-13】 数组复制给数组赋初值,然后复制到另一数组中, 并打印输出到窗体上。Private Sub Form_Click()Dim a(), b() 定义动态数a = Array(1, 2, 3, 4, 5) 给数组赋初值ReDim b(UBound(a) 给动态数组分配内存空间For i = 0 To UBound(a) 数组复制b(i) = a(i)Next iFor i = 0 To UBound(a) 数组输出Print b(i);Next i End Sub【案例2-14】 数组求和求数组A中所有元素的和。Private Sub Form_Click()Dim sum As IntegerDim A(1 To 10) As Integer 数组定义For i = 1 To 10 数组赋初值A(i) = 1Next isum = 0For Each x In A 使用For EachNext数组求和sum = sum + xNext xPrint sum 输出数组和 End Sub【案例2-15】 数组基本操作Option Base 1 Private Sub Form_Click()Dim abc(10) As Integer 数组定义For i = 1 To 10 数组赋初值为0100内的整数abc(i) = Int(Rnd * 100)Next iPrint “使用普通循环输出:“For i = 1 To 10 使用普通循环输出数组Print abc(i);Next iPrintPrint “使用For EachNext输出:“For Each x
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号