![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
第四章 VB程序的控制結(jié)構(gòu)(重點(diǎn)概述2) |
|||
4.3 循環(huán)結(jié)構(gòu)
循環(huán)是在指定的條件下多次重復(fù)執(zhí)行一組語(yǔ)句。VB中提供了兩種類型的循環(huán)語(yǔ)句: 計(jì)數(shù)循環(huán)語(yǔ)句和條件型循環(huán)語(yǔ)句 1. For循環(huán)語(yǔ)句(知道循環(huán)次數(shù)的計(jì)數(shù)型循環(huán)) 語(yǔ)句形式: For 循環(huán)變量 = 初值To 終值 [ Step 步長(zhǎng)]
| |||
![]() |
![]() |
![]() |
![]() |
2. Do……Loop循環(huán)(不知道循環(huán)次數(shù)的條件型循環(huán))
是用于控制循環(huán)次數(shù)未知的循環(huán)結(jié)構(gòu),語(yǔ)法形式有兩種:
形式1:Do While …… Loop
Do [ While | Until 條件 ]
語(yǔ)句塊
[ Exit Do ]
語(yǔ)句塊
Loop
![]() |
形式2:Do …… Loop While
Do
語(yǔ)句塊
[ Exit Do ]
語(yǔ)句塊
Loop [ While | Until 條件 ]
![]() |
說(shuō)明:
1)形式1為先判斷后執(zhí)行,有可能一次也不執(zhí)行;
2)形式2為先執(zhí)行后判斷,至少執(zhí)行一次;
3)關(guān)鍵字While 用于指明條件為真時(shí)就執(zhí)行循環(huán)體中的語(yǔ)句,Until剛好相反;
4)當(dāng)省略了While|Until 條件字句,即循環(huán)結(jié)構(gòu)僅由 Do……Loop關(guān)鍵字構(gòu)成時(shí),表示無(wú)條件循環(huán),這時(shí)循環(huán)體內(nèi)應(yīng)該有Exit Do語(yǔ)句,否則為死循環(huán);
5)Exit Do 語(yǔ)句表示當(dāng)遇到該語(yǔ)句時(shí),退出循環(huán),執(zhí)行Loop的下一語(yǔ)句。
例:我國(guó)現(xiàn)有人口13億,按人口年增長(zhǎng)率0.8%計(jì)算,多少年后我國(guó)人口超過(guò)26億。
計(jì)算公式 26=13(1+0.008)n
圖中的例子是按可變?cè)鲩L(zhǎng)率和預(yù)計(jì)總?cè)丝跀?shù)設(shè)計(jì)的。
![]() |
![]() |
3. 循環(huán)的嵌套
指在循環(huán)體內(nèi)又包含了一個(gè)完整的循環(huán)結(jié)構(gòu)。循環(huán)嵌套對(duì)For 循環(huán)和Do……Loop循環(huán)均適用。
例:打印九九乘法表![]() |
![]() |
4.4 其它輔助控制語(yǔ)句
1.Go To 語(yǔ)句
語(yǔ)句形式: Go To 標(biāo)號(hào) | 行號(hào)
![]() |
說(shuō)明:(1)Go To語(yǔ)句只能轉(zhuǎn)移到同一過(guò)程的標(biāo)號(hào)或行號(hào)處;標(biāo)號(hào)是一個(gè)字符系列,首字符必須為字母,與大小寫(xiě)無(wú)關(guān),任何轉(zhuǎn)移到的標(biāo)號(hào)后面必須有冒號(hào): ;行號(hào)是一個(gè)數(shù)字序列;
(2)以前BASIC中常用此語(yǔ)句,可讀性差;現(xiàn)在要求盡量少用或不用,改用選擇結(jié)構(gòu)或循環(huán)結(jié)構(gòu)來(lái)代替。
2.Exit語(yǔ)句
用于退出某控制結(jié)構(gòu)的執(zhí)行,VB的Exit語(yǔ)句有多種形式,如:
Exit For (退出For循環(huán))
Exit Do (退出Do)循環(huán))
Exit Sub (退出子過(guò)程)
Exit Function(退出函數(shù))
3.End 語(yǔ)句
獨(dú)立的End語(yǔ)句用于結(jié)束一個(gè)程序的執(zhí)行,可以放在任何事件過(guò)程中,形式為:End
VB 的End語(yǔ)句還有多種形式,用于結(jié)束一個(gè)過(guò)程或塊,如:
End If End With End Type End Select End Sub End Function
4.With語(yǔ)句
它的作用是可以對(duì)某個(gè)對(duì)象執(zhí)行一系列的語(yǔ)句,而不用重復(fù)指出對(duì)象的名稱。但不能用一個(gè)With語(yǔ)句設(shè)置多個(gè)不同的對(duì)象。屬性前面需要帶點(diǎn)號(hào)“· ”。
語(yǔ)句形式如下: With 對(duì)象名
語(yǔ)句塊
End With
例:With form1
. Height=3000
. Width=4000
. BackColor=RGB(255,0,0)
End With
4.5 程序調(diào)試
1. VB的調(diào)試工具
(1)設(shè)置自動(dòng)語(yǔ)法檢查
打開(kāi)工具菜單 → 單擊選項(xiàng)命令 → 選擇 編輯器 頁(yè)面 →將 自動(dòng)語(yǔ)法檢測(cè) 勾上。
(2)利用VB調(diào)試工具欄
![]() |
利用該工具欄可以運(yùn)行程序、中斷運(yùn)行、在程序中設(shè)置間斷點(diǎn)、監(jiān)視變量、單步調(diào)試、過(guò)程跟蹤等操作。
2. VB的三種模式
(1)設(shè)計(jì)模式
在設(shè)計(jì)模式下可以進(jìn)行程序的界面設(shè)計(jì)、屬性設(shè)置、代碼編寫(xiě)等,標(biāo)題欄上顯示“設(shè)計(jì)”,在此模式下不能運(yùn)行程序,也不能使用調(diào)試工具。
(2)運(yùn)行模式
執(zhí)行“運(yùn)行”菜單中的“啟動(dòng)”命令或單擊工具欄上的啟動(dòng)按鈕或按F5鍵,即由設(shè)計(jì)模式進(jìn)入運(yùn)行模式,標(biāo)題欄顯示“運(yùn)行”,在此階段可以查看程序代碼,但不能修改。若要修改,必須單擊工具欄上的“結(jié)束”按鈕,回到設(shè)計(jì)模式,也可以選擇“中斷”按鈕,進(jìn)入中斷模式。
(3)中斷模式
當(dāng)程序運(yùn)行時(shí)單擊了“中斷”按鈕,或當(dāng)程序出現(xiàn)運(yùn)行錯(cuò)誤時(shí),都可以進(jìn)入中斷模式,在此模式下,運(yùn)行的程序被掛起,可以查看代碼、修改代碼、檢查數(shù)據(jù)。修改結(jié)束,單擊“繼續(xù)”按鈕可以繼續(xù)程序的運(yùn)行,也可以單擊“結(jié)束”按鈕停止程序的執(zhí)行。
3. 常見(jiàn)錯(cuò)誤
(1) 編輯時(shí)錯(cuò)誤
當(dāng)用戶在代碼窗口編輯代碼時(shí),VB會(huì)對(duì)程序進(jìn)行語(yǔ)法檢查,當(dāng)發(fā)現(xiàn)語(yǔ)句沒(méi)有輸完、關(guān)鍵字輸錯(cuò)等情況時(shí),系統(tǒng)會(huì)彈出對(duì)話框,提示出錯(cuò),并在錯(cuò)誤處加亮顯示,以便用戶修改。
(2)編譯時(shí)錯(cuò)誤
是指用戶單擊了“啟動(dòng)”按鈕,VB開(kāi)始運(yùn)行程序前,先編譯執(zhí)行的程序段時(shí)產(chǎn)生的錯(cuò)誤,此錯(cuò)誤是由于用戶未定義變量、遺漏關(guān)鍵字等原因而產(chǎn)生的。發(fā)現(xiàn)錯(cuò)誤時(shí)系統(tǒng)會(huì)停止編譯,提示用戶修改。
(3)運(yùn)行時(shí)錯(cuò)誤
指VB在編譯通過(guò)后,運(yùn)行代碼時(shí)發(fā)生的錯(cuò)誤,一般是由于指令代碼執(zhí)行了非法操作引起的,如:數(shù)據(jù)類型不匹配、試圖打開(kāi)一個(gè)不存在的文件等。系統(tǒng)會(huì)報(bào)錯(cuò)并加亮顯示、等候處理。
(4)邏輯錯(cuò)誤
如果程序運(yùn)行后得不到所希望的結(jié)果,則說(shuō)明存在邏輯錯(cuò)誤。如:運(yùn)算符使用不正確,語(yǔ)句的次序不對(duì)、循環(huán)語(yǔ)句的起始、終值不正確。這種錯(cuò)誤系統(tǒng)不會(huì)報(bào)錯(cuò),需要用戶自己分析判斷。
4.程序調(diào)試方法
(1)進(jìn)入/退出中斷狀態(tài)
進(jìn)入中斷狀態(tài)有四種方法:
1) 程序運(yùn)行時(shí)發(fā)生錯(cuò)誤自動(dòng)進(jìn)入中斷
2) 程序運(yùn)行中用戶按中斷鍵強(qiáng)制進(jìn)入中斷
3) 用戶在程序中預(yù)先設(shè)置了斷點(diǎn),程序執(zhí)行到斷點(diǎn)處即進(jìn)入中斷狀態(tài)
4) 在采用單步調(diào)試方式,每運(yùn)行一個(gè)可執(zhí)行代碼后,即進(jìn)入中斷狀態(tài)。
(2) 利用調(diào)試窗口
1) 立即窗口
這是調(diào)式窗口中使用最方便、最常用的窗口?梢栽诔绦蛑杏Debug.Print方法,把輸出送到立即窗口,也可以在該窗口中直接使用Print語(yǔ)句或?顯示變量的值。
2) 本地窗口
該窗口顯示當(dāng)前過(guò)程中所有變量的值,當(dāng)程序的執(zhí)行從一個(gè)過(guò)程切換到另一個(gè)過(guò)程時(shí),該窗口的內(nèi)容發(fā)生改變,它只反映當(dāng)前過(guò)程中可用的變量。
3) 監(jiān)視窗口
該窗口可顯示當(dāng)前的監(jiān)視表達(dá)式,在此之前必須在設(shè)計(jì)階段,利用調(diào)試菜單的“添加監(jiān)視命令”或“快速監(jiān)視”命令添加監(jiān)視表達(dá)式以及設(shè)置的監(jiān)視類型在運(yùn)行時(shí)顯示在監(jiān)視窗口,根據(jù)設(shè)置的監(jiān)視類型進(jìn)行相應(yīng)的顯示。
(3)插入斷點(diǎn)和逐句跟蹤
在調(diào)試程序時(shí),通;卦O(shè)置斷點(diǎn)來(lái)中斷程序的運(yùn)行,然后逐句跟蹤檢查相關(guān)變量、屬性和表達(dá)式的值是否在預(yù)期的范圍內(nèi)。
可在中斷模式下或設(shè)計(jì)模式時(shí)設(shè)置或刪除斷點(diǎn),在代碼窗口選擇懷疑存在問(wèn)題的地方作為斷點(diǎn),按下F9鍵,則程序運(yùn)行到斷點(diǎn)處即停下,進(jìn)入中斷模式,在此之前所關(guān)心的變量、屬性、表達(dá)式的值都可以看到。