試想,若不經由迴圈幫助,那要計算10!要花你多少時間呢?
語法 | For 計數變數=起始值 To 終止值(Step 間隔值)
Next (計數變數) 結束 |
若間隔值為0會有什麼結果?
製作程式(ex7_001.exe):
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("現在的計數變數為:" & i, MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "計數變數值(已跳出迴圈)") |
步驟 | i值 | 註 |
1 | 1 | 第一次迴圈開始 |
2 | 3 | 第一次迴圈結束 |
3 | 3 | 第二次迴圈開始 |
4 | 5 | 第二次迴圈結束 |
5 | 5 | 第三次迴圈開始 |
6 | 7 | 第三次迴圈結束 |
7 | 7 | 第四次迴圈開始 |
8 | 9 | 第四次迴圈結束 |
9 | 9 | 第五次迴圈開始 |
10 | 11 | 第五次迴圈結束 |
11 | 11 | 此時計數變數i已不符合<=10,故跳出迴圈 |
,程式由Next之下一行繼續(也就是另一個MsgBox) |
以上兩功能可方便設計者除錯(Debug)
「偵錯」->「逐步執行」(或按F8),再「偵錯」->「快速監看式」,此時選出要監看的運算式(變數)->「加入監看式」可讓設計者看到變數的變化,亦可使用即時運算視窗,來觀察變數(將滑鼠移至變數旁,亦會顯示目前的變數值)。
例:等差級數(請對應下方之程式碼)
S為1,2,3,……10之級數和
S=1+2+3+……+10,其中首項為1、公差為1末項為10
步驟 | i值 | sum值 | 註 |
1 | 1 | 0 | |
2 | 1 | 0 | 第一次迴圈開始 |
3 | 1 | 0+1=1 | |
4 | 2 | 1 | 第一次迴圈結束 |
5 | 2 | 1 | 第二次迴圈開始 |
6 | 2 | 1+2=3 | |
7 | 3 | 3 | 第二次迴圈結束 |
8 | 3 | 3 | 第三次迴圈開始 |
9 | 3 | 3+3=6 | |
10 | 4 | 6 | 第三次迴圈結束 |
… | |||
11 | 55 | 第10次迴圈結束 | |
11 | 55 | 計數變數 i>終止值 ,故停止迴圈 | |
11 | 55 |
製作程式(ex7_0.exe):
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click |
試計算1~1000 之3的倍數和
製作程式(ex7_1.exe):計算等差級數、顯示等差數列的程式(如時間不足,給同學看執行結果即可)
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer For i = first To last Step dif Next i Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer
|
利用If Then Else將例題中 "顯示等差數列"最後的","不顯示
For i = first To last Step dif End If Next i |
While 是依條件執行的迴圈
和While相似 ,是依條件執行的迴圈,但更有彈性。
語法 | If 條件式 Then 程式敘述 |
5-4 比較運算子
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("您是否要退出此程式? 按 Y 退出 按 N 繼續", "確認視窗") If a = "Y" Then MsgBox("謝謝您的使用!", , "確認視窗") MsgBox("程式結束", , "程式結束視窗") '不管輸入為何都會執行至此行 |
語法 | If 條件式
Then Else End If 結束 |
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load a = InputBox("要使用VB嗎? 按(1)表示要,其他數字表示不要", "選擇視窗") '''改變變數資料型別 If a = 1 Then Else End If End Sub |
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If a = 1 Then '''''''''''''''''''''''''''''''''''''''以下是第二層If then Else程式''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim b As Integer b = InputBox("要使用外網嗎? 按(2)表示要,其他數字表示不要", "第二層If then Else程式開始") Else End If '''''''''''''''''''''''''''''''''''''''以上是第二層If then Else程式''''''''''''''''''''''''''''''''''''''''''''''''''''' End If End Sub |
語法 | Select Case 變數 Case
數值1 Case
數值2 … … Case
數值N Case Else End Select 結束 |