第四章 VB程序的控制結(jié)構(gòu) 4.1 算法概論 1.算法的概念 算法:指用計(jì)算機(jī)解決某一問(wèn)題的方法和步驟。
數(shù)值算法:用于解決一般數(shù)學(xué)解析方法難以解決的問(wèn)題,如:求超越方程的根、求定積分、解微分方程等。 非數(shù)值算法:用于對(duì)非數(shù)值信息進(jìn)行查找、排序等。 2.算法的特征 (1)確定性:指算法的每個(gè)步驟都應(yīng)確切無(wú)誤,沒(méi)有歧義。 3.算法的評(píng)價(jià) 主要評(píng)價(jià)指標(biāo)是:算法是否正確、運(yùn)行的效率、占用系統(tǒng)資源的多少。 4.算法的描述 一般常用流程框圖來(lái)描述算法。
5.基本算法結(jié)構(gòu) “結(jié)構(gòu)化程序設(shè)計(jì)方法”規(guī)定算法有三種基本結(jié)構(gòu): 順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)
6.算法示例 (1)
(2)順序查找算法—— 在N個(gè)字符串集合中,查找有無(wú)特定的字符串存在
4.2
順序結(jié)構(gòu)
1. 賦值語(yǔ)句 賦值語(yǔ)句是任何程序設(shè)計(jì)中最基本的語(yǔ)句,賦值語(yǔ)句都時(shí)順序執(zhí)行的。賦值語(yǔ)句的形式為: 變量名 = 表達(dá)式 它的作用是計(jì)算右邊表達(dá)式的值,然后賦給左邊的變量,表達(dá)式的類(lèi)型應(yīng)該與變量名的類(lèi)型一致。 2. 使用說(shuō)明 (1)當(dāng)表達(dá)式為數(shù)值型而與變量精度不同時(shí),強(qiáng)制轉(zhuǎn)換成左邊變量的精度;
4.3 選擇結(jié)構(gòu)(或稱(chēng)分支結(jié)構(gòu)) 1.1.
IF條件語(yǔ)句
2)If <表達(dá)式> Then <語(yǔ)句> 說(shuō)明:表達(dá)式一般為關(guān)系表達(dá)式、邏輯表達(dá)式,也可以為算術(shù)表達(dá)式,非0為True,0為False; 語(yǔ)句塊可以是一句或多句,若用2)表示,則只能是一句語(yǔ)句,若多句,語(yǔ)句間需用冒號(hào)分隔,而且必須在一行上書(shū)寫(xiě)。 例:已知兩個(gè)數(shù)x和y,比較它們的大小,使得 x大于y: 方法一: if x<y then
方法二: if x<y then t=x : x=y : y=t 注意:將兩個(gè)變量中的數(shù)進(jìn)行交換時(shí),必須借助于第三個(gè)變量才能實(shí)現(xiàn)。 (2)If……Then……Else語(yǔ)句(雙分支結(jié)構(gòu))
2) If <表達(dá)式> Then <語(yǔ)句1> Else <語(yǔ)句2>
(3)If……Then……ElseIf語(yǔ)句(多分支結(jié)構(gòu))
注意 : 1)不管有幾個(gè)分支,程序執(zhí)行了一個(gè)分支后,其余分支不再執(zhí)行; 例:已知變量strC中存放了一個(gè)字符,判斷該字符是字母字符、數(shù)字字符還是其他字符。
(4) If語(yǔ)句的嵌套 If語(yǔ)句的嵌套是指if 或else后面的語(yǔ)句塊中又包含If語(yǔ)句。語(yǔ)句形式: If <表達(dá)式1> Then 注意:
2. Select Case語(yǔ)句(情況語(yǔ)句) 是多分支語(yǔ)句的又一種形式,語(yǔ)句形式: Select Case 變量或表達(dá)式 語(yǔ)句塊n+1]
說(shuō)明:1)變量或表達(dá)式可以是數(shù)值型或字符串表達(dá)式 2)表達(dá)式列表I 可以是表達(dá)式、一組用逗號(hào)分隔的枚舉值、表達(dá)式1 to 表達(dá)式2、Is關(guān)系運(yùn)算符表達(dá)式;如:case 1 to 10 、 case "a","w","e","t" 、 case 2,4,6,8,is>10 3)并不是所有的多分支結(jié)構(gòu)都可以用情況語(yǔ)句代替的。 例:已知輸入某課程的百分制成績(jī)mark,要求顯示對(duì)應(yīng)五級(jí)制的評(píng)定,評(píng)定條件如下:
3. 條件函數(shù) (1)if函數(shù) 函數(shù)形式: Iif(表達(dá)式,當(dāng)條件為True時(shí)的值,當(dāng)條件為False時(shí)的值 (2)Choose函數(shù) 函數(shù)形式:Choose(整數(shù)表達(dá)式,選項(xiàng)列表)
循環(huán)是在指定的條件下多次重復(fù)執(zhí)行一組語(yǔ)句。VB中提供了兩種類(lèi)型的循環(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)]
說(shuō)明:1) 循環(huán)變量必須為數(shù)值型 例1:計(jì)算1 ~ N的奇、偶數(shù)之和。(N為自然數(shù)) 例2:打印ASCII碼表
2. Do……Loop循環(huán)(不知道循環(huán)次數(shù)的條件型循環(huán)) 是用于控制循環(huán)次數(shù)未知的循環(huán)結(jié)構(gòu),語(yǔ)法形式有兩種: 形式1:Do While …… Loop
形式2:Do …… Loop
While
說(shuō)明: 例:我國(guó)現(xiàn)有人口13億,按人口年增長(zhǎng)率0.8%計(jì)算,多少年后我國(guó)人口超過(guò)26億。
3. 循環(huán)的嵌套 指在循環(huán)體內(nèi)又包含了一個(gè)完整的循環(huán)結(jié)構(gòu)。循環(huán)嵌套對(duì)For 循環(huán)和Do……Loop循環(huán)均適用。 例:打印九九乘法表
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.Exit語(yǔ)句 用于退出某控制結(jié)構(gòu)的執(zhí)行,VB的Exit語(yǔ)句有多種形式,如: 3.End 語(yǔ)句 獨(dú)立的End語(yǔ)句用于結(jié)束一個(gè)程序的執(zhí)行,可以放在任何事件過(guò)程中,形式為:End 4.With語(yǔ)句 語(yǔ)句形式如下: With
對(duì)象名 例:With
form1 4.5 程序調(diào)試 1. VB的調(diào)試工具 (1)設(shè)置自動(dòng)語(yǔ)法檢查 (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)用戶(hù)在代碼窗口編輯代碼時(shí),VB會(huì)對(duì)程序進(jìn)行語(yǔ)法檢查,當(dāng)發(fā)現(xiàn)語(yǔ)句沒(méi)有輸完、關(guān)鍵字輸錯(cuò)等情況時(shí),系統(tǒng)會(huì)彈出對(duì)話(huà)框,提示出錯(cuò),并在錯(cuò)誤處加亮顯示,以便用戶(hù)修改。 (2)編譯時(shí)錯(cuò)誤 是指用戶(hù)單擊了“啟動(dòng)”按鈕,VB開(kāi)始運(yùn)行程序前,先編譯執(zhí)行的程序段時(shí)產(chǎn)生的錯(cuò)誤,此錯(cuò)誤是由于用戶(hù)未定義變量、遺漏關(guān)鍵字等原因而產(chǎn)生的。發(fā)現(xiàn)錯(cuò)誤時(shí)系統(tǒng)會(huì)停止編譯,提示用戶(hù)修改。 (3)運(yùn)行時(shí)錯(cuò)誤 指VB在編譯通過(guò)后,運(yùn)行代碼時(shí)發(fā)生的錯(cuò)誤,一般是由于指令代碼執(zhí)行了非法操作引起的,如:數(shù)據(jù)類(lèi)型不匹配、試圖打開(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ò),需要用戶(hù)自己分析判斷。 4.程序調(diào)試方法 (1)進(jìn)入/退出中斷狀態(tài) 進(jìn)入中斷狀態(tài)有四種方法: (2) 利用調(diào)試窗口 1) 立即窗口 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)視類(lèi)型在運(yùn)行時(shí)顯示在監(jiān)視窗口,根據(jù)設(shè)置的監(jiān)視類(lèi)型進(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á)式的值都可以看到。 |
|