官术网_书友最值得收藏!

第3章 VB基本語句

在前兩章中分別介紹了VB的語言基礎(chǔ),從中了解了VB的標識符、常量、變量、數(shù)據(jù)類型以及數(shù)組等相關(guān)知識,除了這些基本知識之外,VB的基礎(chǔ)知識中還包括基本語句,這是也是編程的基礎(chǔ)知識,VB基本語句根據(jù)VB中的不同結(jié)構(gòu)分為不同的語句,在VB中大致有三種結(jié)構(gòu):順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。在順序結(jié)構(gòu)中,主要包括賦值語句、Print方法、注釋語句和End語句;在選擇結(jié)構(gòu)中,主要包括If語句、Select Case語句;在循環(huán)結(jié)構(gòu)中,主要包括For循環(huán)語句、While循環(huán)語句和Do循環(huán)語句。本章通過實例分別對這些知識進行介紹。

3.1 賦值語句

介紹VB基本語句按照從簡入難的順序進行,首先介紹賦值語句,賦值語句是順序結(jié)構(gòu)中最簡單的語句,主要用于對一個對象的賦值。通過本節(jié)的介紹希望讀者能夠注意賦值過程中容易出現(xiàn)的一些問題。

技術(shù)要點

在本實例中主要使用的技術(shù)是賦值語句的運用方法,F(xiàn)orm的Click事件。主要功能和用法如下:

●賦值語句是最簡單的一種語句,但是賦值語句的運用是最常見的。

● Form的Click事件,是單擊本窗體時觸發(fā)的事件。

賦值語句的主要語法如下:

        [Let]VarName=Expression

其中,Let參數(shù)是可選項,主要是一種標識作用,標識這是一個賦值語句,一般省略這個參數(shù);VarName參數(shù),表示變量名或某控件的屬性名,在本實例中VarName分別表示整型變量i和j,字符串變量Str,布爾變量Bool以及窗體的BackColor屬性;Expression參數(shù),表示給變量或?qū)傩悦x值的數(shù)值,該參數(shù)可以是一個數(shù)值、表達式,或是一個賦值語句。

注意:賦值語句中的 VarName和 Expression的數(shù)據(jù)類型要相容,否則編譯時會出現(xiàn)錯誤。

實現(xiàn)代碼

        Private Sub Form_Click()          'Form的Click事件
        Dim i,j As Integer                 '定義兩個整型變量
        Dim Str As String                  '定義一個字符串變量
        Dim Bool As Boolean                   '定義一個布爾變量
        Form1.BackColor = vbWhite            '給窗體的背景色賦值
        i = 4                                '給整型i變量賦值
        j = i + 5                            '給整型j變量賦值
        Str = "Good"                       '給字符串變量賦值
        Print "i=" & I                     '把變量及值輸出到窗體上
        Print "j=" & j                     '把變量及值輸出到窗體上
        Print "Str=" & Str                 '把變量及值輸出到窗體上
        Str = Str + " afternoon"           '再次給字符串變量賦值
        Print "Str=" & Str                 '把變量及值輸出到窗體上
        Bool = i = 4                         '給布爾變量賦值
        Print "Bool=" & Bool               '把變量及值輸出到窗體上
        End Sub

單擊工具欄中的保存按鈕保存工程,然后單擊工具欄中的啟動按鈕運行工程,程序的運行結(jié)果如圖3.1所示。

圖3.1 程序運行界面圖

然后單擊工具欄中的結(jié)束按鈕,或者單擊運行窗口的關(guān)閉按鈕,結(jié)束程序的運行。

源程序解讀

(1)在Form_ Click()事件中,首先定義了兩個整型變量i,j,一個字符串變量Str,一個布爾變量Bool。

(2)其次,使用賦值語句給窗體的BackColor屬性賦值為VBWhite,使得在單擊窗體時窗體的背景色變?yōu)榘咨?/p>

(3)第三,分別使用賦值語句給變量賦值。首先給變量i賦值為4,然后把i+1賦值給變量j,接著使用Print方法把變量i和j在窗體上顯示出來。

(4)第四,給變量Str賦值為“Good”,并運用Print方法把Str變量在窗體上顯示出來。然后再次給變量Str賦值為Str+“afternoon”,并把新的賦值在窗體上顯示出來。這個主要是測試字符變量與自身的連接。

(5)最后,給變量Bool賦值為i=4,并把變量的值在窗體上顯示出來。

說明:前面說到賦值語句的左右兩端的數(shù)據(jù)類型要相容,一般不把數(shù)值賦值給字符串型的變量,但是當把數(shù)值賦值給字符串型的變量時,也不會出錯,只是把數(shù)值作為字符串處理了,例如本實例中如果出現(xiàn)“Str=i”這個語句,則在窗體上會顯示“Str=4”這個語句。

3.2 運用Print方法顯示圖片

在上一節(jié)中介紹了賦值語句的運用,其中要重點注意賦值語句的賦值方法和類型的相容性。另外,在上節(jié)的實例中還用到了Print方法,本節(jié)就詳細介紹Print方法的應(yīng)用,即顯示圖片和文字。

技術(shù)要點

本實例中主要用到的技術(shù)是Print方法和圖片框控件Picture的Click事件。主要功能和用法如下:

● Print方法,主要用于在窗體、圖片框、立即窗口等對象上顯示字符串。

●圖片框Picture控件的Click事件,是單擊圖片框控件時觸發(fā)的事件。

Print方法的具體使用語法為:

        [Object.]Print [OutPutList]

其中,Object參數(shù)表示窗體、立即窗口、圖片框等對象,是可選參數(shù),如果省略,表示在當前窗體上輸出;OutPutList參數(shù),表示輸出列表,可以是一個表達式或一系列表達式,當為多個表達式時,各表達式之間使用逗號“,”或分號“;”隔開。

說明:Print方法除了顯示功能外,還有計算功能,例如:當執(zhí)行Print 4*5時,會在當前窗體顯示出20。

實現(xiàn)代碼

        Private Sub Form_Click()
            FontSize = 18                            '設(shè)置顯示字體大小
            ForeColor = vbRed                        '設(shè)置顯示字體顏色
            Print "請觀看圖片!"                   '在窗體中顯示字符串
            Print Now                                '在窗體上顯示系統(tǒng)當前時間
        End Sub
        Private Sub Picture1_Click()
            Picture1.FontSize = 16                   '設(shè)置顯示字體大小
            Picture1.ForeColor = vbRed               '設(shè)置顯示字體顏色
            Picture1.Print "可愛的小兔子!"        '在圖片框中顯示字符串
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊當前窗體時,程序的運行結(jié)果如圖3.2所示。當單擊圖片框控件時,程序的運行結(jié)果如圖3.3所示。當單擊當前窗體和圖片框控件時,程序的運行結(jié)果如圖3.4所示。

圖3.2 單擊當前窗體的運行界面圖

圖3.3 單擊圖片框的運行界面圖

圖3.4 單擊當前窗體和圖片框的運行界面圖

源程序解讀

(1)在Form_ Click()事件中,首先由FontSize屬性設(shè)置顯示字體的大小。由ForeColor屬性設(shè)置顯示字體的顏色。然后運用Print方法在當前窗體上顯示字符串和系統(tǒng)當前的時間。

(2)在Picture1_ Click()事件中,首先由“Picture1”圖片框的FontSize屬性設(shè)置顯示字體的大小。由“Picture1”圖片框的ForeColor屬性設(shè)置顯示字體的顏色。然后運用“Picture1”圖片框的Print方法在圖片框上顯示字符串。

3.3 注釋語句和End語句

在上一節(jié)中介紹了Print方法,讀者從中理解了Print方法的基本運用方法。另外,在上面的所有實例中都用到了注釋語句和End語句,但是對于這兩種語句的用法沒有詳細介紹,本節(jié)就來介紹這兩種語句的基本用法。

技術(shù)要點

本實例運用的主要技術(shù)是注釋語句和End語句,主要功能和用法如下:

●注釋語句,主要用來注釋程序中的代碼,增加程序的可理解性。

● End語句,主要用來結(jié)束一個過程或模塊。

注釋語句的具體語法如下:

        Rem|'注釋內(nèi)容

常用的注釋語句使用標識符“'”作為注釋語句的開始,當使用標識符Rem作為注釋語句的開始時,其與注釋內(nèi)容之間應(yīng)該加一個空格隔開,注釋語句可以單獨作為一行放置在代碼的上方,也可以放置在代碼行的后面。一般對于整個過程或函數(shù)進行說明時,注釋語句放置在代碼模塊的上方;對于某行代碼進行說明時,一般把注釋語句放在本行的后面。

End語句的具體語法如下:

        End[Object]

其中,Object就是要結(jié)束的對象,可以是一個過程Sub,一個函數(shù)Function,一個語句If、Select或With。當參數(shù)Object省略時,就是結(jié)束當前過程。

實現(xiàn)代碼

        Private Sub Form_Load()
            Dim PassW As String                               '定義字符串變量
            PassW = "123456"                              '給變量賦值
            TxtName.Text = "管理員"                       '給用戶名的文本框賦值
            TxtPassWord.Text = InputBox("請輸入密碼")   '輸入密碼
            If TxtPassWord.Text = PassW Then
                MsgBox "登錄成功!"                       '輸出登錄成功的窗口
            Else
                MsgBox "登錄失敗!"                       '輸出登錄失敗的窗口
                End                                         '結(jié)束過程的執(zhí)行
            End If
        End Sub

按Ctrl+S組合鍵保存工程,然后,按F5鍵,運行工程。單擊啟動按鈕后,程序運行結(jié)果如圖3.5所示。當輸入錯誤密碼并單擊“確定”按鈕時,程序運行結(jié)果如圖3.6所示。當輸入正確密碼并單擊“確定”按鈕時,程序運行結(jié)果如圖3.7和圖3.8所示。

圖3.5 輸入密碼界面圖

圖3.6 登錄失敗界面圖

圖3.7 登錄成功界面圖

圖3.8 登錄成功后的界面圖

源程序解讀

(1)在Form_ Load()事件中,首先定義了一個字符型變量PassW。然后給PassW賦值,并且給文本框控件TxtName賦值為“管理員”。

(2)接下來由InputBox方法接受輸入的密碼值并賦值給文本框TxtPassWord。

(3)然后運用條件語句If判斷輸入的密碼值和PassW值的一致性。如果相同,使用MsgBox顯示登錄成功的窗口;否則,顯示登錄失敗的窗口,并由End語句強制結(jié)束代碼執(zhí)行。

3.4 If條件語句

前面介紹了順序結(jié)構(gòu)的幾種語句,從本節(jié)開始要介紹選擇結(jié)構(gòu)中的語句,選擇結(jié)構(gòu),顧名思義,是根據(jù)不同的結(jié)構(gòu)做出不同的選擇,從而執(zhí)行不同的操作。本節(jié)主要介紹選擇結(jié)構(gòu)中的If條件語句的應(yīng)用實例,即顯示學生的成績。

技術(shù)要點

本實例中主要運用的技術(shù)是If語句。If語句就是在選擇結(jié)構(gòu)中根據(jù)某種條件做出選擇。If語句分為單行和多行兩種情況,對于單行情況的具體語法為:

        If Condition Then 語句1[Else語句2]

其中,參數(shù)Condition為選擇的判斷條件,可以是表達式或?qū)ο笮停\行結(jié)果都是布爾類型True或False;參數(shù)“語句1”表示Condition運行結(jié)果為True是執(zhí)行的操作。“Else語句2”是可選項,是Condition運行結(jié)果為False時執(zhí)行的操作,一般情況可以省略。

多行情況的具體語法有以下三種:

        If Condition Then
        語句體
        End If
        If Condition Then
        語句體1
        Else
        語句體2
        End If
        If Condition1 Then
        語句體1
        Else If Condition2 Then
        語句體2
        [Else If Condition3 Then
        語句體3]
        ......
        [Else
        語句體n]
        End If

第一種情況,只有一種判斷標準,即一個條件,當滿足這個條件時,就執(zhí)行語句體,否則,退出If語句,執(zhí)行下面的語句;第二種情況,雖然看似有一個條件,實際有兩個判斷條件,即滿足和不滿足給定的條件,當滿足給定條件時,執(zhí)行語句體1,否則執(zhí)行語句體2,然后退出If語句;第三種情況,比較復(fù)雜,有兩個或以上的條件,滿足哪個條件,就執(zhí)行對應(yīng)的語句體。

實現(xiàn)代碼

            Private Sub Form_Load()
            Dim x As Integer                               '定義整型變量
            x = InputBox("請輸入成績")                '輸入學習成績并賦值給變量
            If x > = 90 Then                             '學習為優(yōu)成績標準
                TxtStand.Text = "學習成績?yōu)閮?yōu)"          '顯示學習成績標準
            ElseIf x > = 80 Then                         '學習為良成績標準
                TxtStand.Text = "學習成績?yōu)榱迹?         '顯示學習成績標準
            ElseIf x > = 70 Then                         '學習為中成績標準
                TxtStand.Text = "學習成績?yōu)橹校?         顯示學習成績標準
            ElseIf x > = 60 Then                         '學習為及格成績標準
                TxtStand.Text = "學習成績?yōu)榧案瘢?       '顯示學習成績標準
            Else                                          '學習為不及格成績標準
                TxtStand.Text = "學習成績?yōu)椴患案瘢?     '顯示學習成績標準
            End If
            LabShow.Caption = "學習成績=" & x           '顯示成績
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序運行結(jié)果如圖3.9所示。輸入數(shù)據(jù)并單擊“確定”按鈕時,程序運行結(jié)果如圖3.10所示。

圖3.9 輸入成績界面圖

圖3.10 顯示成績及標準的界面圖

源程序解讀

(1)在Form_ Load()事件中,首先定義了一個整型變量x,用來存儲輸入的成績。然后由InPutBox方法輸入成績并賦值給變量x。

(2)接下來使用If語句,根據(jù)判斷標準判斷輸入的成績滿足哪種標準,并把標準由“TxtStand”文本框顯示出來。最后,由“LabShow”標簽顯示輸入的成績。

3.5 Select Case語句

在上一節(jié)介紹了選擇結(jié)構(gòu)的If語句,If語句有時使用起來很方便,但是當條件有兩個以上時,使用起來就比較煩瑣,這時就需要用到本節(jié)要介紹的選擇語句——Select Case語句。

技術(shù)要點

本節(jié)實例中主要使用的技術(shù)是Select Case語句。Select Case語句主要適用于一個表達式可能有很多種結(jié)果產(chǎn)生的情況。具體語法如下:

        Select Case Expression
        Case表達式結(jié)果表1
        語句體1
        [Case表達式結(jié)果表2
        語句體2]
        ......
        [Case Else
        語句體n]
        End Select

其中,參數(shù)Expression,表示用于判斷的表達式,可以是數(shù)值表達式或字符串表達式;“表達式結(jié)果表1”是表達式的一種結(jié)果,如果表達式的結(jié)果屬于表達式結(jié)果表1,就會執(zhí)行語句體1;否則繼續(xù)與下面的表達式結(jié)果表比較,如果不屬于任何表達式結(jié)果表,就執(zhí)行語句體n。

實現(xiàn)代碼

        Private Sub Form_Load()
            Dim x As Integer                              '定義整型變量
            x = InputBox("請輸入成績")                '輸入學習成績并賦值給變量
            Select Case x
                Case Is > = 90                           '學習為優(yōu)成績標準
                  TxtStand.Text = "學習成績?yōu)閮?yōu)"        '顯示學習成績標準
                Case Is > = 80                           '學習為良成績標準
                  TxtStand.Text = "學習成績?yōu)榱迹?       '顯示學習成績標準
                Case Is > = 70                           '學習為中成績標準
                  TxtStand.Text = "學習成績?yōu)橹校?       '顯示學習成績標準
                Case Is > = 60                           '學習為及格成績標準
                  TxtStand.Text = "學習成績?yōu)榧案瘢?     '顯示學習成績標準
                Case Is < 60                             '學習為不及格成績標準
                  TxtStand.Text = "學習成績?yōu)椴患案瘢?   '顯示學習成績標準
            End Select
            LabShow.Caption = "學習成績=" & x           '顯示成績
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序運行結(jié)果如圖3.11所示。輸入數(shù)據(jù),并單擊“確定”按鈕時,程序運行結(jié)果如圖3.12所示。

圖3.11 輸入成績界面圖

圖3.12 顯示成績及標準的界面圖

源程序解讀

(1)在Form_ Load()事件中,首先定義了一個整型變量x,用來存儲輸入的成績。然后由InPutBox方法輸入成績并賦值給變量x。

(2)接下來使用Select Case語句,根據(jù)x的數(shù)值執(zhí)行成績標準的輸出操作,在每個表達式結(jié)果表中運用Is關(guān)鍵字把x的值與后面的值進行比較,如果滿足條件就執(zhí)行相應(yīng)的語句體。

說明:使用關(guān)鍵字Is時,可以配合關(guān)系運算符(除Like和Is外)指定數(shù)值范圍。

3.6 For循環(huán)語句

在上一節(jié)中分別介紹了順序結(jié)構(gòu)中的語句和選擇結(jié)構(gòu)中語句的運用實例。從本節(jié)開始介紹循環(huán)結(jié)構(gòu)的相關(guān)語句,循環(huán)結(jié)構(gòu)指的是在執(zhí)行語句時,根據(jù)循環(huán)變量,要對其重復(fù)執(zhí)行多次。循環(huán)結(jié)構(gòu)中包括三種語句:For循環(huán)語句,While循環(huán)語句和Do循環(huán)語句。本節(jié)介紹For循環(huán)語句的應(yīng)用實例,即計算矩陣乘法。

技術(shù)要點

本實例中使用的主要技術(shù)是For循環(huán)語句。For循環(huán)語句屬于計數(shù)型循環(huán),按照循環(huán)變量指明的循環(huán)次數(shù),循環(huán)執(zhí)行循環(huán)體,具體語法如下:

        For 循環(huán)變量=Start To End [Step step]
        [循環(huán)體]
        [Exit For]
        [循環(huán)體]
        Next 循環(huán)變量

其中各參數(shù)含義表示如下:

●參數(shù)“循環(huán)變量”,表示控制和統(tǒng)計循環(huán)次數(shù)的變量,該變量的數(shù)據(jù)類型應(yīng)該是數(shù)值型。

● Start表示循環(huán)變量的初值,數(shù)據(jù)類型為數(shù)值型。

● End表示循環(huán)變量的終值,數(shù)據(jù)類型也為數(shù)值型。

●參數(shù)step表示步長,是可選參數(shù),省略的情況下,默認為1,當循環(huán)變量的變化差值大于1時,要參數(shù)step進行設(shè)置,例如循環(huán)變量的差值是2,那么step=2,當Start的值小于或等于End的值時,參數(shù)step的值為正,當Start的值大于End的值時,參數(shù)step的值為負;參數(shù)“循環(huán)體”,表示滿足循環(huán)變量時執(zhí)行操作。

●參數(shù)“Exit For”,當有某種特殊情況需要退出For循環(huán)時,使用這個參數(shù),這時,后面的循環(huán)體就不再執(zhí)行。

●參數(shù)“Next循環(huán)變量”,用于結(jié)束一次For循環(huán),然后根據(jù)Start和End值的大小決定是否進行下一次循環(huán)。

另外,F(xiàn)or循環(huán)還有另外一種語法表示方法,具體語法如下:

        For Each element In Group
        [循環(huán)體]
        [Exit For]
        [循環(huán)體]
        Next [element]

其中,參數(shù)element表示遍歷集合中所有元素的變量,它的數(shù)據(jù)類型根據(jù)集合對象的不同而不同,如果是一個集合,那么element的數(shù)據(jù)類型可以是可變型或者任何對象型,如果是數(shù)組,那么element的數(shù)據(jù)類型只能是可變型;參數(shù)Group表示一個集合或者數(shù)組。參數(shù)“Next[element]”表示遍歷集合中的下一個元素。

實現(xiàn)代碼

        Dim ArrR(2,3)As Integer                                              '定義結(jié)果矩陣
        Private Sub Form_Load()
            Dim i,j,k As Integer                                               '定義循環(huán)變量
            ArrM(0,0)= 2                                                    '給M矩陣的第1個元素賦值
            ArrM(0,1)= 1                                                    '給M矩陣的第2個元素賦值
            ArrM(0,2)= 0                                                    '給M矩陣的第3個元素賦值
            ArrM(0,3)= 5                                                    '給M矩陣的第4個元素賦值
            ArrM(1,0)= 0                                                    '給M矩陣的第5個元素賦值
            ArrM(1,1)= -1                                                   '給M矩陣的第6個元素賦值
            ArrM(1,2)= 2                                                    '給M矩陣的第7個元素賦值
            ArrM(1,3)= 0                                                    '給M矩陣的第8個元素賦值
            ArrM(2,0)= 2                                                    '給M矩陣的第9個元素賦值
            ArrM(2,1)= 0                                                    '給M矩陣的第10個元素賦值
            ArrM(2,2)= 0                                                    '給M矩陣的第11個元素賦值
            ArrM(2,3)= 1                                                    '給M矩陣的第12個元素賦值
            ArrN(0,0)= 0                                                    '給N矩陣的第1個元素賦值
            ArrN(0,1)= 2                                                    '給N矩陣的第2個元素賦值
            ArrN(0,2)= 2                                                    '給N矩陣的第3個元素賦值
            ArrN(0,3)= 1                                                    '給N矩陣的第4個元素賦值
            ArrN(1,0)= 1                                                    '給N矩陣的第5個元素賦值
            ArrN(1,1)= 3                                                    '給N矩陣的第6個元素賦值
            ArrN(1,2)= 3                                                    '給N矩陣的第7個元素賦值
            ArrN(1,3)= 4                                                    '給N矩陣的第8個元素賦值
            ArrN(2,0)= -2                                                   '給N矩陣的第9個元素賦值
            ArrN(2,1)= 4                                                    '給N矩陣的第10個元素賦值
            ArrN(2,2)= -3                                                   '給N矩陣的第11個元素賦值
            ArrN(2,3)= 2                                                    '給N矩陣的第12個元素賦值
            ArrN(3,0)= 1                                                    '給N矩陣的第13個元素賦值
            ArrN(3,1)= 0                                                    '給N矩陣的第14個元素賦值
            ArrN(3,2)= -5                                                   '給N矩陣的第15個元素賦值
            ArrN(3,3)= 7                                                    '給N矩陣的第16個元素賦值
            For i = 0 To 2
                For j = 0 To 3
                  ArrR(i,j)= 0                                              '初始化結(jié)果矩陣
                  For k = 0 To 3
                      ArrR(i,j)= ArrR(i,j)+ ArrM(i,k)*ArrN(k,j)    '計算矩陣乘積
                  Next k
                Next j
            Next i
            For i = 0 To 3
                TxtR1(i)= ArrR(0,i)                 '顯示結(jié)果矩陣的第一行
                TxtR2(i)= ArrR(1,i)                 '顯示結(jié)果矩陣的第二行
                TxtR3(i)= ArrR(2,i)                 '顯示結(jié)果矩陣的第三行
            Next i
        End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊啟動按鈕后,程序運行結(jié)果如圖3.13所示。

圖3.13 程序運行結(jié)果圖

源程序解讀

(1)代碼首先定義了三個二維數(shù)組:ArrM(2,3),表示一個被乘數(shù)矩陣。ArrN(3,3),表示一個乘數(shù)矩陣。ArrR(2,3)表示兩個矩陣乘積的結(jié)果矩陣。

(2)在Form_ Load()事件中,首先定義三個整型循環(huán)變量。然后分別給被乘數(shù)矩陣和乘數(shù)矩陣賦初值。

(3)接著運用三重For循環(huán)執(zhí)行兩個矩陣的乘積。三重循環(huán)分別由循環(huán)變量i,j,k控制,最終計算結(jié)果存儲在數(shù)組ArrR()中。并且由“TxtR”文本框數(shù)組顯示出來。

3.7 While循環(huán)語句

在上一節(jié)中介紹了For循環(huán)語句的應(yīng)用實例。本節(jié)接著介紹另外一種循環(huán)語句——While循環(huán)語句的應(yīng)用實例,即有順序的顯示乘法表,希望讀者通過此例掌握While循環(huán)語句的運用方法。

技術(shù)要點

本節(jié)使用的主要技術(shù)是While語句。While語句也用于對某個條件的判斷,如果滿足條件,就執(zhí)行循環(huán)體;條件不成立就結(jié)束循環(huán),不再執(zhí)行循環(huán)體,具體語法如下:

        While Condition
        [循環(huán)體]
        Wend

其中,參數(shù)Condition表示控制循環(huán)執(zhí)行的條件,一般為數(shù)值表達式或字符串表達式,結(jié)果為True或False,如果Condition為空,則作為False處理;參數(shù)“循環(huán)體”為一條或多條語句,只有當Condition為真時才執(zhí)行。

While循環(huán)的執(zhí)行過程是:首先判斷條件是否成立,如果成立,則執(zhí)行循環(huán)體,執(zhí)行完再判斷條件是否成立,重復(fù)上述過程;否則,如果不成立,則結(jié)束循環(huán),執(zhí)行循環(huán)下面的語句。

說明:While循環(huán)允許嵌套,即While循環(huán)體中允許再出現(xiàn)While循環(huán),本實例就使用了While循環(huán)嵌套。

實現(xiàn)代碼

        Private Sub Form_Click()
            FontSize = 14                                                      '定義顯示數(shù)字的大小
                ForeColor = vbBlue                                             '定義顯示數(shù)字的顏色
                Print Tab(40);"乘法表"                                    '在窗體上顯示標題
                Print Tab(37);" - - - - - - - - - -"                      '在窗體上顯示下畫線
                While i < = 9                                                  '限定外循環(huán)條件
                  j = 1                                                        '初始化內(nèi)循環(huán)變量
                  While j < = I                                                '限定內(nèi)循環(huán)條件
                      Print Tab((j-1)*9+1);i & "*" & j& " =" & i*j;    '在窗體上顯示乘法表
                      j = j + 1                                                '內(nèi)循環(huán)變量增1
                  Wend
                  Print                                                        '顯示到下一行
                  i = i + 1                                                    '外循環(huán)變量增1
              Wend
            End Sub

按Ctrl+S組合鍵保存工程,然后按F5鍵運行工程。單擊“啟動”按鈕后,程序運行結(jié)果如圖3.14所示。

圖3.14 程序運行結(jié)果圖

源程序解讀

(1)在Form_ Click()事件中,首先使用FontSize和ForeColor兩個屬性分別設(shè)置顯示數(shù)字的大小和顏色。然后運用Print方法在窗體上顯示字符和下畫線。

(2)接下來使用While循環(huán)語句在窗體上顯示乘法表。

(3)首先,使用循環(huán)變量i控制外循環(huán),循環(huán)條件為i< =9,即要循環(huán)執(zhí)行循環(huán)體9次。

(4)其次,給內(nèi)循環(huán)變量j賦初值1,并再次使用While循環(huán)語句,循環(huán)條件為j< =i,說明內(nèi)循環(huán)受控于外循環(huán)。如果條件成立就執(zhí)行Print方法,顯示各乘法算式;否則,執(zhí)行Print方法,轉(zhuǎn)換到下一行。

(5)最后,繼續(xù)判斷外循環(huán)條件,依次重復(fù)下去。

說明:While循環(huán)語句與For循環(huán)的不同之處在于:For循環(huán)的循環(huán)次數(shù)已知,而While循環(huán)的次數(shù)提前未知,只能通過判斷條件決定循環(huán)是否結(jié)束。

3.8 Do循環(huán)語句

在前面兩節(jié)中分別介紹了For循環(huán)語句和While循環(huán)語句,這兩種循環(huán)語句各有利弊,要根據(jù)具體情況選擇合適的語句,本節(jié)接著介紹第三種循環(huán)語句——Do循環(huán)語句的應(yīng)用實例,即計算從1到nn個整數(shù)的和。

技術(shù)要點

在本實例中用到的主要技術(shù)是Do循環(huán)語句。Do循環(huán)語句也是根據(jù)某個判斷條件是否成立來決定循環(huán)體是否被執(zhí)行,Do循環(huán)有兩種語法格式,第一種語法格式:

        Do [{While|Until}Condition]
        [循環(huán)體]
        [Exit Do]
        [循環(huán)體]
        Loop

第二種語法格式:

        Do
        [循環(huán)體]
        [Exit Do]
        [循環(huán)體]
        Loop[{While|Until}Condition]

其中各參數(shù)的含義如下:

●參數(shù)Condition表示控制循環(huán)進行的條件,可以為數(shù)值型表達式或字符型表達式。

●參數(shù)“循環(huán)體”,是一條或多條語句,這個語句體,在第一種格式中,如果條件不成立就不再執(zhí)行,而在第二種格式中,當條件不成時也要執(zhí)行一次,因此,第二種格式至少執(zhí)行一次循環(huán)體,而第一種格式可能不執(zhí)行循環(huán)體。

●參數(shù)Exit Do,表示因為某個條件要中途跳出Do循環(huán),后面的循環(huán)體就不被執(zhí)行,而執(zhí)行Do循環(huán)外的下面語句。Exit Do語句可以有條件限制,也可以直接使用,一般會有條件限制。

實現(xiàn)代碼

        Private Sub Form_Click()
            Dim s,i,n As Integer                           '定義整型變量
            n = InputBox("請輸入一個整數(shù)")              '輸入一個整數(shù)并賦值給變量n
            i = 1                                           '給變量i賦初值
            s = 0                                           '給變量s賦初值
            Do
                s = s + i                                     '累加i
                i = i + 1                                     'i增1
            Loop Until (i > = n)                            '判斷條件
            Print "1到n個整數(shù)的和為:" & s                  '顯示累加和
            i = 1                                             '給變量i賦初值
            s = 0                                             '給變量s賦初值
            Do While(i < = n)                              '判斷條件
                s = s + i                                     '累加i
                i = i + 1                                     'i增1
            Loop
            Print "1到n個整數(shù)的和為:" & s                  '顯示累加和
        End Sub

單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕,運行工程,程序運行結(jié)果如圖3.15和圖3.17所示。當在文本框中輸入數(shù)據(jù)10,并單擊“確定”按鈕時,程序運行結(jié)果如圖3.16所示。當在文本框中輸入數(shù)據(jù)0,并單擊“確定”按鈕時,程序運行結(jié)果如圖3.18所示。

圖3.15 輸入整數(shù)界面圖

圖3.16 運行結(jié)果界面圖

圖3.17 輸入整數(shù)界面圖

圖3.18 運行結(jié)果界面圖

然后單擊工具欄中的結(jié)束按鈕,或者單擊運行窗口的關(guān)閉按鈕,結(jié)束程序的運行。

源程序解讀

(1)在Form_ Click()事件中,首先定義三個整型變量i,s,n,分別表示循環(huán)變量、累加和變量、輸入整數(shù)變量。然后分別給三個變量賦初值為1、0、n的值是由InputBox方法得到的。

(2)接下來,分別使用Do循環(huán)的兩種語法格式進行1到n的整數(shù)累加操作。最后把累加和由Print方法顯示在當前窗體上。

注意:在使用第一種語法格式進行整數(shù)累加操作之前要再次給變量i和s賦初值,否則當輸入整數(shù)0時,會出現(xiàn)錯誤。

3.9 Write語句寫入文件

前面介紹了VB三種結(jié)構(gòu)中的一些語句,這些語句都是編程的基礎(chǔ),希望讀者能夠掌握這些語句的相關(guān)語法和語句之間的不同點。本節(jié)在前面學習的基礎(chǔ)上,介紹另外一種語句——Write語句的運用實例,即在文本框中寫入文件。

技術(shù)要點

在本實例中主要用到了Write語句、Open語句和Close語句,主要功能和用法如下:

● Write語句,主要用于將數(shù)據(jù)寫入文件。

● Open語句,主要用于打開一個已知的文件。

● Close語句,主要用于關(guān)閉一個打開的文件。

Write語句的具體語法為:

        Write#FileNumber [OutputList]

其中,參數(shù)FileNumber表示任何有效的文件號,在本例中文件號為1,也可以為其它的,但是,這個文件號要與打開文件時賦予文件的文件號相同,否則編譯時會出錯;參數(shù)OutputList,表示要寫入的數(shù)據(jù),這些數(shù)據(jù)可以是數(shù)值表達式,或字符串表達式,當要寫入的是一首詩時,如本例一樣,要在每句詩之間使用換行符vbCrLf隔開。

Open語句的具體語法為:

        Open PathName For Mode[Access access][Lock]As[#]FileNumber [Len=reclength]

其中各參數(shù)的含義如下:

●參數(shù)PathName表示打開文件的路徑,打開一個已知文件時,必須指明打開路徑,否則無法找到文件。

●參數(shù)Mode表示打開文件的方式,打開文件有很多種方式:Append,Binary,Input, Outut或Random方式,如果沒有指明,默認為Random方式。本實例中,采用的是Output方式。

●參數(shù)access表示打開文件可以進行的操作,有讀操作,寫操作或讀寫操作。

●參數(shù)Lock表示其他進程可以對打開文件進行的操作,有共享、鎖定讀操作,鎖定寫操作或鎖定讀寫操作,這個參數(shù)可選,但一般不常用。

●參數(shù)FileNumber表示一個有效的文件號,有效的文件號范圍在1~511之間。

●參數(shù)reclength表示一個小于等于32767的數(shù),當以Random方式打開文件時,使用該參數(shù)記錄文件長度。

Close語句的具體語法如下:

        Close[FileNumberList]

其中,參數(shù)FileNumberList表示關(guān)閉文件的文件號列表;當關(guān)閉當前一個文件時這個參數(shù)可以省略。

實現(xiàn)代碼

        Private Sub Form_Click()
            Dim FileStr As String                                                       '定義字符串變量
            Open App.Path & "\FileMe.txt " For Output As#1                           '打開要寫入文字的文件
            '設(shè)置寫入的文字
            FileStr = "春夜即事" & vbCrLf & "霞綃云幄任鋪陳,隔巷蟆更聽未真." & vbCrLf &"枕上輕寒窗外雨,眼
        前春色夢中人." & vbCrLf & "盈盈燭淚因誰泣,點點花愁為我嗔." & vbCrLf & "自是小鬟嬌懶慣,擁衾不耐笑
        言頻."
            Write#1,F(xiàn)ileStr                                                           '將文字寫入文件
            MsgBox "已經(jīng)將信息寫入FileMe.txt文件中!",vbInformation,"信息提示"   '提示文字已經(jīng)寫入
            TxtFile.Text = FileStr                                                     '顯示寫入的文字
            Close                                                                      '關(guān)閉文件
        End Sub

單擊工具欄中的保存按鈕,保存工程,然后單擊工具欄中的啟動按鈕,運行工程,程序運行結(jié)果如圖3.19所示。寫入文件后,程序運行結(jié)果如圖3.20和圖3.21所示。

圖3.19 初始狀態(tài)界面圖

圖3.20 寫入文字之后的界面圖

圖3.21 顯示文字的界面圖

然后單擊工具欄中的結(jié)束按鈕,或者單擊運行窗口的關(guān)閉按鈕,結(jié)束程序的運行。

源程序解讀

(1)在Form_ Click()事件中,首先定義了一個字符串變量FileStr,用來存儲寫入文件的數(shù)據(jù)。

(2)接下來,使用Open語句,以O(shè)utput方式打開當前文件夾下的文件FlieMe.txt,并賦予文件編號為1。

(3)然后,給FileStr賦初值,本例中為一首詩。

(4)最后,運用Write語句把FileStr中的內(nèi)容寫入文件。寫入后使用MsgBox方法顯示寫入成功的提示框,并使用“TxtFile”文本框顯示寫入的數(shù)據(jù)。

主站蜘蛛池模板: 容城县| 海兴县| 灵山县| 忻州市| 崇阳县| 靖江市| 荥阳市| 丁青县| 绥棱县| 丁青县| 杭锦后旗| 宜春市| 西吉县| 三江| 报价| 香河县| 青州市| 汉川市| 崇义县| 金华市| 淮安市| 公主岭市| 葫芦岛市| 门源| 武宁县| 华安县| 桐城市| 舟山市| 宣化县| 临桂县| 抚州市| 河曲县| 酒泉市| 禹州市| 印江| 思茅市| 天长市| 瑞丽市| 都昌县| 铁岭市| 甘谷县|