- Visual Basic實例精通
- 柴相花等編著
- 1191字
- 2019-03-01 14:47:15
第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到n的n個整數(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ù)。
- ClickHouse性能之巔:從架構(gòu)設(shè)計解讀性能之謎
- 企業(yè)級Java EE架構(gòu)設(shè)計精深實踐
- Hands-On Image Processing with Python
- Cassandra Design Patterns(Second Edition)
- MATLAB 2020從入門到精通
- Learning Concurrent Programming in Scala
- Cybersecurity Attacks:Red Team Strategies
- C#程序設(shè)計(項目教學版)
- Python入門很輕松(微課超值版)
- Natural Language Processing with Python Quick Start Guide
- Machine Learning for OpenCV
- C語言從入門到精通
- 企業(yè)級Java現(xiàn)代化:寫給開發(fā)者的云原生簡明指南
- LabVIEW數(shù)據(jù)采集(第2版)
- Learning ROS for Robotics Programming