观念的VB6教本PPT课件

上传人:工**** 文档编号:579168753 上传时间:2024-08-26 格式:PPT 页数:86 大小:701.50KB
返回 下载 相关 举报
观念的VB6教本PPT课件_第1页
第1页 / 共86页
观念的VB6教本PPT课件_第2页
第2页 / 共86页
观念的VB6教本PPT课件_第3页
第3页 / 共86页
观念的VB6教本PPT课件_第4页
第4页 / 共86页
观念的VB6教本PPT课件_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《观念的VB6教本PPT课件》由会员分享,可在线阅读,更多相关《观念的VB6教本PPT课件(86页珍藏版)》请在金锄头文库上搜索。

1、新觀念的 VB6 教本第七章 讓程式轉彎的控制敘述 7-1 強制跳躍的 GoTo強制跳躍 GoTon nGoTo 是 跳到 的意思,執行之後可以跳到前面的敘述,也可以跳到後面的敘述,但运用 GoTo 以前必須先有標記存在。 標記的設定 n n設定標記的方法非常簡單,只需把標記名稱加設定標記的方法非常簡單,只需把標記名稱加在敘述前面,並且用在敘述前面,並且用 : : 分開即可,例如:分開即可,例如: 標記設定 - 完好的規則n n標記必須放在敘述的前面,並且以冒號標記必須放在敘述的前面,並且以冒號 : : 分隔。分隔。n n標記之後可以不用接續任何敘述,唯標記之後可以不用接續任何敘述,唯 : :

2、 仍不可仍不可省略。省略。n n標記的命名規則與變數的命名規則一標記的命名規則與變數的命名規則一样样,有關,有關變數的命名規則請參考變數的命名規則請參考2-52-5節變數與常數。節變數與常數。n n除了標記名稱可以作為標記之外,數字除了標記名稱可以作為標記之外,數字0 021474836472147483647也可以作為標記,假也可以作為標記,假设设以數字作為以數字作為標記,與敘述分隔用的標記,與敘述分隔用的 : : 可以省略。可以省略。 n n已运用的標記不能重複运用。已运用的標記不能重複运用。 標記設定 - 正確的运用法 使使 用用 例例 說說 明明 123: 123: PrintPrin

3、t 數字標記數字標記 2000 2000 Print 2000 Print 2000 年年 數字標記後面的數字標記後面的 : : 可以省略可以省略 標記標記_ _X: X = 10X: X = 10 標記名稱也可以使標記名稱也可以使用中文用中文 Label_A:Label_A: 標記後面可以不必標記後面可以不必接續任何敘述接續任何敘述 標記設定 - 錯誤的运用法 錯誤的使用例錯誤的使用例 說說 明明 9999999999: 9999999999: X = 10X = 10 數字標記超過數字標記超過 0 02147483647 2147483647 的範圍的範圍 Label-X: PrintLa

4、bel-X: Print 使用減號使用減號 - -,不符,不符合命名規則合命名規則 100: 100: Print 100Print 100 100: 100: Print 200Print 200標記標記 100 100 重複使用重複使用 GoTo 敘述 n nGoTo 可以跳到前面的敘述,也可以跳到後面的敘述,但是當 GoTo 跳到前面的敘述時,要特別小心,請觀察以下例子: GoTo 敘述 - 無窮迴圈 每次執行到每次執行到 GoTo L10 GoTo L10 之後,都會回到前面的敘述重新之後,都會回到前面的敘述重新執行,進入所謂的無窮迴圈,結果會發現整個系統都執行,進入所謂的無窮迴圈,結

5、果會發現整個系統都變得不能操作了,即使是按結束命令鈕也沒有效,這變得不能操作了,即使是按結束命令鈕也沒有效,這時候挽救方法是按下時候挽救方法是按下 Ctrl Ctrl 鍵鍵+Break +Break 鍵,讓鍵,讓 VB VB 進入中進入中斷方式,然後再結束程式。斷方式,然後再結束程式。 GoTo 敘述 - 溢位的示誤訊息(1) n n出現在無窮迴圈的另一個現象是溢位的示誤訊息,例如以下是一個連續列印 1、2、3的程式: GoTo 敘述 - 溢位的示誤訊息(2)這是一個無窮迴圈的程式,所以迴圈中的這是一個無窮迴圈的程式,所以迴圈中的 I% = I% = I% + 1 I% + 1 會不斷地被執行

6、,使會不斷地被執行,使 I% I% 值不断往上加,值不断往上加,最後加到最後加到3276832768,就超過了整數型別的最大容,就超過了整數型別的最大容量,所以量,所以 VB VB 便發出溢位的訊息。便發出溢位的訊息。If-Then-GoTo n n防止無窮迴圈,可在防止無窮迴圈,可在 GoTo GoTo 前面添加條件式的前面添加條件式的判斷,以決定能否讓判斷,以決定能否讓 GoTo GoTo 繼續往回跳,运用繼續往回跳,运用的敘述是:的敘述是: If If 條件式條件式 Then GoTo Then GoTo 標記標記 n n假设假设 條件式條件式 成立,就跳到成立,就跳到 標記標記 所在的

7、敘述所在的敘述來執行,否則就向下執行。來執行,否則就向下執行。 If-Then-GoTo 的實例研讨改良第四章 score.vbp 專案程式 - 假设运用者輸入的成績小於0或大於100,則要求其重新輸入。原程式如下:Private Sub Command1_Click()Private Sub Command1_Click() A = Val(InputBox( A = Val(InputBox(請輸入請輸入 數學數學 成績成績) B = Val(InputBox( B = Val(InputBox(請輸入請輸入 英文英文 成績成績) C = Val(InputBox( C = Val(Inp

8、utBox(請輸入請輸入 國文國文 成績成績) Print Print 平均分數平均分數=; (A + B + C) / 3=; (A + B + C) / 3End Sub End Sub If-Then-GoTo 的實例研讨 Step1n n檢檢查查运用者輸入的數學成績能否位於运用者輸入的數學成績能否位於0 0100100區間,假區間,假设设不是,則跳回不是,則跳回A = Val(InputBox(“A = Val(InputBox(“請輸入請輸入 數學數學 成績成績) )敘敘述之前,程式如下:述之前,程式如下:n n因此只需因此只需A A小於小於0 0或或A A大於大於100100,程式

9、都會跳回,程式都會跳回L10L10的標記位置,緊接著又會執行的標記位置,緊接著又會執行 InputBox InputBox 敘敘述,要求运用者重新輸入數學成績。述,要求运用者重新輸入數學成績。 L10: A = Val(InputBox(請輸入數學成績(0100) If A 100 Then Goto L10If-Then-GoTo 的實例研讨 Step2改良後完好的程式如下:Private Sub Command1_Click()Private Sub Command1_Click()L10:L10: A = Val(InputBox( A = Val(InputBox(請輸入請輸入 數學數

10、學 成績成績(0(0100)100) If A 100 Then Goto L10 If A 100 Then Goto L10L20:L20: B = Val(InputBox( B = Val(InputBox(請輸入請輸入 英文英文 成績成績(0(0100)100) If B 100 Then Goto L20 If B 100 Then Goto L20L30:L30: C = Val(InputBox( C = Val(InputBox(請輸入請輸入 國文國文 成績成績(0(0100)100) If C 100 Then Goto L30 If C 100 Then Goto L30

11、 Print Print 平均分數平均分數=; (A + B + C) / 3=; (A + B + C) / 3End Sub End Sub 7-2 有條件執行的 If 敘述 If-Then 格式 n n其實 If-Then 不一定要配合 GoTo 一同运用,比較通則性的 If-Then 格式是:n n If 條件式 Then 敘述n n假设 條件式 成立,就執行 Then 之後的 敘述,否則繼續向下執行。其中 敘述 部份可以是任何符合規定的敘述,例如將它換成 GoTo 敘述,就變成了上一節所看到的 If-Then-GoTo 格式,If-Then 敘述在程式設計中非经常用。If-Then

12、的實例練習 n n求 X 的絕對值X = Val(InputBox(X = Val(InputBox(請輸入一數請輸入一數值值)If X 0 Then X = -XIf X 0 Then X = -XPrint X Print X If-Then Then 後面執行多行敘述 n n假设要在 Then 後面執行多個敘述,用敘述分隔符號 : 逐一把 Then 後面的敘述隔開來即可,例如:n n If I 10 Then Print I : I = I + 1 : GoTo L10 敘述 1 敘述 2 敘述 3If-Then 的實例研讨 n n假设运用者輸入的成績小於假设运用者輸入的成績小於 0 0

13、 或大於或大於 100 100,則先,則先顯示一個訊息窗,然後才要求其重新輸入。顯示一個訊息窗,然後才要求其重新輸入。Private Sub Command1_Click()Private Sub Command1_Click()L10:L10: A = Val(InputBox( A = Val(InputBox(請輸入請輸入 數學數學 成績成績(0(0100)100) If A 100 Then MsgBox If A 100 Then MsgBox 超出範圍超出範圍, , 請重輸入請重輸入! : Goto L10! : Goto L10L20:L20: B = Val(InputBox(

14、 B = Val(InputBox(請輸入請輸入 英文英文 成績成績(0(0100)100) If B 100 Then MsgBox If B 100 Then MsgBox 超出範圍超出範圍, , 請重輸入請重輸入! : Goto L20! : Goto L20L30:L30: C = Val(InputBox( C = Val(InputBox(請輸入請輸入 國文國文 成績成績(0(0100)100) If C 100 Then MsgBox If C 100 Then MsgBox 超出範圍超出範圍, , 請重輸入請重輸入! : Goto L30! : Goto L30 Print P

15、rint 平均分數平均分數=; (A + B + C) / 3=; (A + B + C) / 3End SubEnd Sub結構化的 If-Then 格式(1) n n當 Then 後面的敘述很多時,整個 If-Then 敘述將會拖得很長,對閱讀來說非常不方便,所以 VB 又提供了另一種比較結構化的 If-Then 格式: 結構化的 If-Then 格式(2) n n介於介於 Then Then 及及 End If End If 間的敘述稱敘述區塊,間的敘述稱敘述區塊,所以有時候這個格式會表示成:所以有時候這個格式會表示成:n n而在寫法上,我們通常會將整個敘述區塊後退幾而在寫法上,我們通常

16、會將整個敘述區塊後退幾格,讓程式更容易閱讀,例如:格,讓程式更容易閱讀,例如: If If 條件式條件式 Then Then 敘述區塊敘述區塊End If End If If-Then-Else 格式(1) n n有時候我們會說:假设就做第一件事,否則就做第二件事。,這表示成 VB 的敘述是: If-Then-Else 格式(2)n n結構化的寫法: If-Then-Else 實例研讨(1)n在所完成的計算平均分數程式中,最後以訊息窗顯示平均分數能否及格。If-Then-Else 實例研讨(2)Private Sub Command1_Click()Private Sub Command1_C

17、lick()L10:L10: A = Val(InputBox( A = Val(InputBox(請輸入請輸入 數學數學 成績成績(0(0100)100) If A 100 Then MsgBox If A 100 Then MsgBox 超出範圍超出範圍, , 請重輸入請重輸入! : Goto L10! : Goto L10L20:L20: B = Val(InputBox( B = Val(InputBox(請輸入請輸入 英文英文 成績成績(0(0100)100) If B 100 Then MsgBox If B 100 Then MsgBox 超出範圍超出範圍, , 請重輸入請重輸入

18、! : Goto L20! : Goto L20L30:L30: C = Val(InputBox( C = Val(InputBox(請輸入請輸入 國文國文 成績成績(0(0100)100) If C 100 Then MsgBox If C 100 Then MsgBox 超出範圍超出範圍, , 請重輸入請重輸入! : Goto L30! : Goto L30 Average = (A + B + C) / 3 Average = (A + B + C) / 3 If Average = 60 Then If Average = 60 Then MsgBox MsgBox 平均分數平均分數

19、= & Average & , = & Average & , 及格及格 Else Else MsgBox MsgBox 平均分數平均分數= & Average & , = & Average & , 不及格不及格 End If End IfEnd SubEnd Sub巢狀 If 敘述 n n由於由於 If If 敘述本身也是一種敘述,所以它也可以成為敘述本身也是一種敘述,所以它也可以成為另一個另一個 If If 裡的一個敘述,而构成了裡的一個敘述,而构成了 If If 裡面又有裡面又有 If If 的情形,這種情形即稱為巢狀的情形,這種情形即稱為巢狀 If If 敘述,例如:敘述,例如: 巢

20、狀 If 敘述 - 實例研讨(1) n n輸入一正整數 N,並且判斷這個正整數是一位數、二位數、或是三位數以上 。巢狀 If 敘述 - 實例研讨(2) Private Sub Command1_Click()L10: N = Val(InputBox(“請輸入一正整數) If N 0 Then MsgBox “請輸入正整數! : Goto L10 If N 100 Then 判斷能否小於三位數 If N 10 Then 判斷能否為一位數 Print N; “一位數 敘述區塊 1-1 Else Print N; “二位數 敘述區塊 1-2 End If Else Print N; “三位數(含)

21、以上 敘述區塊 2 End IfEnd Sub逐一過濾條件的 ElseIf n n先判斷第一條件,假设第一條件不成立,再判先判斷第一條件,假设第一條件不成立,再判斷第二條件的情形,像這樣一一過濾條件的句斷第二條件的情形,像這樣一一過濾條件的句子,在子,在 VB VB 裡的敘述是:裡的敘述是: 逐一過濾條件的 ElseIf 例子n n以前面判斷一正整數以前面判斷一正整數 N N 為幾位數的程式為例,為幾位數的程式為例,利用利用 ElseIf ElseIf 逐一過濾條件,程式會變得比較容逐一過濾條件,程式會變得比較容易閱讀,如下:易閱讀,如下:If N 10 Then Print N; 一位數El

22、seIf N 100 Then Print N; 二位數ElseIf N = 18 age 18,都符合這個條件,都符合這個條件 S = 限制級限制級 End Select Print age; 歲歲可看可看; S; 電影電影End Sub 7-4 具重複執行才干的迴圈 具重複執行才干的迴圈 n n所所謂謂迴迴圈圈就就是是重重複複執執行行同同一一個個( (或或一一些些) )敘敘述述,使程式更加精簡。使程式更加精簡。n n我我們們在在7-17-1節節利利用用 GoTo GoTo 及及 If-Then If-Then 敘敘述述,寫寫了了一一個個從從1 1列列印印到到1010的的程程式式,就就是是一

23、一個個典典型型的的迴迴圈圈程程式式,不不過過用用 GoTo GoTo 來來寫寫迴迴圈圈程程式式的的缺缺點點是是不不容容易易閱閱讀讀且且容容易易出出錯錯,因因此此VBVB另另外外提提供供了了幾幾種種 控控 制制 迴迴 圈圈 的的 敘敘 述述 , 它它 們們 有有 : For-NextFor-Next、While-WendWhile-Wend、及、及Do-LoopDo-Loop。 計次執行的 For-Next(1)n n假设已經確定迴圈的執行次數,运用假设已經確定迴圈的執行次數,运用 For-Next For-Next敘述最方便,例如從敘述最方便,例如從1 1列印到列印到1010的程式是:的程式是

24、: n n在這個程式中,最重要的一個地方是變數在這個程式中,最重要的一個地方是變數 I I,它在迴圈裡的角色是一個計次器,而計次範圍它在迴圈裡的角色是一個計次器,而計次範圍是從是從1 1到到10(1 To 10)10(1 To 10),所以迴圈內的,所以迴圈內的 Print I Print I 會會執行執行1010次,也就可以從次,也就可以從1 1列印到列印到1010。 For I = 1 To 10 Print INext I計次執行的 For-Next(2)n nFor-Next 的格式: n n撰寫 For-Next 迴圈時,假设步進值等於1,則可以省略格式中的 Step 步進值,例如F

25、or I = 1 To 10即表示For I = 1 To 10 Step 1。 For 計次變數計次變數 = 起始值起始值 To 終止值終止值 Step 步進值步進值 敘述區塊敘述區塊Next 計次變數計次變數 計次執行的 For-Next(3)-1n nFor-Next For-Next 是怎麼執行迴圈的呢?其實跟起始是怎麼執行迴圈的呢?其實跟起始值值、終止終止值值、及步進、及步進值值都有關係,讓我們以前面的程都有關係,讓我們以前面的程式為例,來研式為例,來研讨讨 For Next For Next 的執行過程:的執行過程: 計次執行的 For-Next(3)-2n n第一次進入迴圈時,計

26、次變數第一次進入迴圈時,計次變數 I I 會被設定為起會被設定為起始值。始值。 n n每次執行迴圈前,本敘述都會判斷計次變數每次執行迴圈前,本敘述都會判斷計次變數 I I 能否超過終止值,假设不超過,即執行迴圈內能否超過終止值,假设不超過,即執行迴圈內的敘述,否則脫離迴圈。的敘述,否則脫離迴圈。 n n執行過迴圈內的敘述,來到執行過迴圈內的敘述,來到 Next I Next I,Next I Next I 有有兩個作用,首先會將兩個作用,首先會將 I I 值加上步進值,然後回值加上步進值,然後回到迴圈的前頭,如此循環,构成迴圈。到迴圈的前頭,如此循環,构成迴圈。 n n最後這個程式在最後這個程

27、式在 I I 值等於值等於1111時脫離迴圈。時脫離迴圈。 For-Next 步進值1時的例子 n n起始值等於起始值等於3 3,終止值等於,終止值等於2525,步進值等於,步進值等於6 6: n n這個例子這個例子 I I 值從值從 3 3 開始執行,每執行到開始執行,每執行到 Next I Next I 時,時, I I 值加值加 6 6,所以,所以 I I 值的變化過程是值的變化過程是 3 3、9 9、1515、2121、2727,到了,到了 27 27 時,由於大於終止值時,由於大於終止值2525,不再進入迴圈,所以印出的值有,不再進入迴圈,所以印出的值有 3 3、9 9、1515、2

28、121。 For I = 3 To 25 Step 6 Print INext I For-Next 步進值0時的例子(1)n nFor-Next 敘述中的步進值也可以是負數,但此時的起始值必須大於終止值,而 For-Next 判斷脫離迴圈的條件則變成:計次變數值終止值,例如: For I = 10 To 1 Step -1 Print INext IFor-Next 步進值0時的例子(2)For I = 10 To 1 Step -1 Print INext IFor-Next 實例研讨1-1n n計算計算 Sum = 1 + 2 + 3 + . + 20 Sum = 1 + 2 + 3 +

29、 . + 20。這個題目很簡。這個題目很簡單,寫成以下程式如何呢?單,寫成以下程式如何呢? n n的確很簡單,但假设題目改成的確很簡單,但假设題目改成Sum = 1 + 2 + Sum = 1 + 2 + 3 + . + 10003 + . + 1000呢?因此我們需求一個更好的方呢?因此我們需求一個更好的方法。法。Sum = 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20Print SumFor-Next 實例研讨1-2n n我們可以把 Sum = 1 + 2 + 3 + + 20 表示成: For-Next 實例研讨1-3n n而由於而

30、由於 Sum Sum 的初的初值值等於等於0 0,所以,所以Sum = Sum + 1 + 2 + Sum = Sum + 1 + 2 + 3 + + 203 + + 20等於等於Sum = 1 + 2 + 3 + + 20Sum = 1 + 2 + 3 + + 20,因此,因此Sum = 1 + 2 + 3 + + 20Sum = 1 + 2 + 3 + + 20可以視為可以視為 Sum = 0 Sum = 0、Sum Sum = Sum + 1= Sum + 1、Sum = Sum + 2 Sum = Sum + 20 Sum = Sum + 2 Sum = Sum + 20 連續運連續運

31、算的結果,算的結果, 所以运用所以运用 For For 迴圈來計算此一運算式最為迴圈來計算此一運算式最為合適,程式如下:合適,程式如下: Sum = 0 For I = 1 To 20 Sum = Sum + I Next IPrint Sum For-Next 實例研讨2-1n n計算計算 Sum = 1 + 4 + 7 + 10 + + 301 Sum = 1 + 4 + 7 + 10 + + 301。 n n這一題與上一題相類似,這一題與上一題相類似, 上一題的累加每次進上一題的累加每次進1 1(1(1、2 2、3)3), 這一題的累加則是每次進這一題的累加則是每次進3(13(1、4 4

32、、7)7), 所以同樣是运用所以同樣是运用 For For 迴圈,但步進迴圈,但步進值值等於等於 3 3,程式如下:,程式如下: Sum = 0 For I = 1 To 301 Step 3 Sum = Sum + I Next IPrint Sum While-Wend 迴圈 n n假设程式執行前已經確定迴圈要執行的次數,假设程式執行前已經確定迴圈要執行的次數,运用运用 For-Next For-Next 非常方便,假设不能確定迴圈要非常方便,假设不能確定迴圈要執行的次數,可以考慮运用執行的次數,可以考慮运用 While-Wend While-Wend 迴圈,迴圈,其格式是:其格式是: n

33、 n意思是:只需意思是:只需 條件式條件式 成立,就繞迴圈執行。成立,就繞迴圈執行。而每繞迴圈一次,須重新判斷條件式。而每繞迴圈一次,須重新判斷條件式。 While 條件式 敘述區塊WendWhile-Wend vs. For-Next n n例如從例如從 1 1 列印到列印到 10 10 的程式也可以寫成:的程式也可以寫成: n n這比起运用這比起运用 For-Next For-Next 多了兩行程式,可見知迴多了兩行程式,可見知迴圈的執行次數時,還是运用圈的執行次數時,還是运用 For-Next For-Next 比較方便。比較方便。以下例子則因不知迴圈會執行幾次,適合用以下例子則因不知迴

34、圈會執行幾次,適合用 While-WendWhile-Wend。 I = 1While I = 10 只需只需 I 10,就繞迴圈執行,就繞迴圈執行 Print I I = I + 1WendWhile-Wend 的實例一 n n計算 2048 是 2 的幾次方。 n n程式如下: Private Sub Command1_Click() N = 0 先假設是先假設是 0 次方次方 While 2N 2048 2 的的 N 次方還沒達到次方還沒達到 2048 N = N + 1 添加添加 1 次方,再試試看次方,再試試看 Wend Print 2048 是是 2 的的; N; 次方次方End

35、Sub While-Wend 的實例二n nWhile-Wend While-Wend 也經常被應用在連續性的資料輸入也經常被應用在連續性的資料輸入上面,例如:持續讀取运用者輸入的資料,並上面,例如:持續讀取运用者輸入的資料,並加以判斷處理,直到运用者輸入了加以判斷處理,直到运用者輸入了 “quit “quit 為止。為止。n n程式如下:程式如下: Private Sub Command1_Click() X = InputBox(“請輸入指令請輸入指令) While X “quit 假假设设輸入輸入 “quit,即進入迴,即進入迴圈圈 MsgBox “您輸入了您輸入了 + X X = In

36、putBox(“請輸入指令請輸入指令) 繼續讀取繼續讀取資料資料 Wend MsgBox 您輸入了您輸入了 quit,再見!,再見!End Sub迴圈的組成要件 n n舉凡迴圈都是由舉凡迴圈都是由 “ “繞行迴圈繞行迴圈 及及 “ “脫脫離迴圈或離迴圈或繼續執行的條件式繼續執行的條件式 兩種敘述所組成的,以兩種敘述所組成的,以 While-Wend While-Wend 為例:為例: n n其中其中 “ “繞行迴圈繞行迴圈 敘述的功用就跟敘述的功用就跟 GoTo GoTo 一樣,一樣,用來跳回迴圈的前頭,至於用來跳回迴圈的前頭,至於 “ “脫脫離迴圈或繼續離迴圈或繼續執行的條件式,則是讓迴圈有

37、條件地結束掉。執行的條件式,則是讓迴圈有條件地結束掉。Do-Loop 迴圈(1) n n最陽春的最陽春的 Do-Loop Do-Loop 迴圈:迴圈:n n假设我們這樣寫:假设我們這樣寫:n n將是一個無窮迴圈,因為迴圈中缺了將是一個無窮迴圈,因為迴圈中缺了 脫離迴圈或脫離迴圈或繼續執行的條件式繼續執行的條件式 。I = 1I = 1DoDo Print I Print I I = I + 1 I = I + 1LoopLoopDo-Loop 迴圈(2)n n為了讓為了讓 Do-Loop Do-Loop 能夠結束迴圈,能夠結束迴圈,VB VB 提供了提供了 While While 及及 Unt

38、il Until 兩種條件判斷的敘述,來搭配兩種條件判斷的敘述,來搭配 Do-Loop Do-Loop 运用,其中:运用,其中: n n格式一格式一 n n格式二格式二 While 表示表示 只需只需,就,就Until 表示表示 做做,直到,直到 Do While 條件式條件式 敘述區塊敘述區塊Loop Do 敘述區塊敘述區塊Loop Until 條件式條件式 Do-Loop 迴圈(3)n n格式一例子n nDo-While-Loop表示:只需 條件式 成立,就繼續執行迴圈。例如: I = 1Do While I 10 直到直到 I 10 為止,為止, 也就是也就是 I 10 時,時,脫脫離迴

39、圈。離迴圈。 Do-Loop 迴圈(5)-1n n假设比較 Do-While-Loop 及 Do-Loop-Until,我們發現 Do-While-Loop 是條件式成立時繼續執行迴圈,而 Do-Loop-Unitl 是條件式成立時脫離迴圈,除此之外,Do-While-Loop 會先判斷條件式再執行迴圈,而 Do-Loop-Until 則是先執行迴圈再判斷條件式,所以: Do-Loop 迴圈(5)-2I = 11Do While I 10 也是第一次判斷也是第一次判斷, 條件式就不成立條件式就不成立, 但迴圈但迴圈內內的敘述至少執行過一次。的敘述至少執行過一次。 Do-Loop 迴圈(6)n

40、n以下是 Do-While-Loop 及 Do-Loop-Until 的比較表: Do-Loop Do-Loop 格式格式條件式成立時條件式成立時 迴圈及條件式的先後次序迴圈及條件式的先後次序Do-While-LoopDo-While-Loop 繼續執行迴圈繼續執行迴圈 先判斷條件式,再執行迴圈先判斷條件式,再執行迴圈 Do-Loop-UntilDo-Loop-Until 脫離迴圈脫離迴圈 先執行迴圈,再判斷條件式先執行迴圈,再判斷條件式 Exit Do 與 Do-Loop(1) n nExit Do 是脫離 Do-Loop 迴圈的意思,例如: Exit Do 與 Do-Loop(2)n n假

41、设利用假设利用 Do-While-Loop Do-While-Loop 及及 Do-Loop-Until Do-Loop-Until 來來撰寫迴圈,判斷迴圈繼續執行或脫離的條件式,撰寫迴圈,判斷迴圈繼續執行或脫離的條件式,不是放在迴圈的前頭,就是後頭,但假设利用不是放在迴圈的前頭,就是後頭,但假设利用 Exit DoExit Do,再配合,再配合 If-Then If-Then 敘述的运用,則可以敘述的运用,則可以把繼續執行或脫離迴圈的條件式放在迴圈內的把繼續執行或脫離迴圈的條件式放在迴圈內的任何位置,如下:任何位置,如下: Do : If 條件式條件式 Then Exit Do :LoopE

42、xit Do 與 Do-Loop(3)n n例如:例如: n n此例中,脫離迴圈時的此例中,脫離迴圈時的 I I 值等於值等於 10 10,與前面,與前面 Do- Do-While-Loop While-Loop 或或 Do-Loop-Until Do-Loop-Until 的的 I I 值等於值等於 11 11 不不同。同。 I = 1Do Print I If I = 10 Then Exit Do 當當I=10 時時,立刻跳出立刻跳出,不再執行以下敘不再執行以下敘述述 I = I + 1Loop巢狀迴圈(1) n n在迴圈裡面也可以又有迴圈,這種情形即稱為巢狀迴圈,例如: 巢狀迴圈(2)

43、n n這個程式執行後,其輸出結果如下: 外迴圈變數外迴圈變數 1 內迴圈變數內迴圈變數 1 內迴圈變數內迴圈變數 2 內迴圈變數內迴圈變數 3外迴圈變數外迴圈變數 2 內迴圈變數內迴圈變數 1 內迴圈變數內迴圈變數 2 內迴圈變數內迴圈變數 3外迴圈變數外迴圈變數 3 內迴圈變數內迴圈變數 1 內迴圈變數內迴圈變數 2 內迴圈變數內迴圈變數 3 巢狀迴圈(3) n n我們可以看出外迴圈每執行一次,內迴圈即執行一週期(本例是 3 次),所以內迴圈內的敘述總共會被執行 33 次,即外迴圈執行次數內迴圈一週期的執行次數。n n在實際應用上,內迴圈的執行次數也經常會由外迴圈變數的值來控制。巢狀迴圈(4

44、) n n例子:n n結果印出: For I = 1 To 5 Print I =; I, J =; For J = 1 To I 內迴圈的執行次數,由內迴圈的執行次數,由外迴圈外迴圈 Print J; 變數變數 I 的值來控制。的值來控制。 Next J PrintNext II = 1 J = 1I = 2 J = 1 2I = 3 J = 1 2 3I = 4 J = 1 2 3 4I = 5 J = 1 2 3 4 57-5 程式的流程追蹤程式的流程追蹤 逐行執行程式(1) n n在程式的開發中,假设程式執行結果不正確,我們也希望能夠逐行執行,以找出問題之所在。n n在 VB 裡面,假

45、设我們按開始命令鈕啟動程式,程式會一路執行下去,直到執行完一切的敘述為止,假设我們想逐行執行程式,啟動程式的方法必須改按 F8鍵或功能表的偵錯/逐行。 逐行執行程式 實例練習n n以下程式在計算存款一年後的總金額,總金額以下程式在計算存款一年後的總金額,總金額本金本金(1+(1+年利率年利率) )。n n首先在表單上佈置一命令鈕,並且將表單的首先在表單上佈置一命令鈕,並且將表單的 AutoRedraw AutoRedraw 屬性設定為屬性設定為 True True,然後把以上程,然後把以上程式寫到命令鈕裡面。式寫到命令鈕裡面。Private Sub Command1_Click() V = 1

46、0000 本金本金 I = 0.07 年利率年利率 S = V * (1 + I) 計算總金額計算總金額 Print SEnd Sub逐行執行程式 實例練習 Step1n n按下按下 F8 F8鍵啟動程式的執行,然後按下表單上的命令鈕鍵啟動程式的執行,然後按下表單上的命令鈕啟動上述程式,接著我們可以看到程式視窗被彈到最啟動上述程式,接著我們可以看到程式視窗被彈到最前端,如下:前端,如下: n n請留意程式的第一行前面有箭號,箭號的目的在指出請留意程式的第一行前面有箭號,箭號的目的在指出下一個被執行的敘述。下一個被執行的敘述。逐行執行程式 實例練習 Step2n n接著每按 F8鍵一次,VB 就

47、會執行箭號所指的敘述,然後把箭號移到下一個敘述。 逐行執行程式 實例練習 Step3n n按 F8鍵執行 V = 10000。按 F8鍵執行 I = 0.07。按 F8鍵執行 S = V * (1 + I)。最後箭號移到 Print S上。 n n您能否留意到每按 F8鍵執行一行敘述後, VB 都會進入中斷方式,所以我們可以按 Ctrl 鍵 + G 鍵或功能表的檢視/即時運算視窗把即時運算視窗調到最前端,然後利用它來檢驗程式執行的結果。逐行執行程式 實例練習 Step4n n例如以下就是利用即時運算視窗來檢驗例如以下就是利用即時運算視窗來檢驗 V V、I I、S S 的值:的值:n n最後再按

48、下最後再按下 F8 F8 鍵執行鍵執行 Print S Print S,然後檢視表單,然後檢視表單,可看到可看到 Print S Print S 執行的結果。執行的結果。逐行執行程式 F8鍵與開始命令鈕 n nF8 鍵是逐行執行程式,開始命令鈕則是一路執行下去,不過這兩種執行方式是可以切換的。假设一開始按 F8 鍵逐行執行程式,中途想進入一路執行的方式,只需再按開始命令鈕即可;假设一開始就按開始命令鈕一路執行,想中途切到逐行執行的方式,必須先進入中斷方式(按中斷命令鈕或 Ctrl 鍵 + Break 鍵 ),接著才可以利用 逐行執行程式。 設定程式的中斷點 n n逐渐執行對於檢驗程式的執行過程

49、,當程式很大,或迴圈重複執行的次數很多時,逐行執行就要花費很多時間,所以有時候我們希望 VB 不要每執行一行都中斷一次,而只需在我們設定的地方中斷就好了,這樣子可以省去逐渐按 F8 鍵,逐行執行所浪費的時間。 設定程式的中斷點 - 實例練習n n以前一個程式為例來說明:Private Sub Command1_Click() V = 10000 I = 0.07 S = V * (1 + I) 希望在此設定中斷點希望在此設定中斷點 Print SEnd Sub設定程式的中斷點 - 實例練習Step1n n打開程式視窗,並且把輸入游標移到欲中斷的打開程式視窗,並且把輸入游標移到欲中斷的敘述上,然

50、後按下敘述上,然後按下 F9 F9鍵鍵 ,此時該行敘述前面,此時該行敘述前面會出現小圓圈,如下:會出現小圓圈,如下: n n這表示我們已經胜利地把中斷點設定在這行敘這表示我們已經胜利地把中斷點設定在這行敘述了。述了。設定程式的中斷點 - 實例練習Step2n n啟動程式的方法不是按下啟動程式的方法不是按下 F8 F8 鍵逐行執行的,鍵逐行執行的,而是按下一路執行的開始命令鈕,然後再按下而是按下一路執行的開始命令鈕,然後再按下表單上的命令鈕,啟動上述程式,程式就會不表單上的命令鈕,啟動上述程式,程式就會不断執行到中斷點的地方才暫停,如下:断執行到中斷點的地方才暫停,如下: 設定程式的中斷點 -

51、實例練習Step3n n所謂程式暫停就是進入中斷方式,所以接下來我們可以运用即時運算視窗、按 F8 鍵逐行執行,或者再按開始命令鈕繼續執行。 設定程式的中斷點 - 實例練習Step4n n設定好的中斷點,也可以依需求將它們去除,方法是把輸入游標移到中斷點的敘述上,按下 F9鍵 ,此時敘述前面的小圓圈會消逝,就表示去除中斷點了。 設定程式的中斷點 - Stop 敘述(1)n n以上方法是利用以上方法是利用 F9 F9鍵鍵 來設定中斷點,有一個來設定中斷點,有一個敘述敘述 Stop Stop 也有同樣的效果,例如:也有同樣的效果,例如: n n這樣子這樣子 VB VB 每執行到每執行到 Stop Stop 敘述時,就會暫停程敘述時,就會暫停程式進入中斷方式。式進入中斷方式。Private Sub Command1_Click() V = 10000 I = 0.07 Stop VB 執行到此一敘述即會進入中斷方式執行到此一敘述即會進入中斷方式 S = V * (1 + I) Print SEnd Sub 設定程式的中斷點 - Stop 敘述(2)n nStop 敘述的功用與 F9鍵 完全一样,但Stop 敘述可以隨著專案的儲存而一同被儲存起來,而利用 F9鍵 所設定的中斷點,則會在退出 VB 時一併消逝掉。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号