chysoft
最近评论
szuzh:看过
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 三、三种执行结构收藏

    新一篇: 四、自定义方法及其使用范围 | 旧一篇: 二、VB6语言基础

    三种执行结构

    在前面的代码中,我们的程序会一行一行的往下执行,但在实际工作中,可能会根据不同的条件执行不同的工作,这就要求我们在程序中也能实现这样的操作,于是,通过多年的开发、研究,现在无论哪种语言,都会有三种基本的执行结构,即我们常说的:

    l         顺序结构

    l         条件结构

    l         循环结构

    下面我将会使用顺序和循环这两种结构来完成同一种工作。就是计算从1到100累加的和。

     

    1 顺序结构

    当没有条件转移时,程序会按顺序一行一行执行代码,如果通过通过这个结构来计算1到100的累加,我们当然不能用1+2+3……这种方法,于是我们只有使用小高斯的计算方法了,代码如下(您可以新建一个按钮Command2来执行此项计算):

    Private Sub Command2_Click()

        Dim iFrom As Long

        Dim iTo As Long

        Dim sum As Long

        iFrom = 1

        iTo = 100

        sum = (iFrom + iTo) * (iTo / 2)

        MsgBox CStr(sum)

    End Sub

    我们分别三个整型变量来指定开始数、结束数以及计算结果,计算完成后,使用MsgBox函数将结果显示出来,其中还使用了CStr函数来将结果转成字符串形式。

    其实这种方法可以说是毫无意义,在这里,我们只是要显示一下代码的执行顺序,而此类问题最好的也是最明了的解决方案就是使用循环结构。

     

    2 循环结构

    下面的代码使用循环结构计算1到100的累加,先看一下代码:

    Private Sub Command3_Click()

        Dim i As Long

        Dim sum As Long

        sum = 0

        For i = 1 To 100 Step 1

            sum = sum + i

        Next

        MsgBox CStr(sum)

    End Sub

    下面解释一下代码。

    在代码中,我们看到了新的语句:

    For 循环控制变量=初值 To 结束值 Step 步长

        循环体代码

    Next

    其中,For、To、Step和Next为VB6的关键字,这个循环结构的含义就是,使用“循环控制变量”来控制循环的次数(代码中是从1到100共100次),当这个控制变量的值超过结束值时则跳出这个循环而继续执行Next关键字后面的代码;其中“步长”决定每次循环控制变量的变化值,如在代码中我们使用的是1,在VB6中,1是步长的默认值,所以这里我们还可以省略步长,如For语句行我们可以简写成“For i = 1 To 100”。

    “循环体代码”是在每次循环中都要执行一遍的一条或多条语句(如果没有语句也可以,但有什么意义呢),在本例中,它将会执行100次,即每次循环时都将已计算的值和当前循环到的i的值相加并保存在变量sum中。

    循环完毕后,我们同样将结果转换成字符串并使用MsgBox函数显示出来。

     

    VB6中,除了ForNext循环语句以外,还有一种比较常用的循环语句就DoLoop语句,下面我将显示使用这个语句是如何完成1到100的累加,你可以将代码放到一个新的按钮响应代码中:

    Private Sub Command4_Click()

        Dim i As Long

        Dim sum As Long

        sum = 0

        i = 1

        Do Until i > 100

            sum = sum + i

            i = i + 1

        Loop

        MsgBox CStr(sum)

    End Sub

    代码中,Do、Until、Loop是VB6中的关键字。我们可以看到在Until后面就是控制循环的条件,在这里我们可以理解为“直到i大于100后,循环将不再执行”,在循环体代码中,我们同样使用sum变量来累积计算相加的结果,而在每次循环后i都要增加1,这样就确保了循环在计算到100后就会停止,而继续执行Loop语句后面的代码。

    在控制循环的条件时,我们使用了关键字Until,而在DoLoop语句中还有一个关键字可以用来控制条件,那就是While,我们可以理解成是当这个条件满足时将执行循环体代码,如上例中的Do语句行可以写成“Do While i<=100”,即是当i小于或等100时将执行循环体内的代码。

     

    另外,关于Until和While关键字,它们不但可以放到Do关键字的后面,而且还可以放在Loop关键字的后面,但这样会出现一点小小的不同,它的区别是:

    当放在Do关键字后面时,程序会先进行条件的判断,如果满足则执行循环体代码,而如果在一开始条件就不满足,则循环体内的代码一次也不会执行;

    当放在Loop关键字后面时,程序会在执行循环体代码后再进行条件的判断,也就是说循环体代码会最少执行一次。

    对于Until和While关键字,在开发中可以根据实际需要灵活使用。

     

    VB6中,还有一个循环语句,就是WhileWend,它的格式就是:

    While 条件

        循环体代码

    Wend

    它的含义就是当条件满足时,则执行循环体代码,如计算1到100累加使用这个语句就可以写成:

    Dim i As Long

    Dim sum As Long

    sum = 0

    i = 1

    While i <= 100

    sum = sum + i

    i = i + 1

    Wend

    MsgBox CStr(sum)

    由于这个语句的功能完成可以使用DoLoop语句来完成,所以在后面我们将只使用ForNext和DoLoop两种循环结构的语句。

     

    3 条件结构

    为了演示条件结构的使用方法,我们将在Form1窗体上添加四个单选控件(OptionButton),分别为Option1、Option2、Option3和Option4,然后分别将它的Caption属性依次设为“加”、“减”、“乘”和“除”。

    界面设计完成后,我们将Command1的原响应代码变为注释,然后编写如下代码(这里我只列出新的代码,在后面示例中所列出的代码也都采取此原则):

    Private Sub Command1_Click()

        Dim n1 As Currency

        Dim n2 As Currency

        Dim result As Currency

        n1 = CCur(Text1.Text)

        n2 = CCur(Text2.Text)

        If Option1.Value = True Then

            result = n1 + n2

        ElseIf Option2.Value = True Then

            result = n1 - n2

        ElseIf Option3.Value = True Then

            result = n1 * n2

        ElseIf Option4.Value = True Then

            result = n1 / n2

        Else

            MsgBox "没有选择计算方法!"

            Exit Sub

        End If

        Text3.Text = CStr(result)

    End Sub

    运行程序,在Text1和Text2中分别输入数值,然后单击Command1看看有什么结果?

    如果你没有选择运行方法,会出现一个提示;如果你选择了任一一个运行方法,在Text3中则会显示计算结果,在这里暂时请大家输入正确的数值,并且不在在Text2中输入“0”,因为当选择除法时,除数是不能为0的。

    下面我们来看看代码中都有哪些新的知识。

    首先,在代码中我们又看到了几个新的关键字,它们是If、Then、ElseIf和End If,这几个关键字就是这里的主角——条件结构语句的关键字。它的基本格式是:

    If 条件1 Then

        代码块1

    [ElseIf 条件2 Then]

        [代码块2]

    ……

    [Else]

        [代码块n]

      End If

    其中,使用中括号的部分为可选项,也就是在实际使用时可能没有的部分。If语句的含义就是,当条件1满足时将执行代码块1,完成后继续执行End If后面的代码;否则判断条件2(如果没当然就不同判断了),满足时执行代码块2,完成后执行End If后面的代码;依此类推,当判断完所有的ElseIf语句并且没有满足的条件时,程序会执行代码块n(没有则不执行),然后会继续执行End If语句后面的代码。

    在上例的代码中,当没有选择运算符时,程序会给出提示后终止事件代码的执行并退出事件响应,这里使用了“Exit Sub”语句来退出所在的响应事件的子程序。关于这个子程序和事件之间的联系在这里就不详细说明了,在后面的学习中我们会慢慢了解这种机制。

    这里使用的MsgBox函数,没有带一个变量或函数返回值做为参数,而是直接跟了一个字符串,我们可以看到,在VB6中字符串是要使用双引号包含起来的。

     

    一个最简单的If语句会是以下形式:

    If 条件 Then

        [代码块]

    End If

    即,当条件满足时执行代码块。

     

    VB6中,还有一种条件语句,有时我们称其选择语句,它就是SelectCase语句,为了测试它,请在Form1窗口中添加一新的文本框Text4,然后在Command1的响应事件中编写如下代码:

    Private Sub Command1_Click()

        Dim n1 As Currency

        Dim n2 As Currency

        Dim result As Currency

        n1 = CCur(Text1.Text)

        n2 = CCur(Text2.Text)

        Select Case Text4.Text

            Case "+"

                result = n1 + n2

            Case "-"

                result = n1 - n2

            Case "*"

                result = n1 * n2

            Case "/"

                result = n1 / n2

            Case Else

                MsgBox "没有输入正确的运行符!"

                Text4.SetFocus

                Exit Sub

        End Select

        Text3.Text = CStr(result)

    End Sub

    运行程序,然后不要忘了在Text1和Text2中分别输入一个数值,这时你可以在Text4中输入“+”、“-”、“*”、“/”或是其它字符,当然也可以空着,这时可以单击Command1按钮,看看运行的结果如何,和If语句相似,如果您输入的不是四则运算中的一个,则给出相应的提示,并使用Text4的SetFocus方法将输入的焦点设置到自己上面,然后退出所在的事件响应子程序。

    从代码中,我们可以看到SelectCase语句的基本格式就是:

    Select 变量

        Case 值1

            代码块1

        [Case 值2]

            [代码块2]

        ……

        [Case Else]

            [代码块n]

    End Select

    在这里,中括号中的内容也是可以省略的,其中Select、Case、Case Else、End Select为关键字,用于表示这种语句的结构。“变量”则为要判断值的变量标识符或一个表达式,然后每一个Case语句后面都是一个可能的值(这里是字符串,所以使用双引号包含起来,如果是数值则不需要双引号),当“变量”的值与Case后面的值相同时,则执行相应的代码块,然后继续执行End Select语句后面的代码;如果没有匹配的值,则执行Case Else后面的代码块n,如果没有则不执行,然后继续执行End Select后面的代码。

     

    在实际应用中,SelectCase和IfThenEnd If语句还是有区别的:

    判断一个变量的多个值时,一般使用SelectCase语句;

    要判断多个变量的值时,一般采用IfThenEnd If语句。

     

    下一章,我们将学习如何创建自己方法(自定义子程序和函数)。

    发表于 @ 2005年09月22日 21:48:00|评论(loading...)|编辑

    新一篇: 四、自定义方法及其使用范围 | 旧一篇: 二、VB6语言基础

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © chysoft