基本的流程控制:GoTo強制跳躍
要使用強制跳躍敘述GoTo必須先要有『標記』存在。
例如: GoTo L20 ��’跳至標記為L20的敘述
Print 50
Print 100
L20:Print 500 ��’標記為L20的敘述
設定標記
原則:
1.標記必須放在敘述之前,並以冒號:隔開
2.標記後可無敘述,但冒號:不可省略
3.已使用的標記不可重複
4.數字標記後的冒號:可以省略
例如:789:Print "abc"
345:Print "abc"
標記_10:Print "abc"-�� ’標記可為中文
GoTo敘述
GoTo敘述可以跳到前面的敘述也可以跳到後面的敘述,但要小心無窮迴圈的發生。
例如:Private Sub Command1_Click()
A100: X = 100
Print X
GoTo A100
End Sub
當程式執行後即使按下結束命令鈕都沒用,整個系統都無法使用,唯一的辦法是按下Ctrl+Break進入中斷模式,然後再結束程式。
避免無窮迴圈的敘述
If-Then-GoTo
用法:If 條件式 Then GoTo 標記
例如: Private
Sub Command1_Click()
x = 1
A100: Print x
x = x + 1
If x <= 5 Then GoTo A100
End Sub
研究:原基礎程式設計教學的習題,原始程式如下
Private Sub Command1_Click()
X = Val(InputBox("請輸入平常成績", "平常成績輸入",
"100"))
Y = Val(InputBox("請輸入期中考成績", "期中考成績輸入",
"100"))
Z = Val(InputBox("請輸入期末考成績", "期末考成績輸入",
"100"))
Ans = X * 0.4 + Y * 0.3 + Z * 0.3
PRINT "學期成績為"; Ans ; "分"
End Sub
現在進階操作檢查輸入的分數是否在0到100之間,若不是則重做輸入程式
Private Sub Command1_Click()
AA:
X = Val(InputBox("請輸入平常成績", "平常成績輸入",
"100"))
IF X < 0 or X > 100 Then GoTo AA
BB:
Y = Val(InputBox("請輸入期中考成績", "期中考成績輸入",
"100"))
IF Y < 0 or Y > 100 Then GoTo BB
CC:
Z = Val(InputBox("請輸入期末考成績", "期末考成績輸入",
"100"))
IF Z < 0 or Z > 100 Then GoTo CC
Ans = X * 0.4 + Y * 0.3 + Z * 0.3
PRINT "學期成績為"; Ans ; "分"
End Sub
有判斷能力的流程控制:If 敘述
不用配合GoTo 的 If Then敘述
格式:If 條件式 Then 敘述
例如:求解絕對值
S=Val(InputBox("輸入數值")
If S < 0 Then S = -S
Print S
研究:上一單元完成的『學期成績計算』程式可修改如下:
Private Sub Command1_Click()
AA:
X = Val(InputBox("請輸入平常成績", "平常成績輸入",
"100"))
If X < 0 Or X > 100 Then MsgBox
"分數不正確,請重新輸入": GoTo AA
BB:
Y = Val(InputBox("請輸入期中考成績", "期中考成績輸入",
"100"))
If Y < 0 Or Y > 100 Then MsgBox
"分數不正確,請重新輸入": GoTo BB
CC:
Z = Val(InputBox("請輸入期末考成績", "期末考成績輸入",
"100"))
If Z < 0 Or Z > 100 Then MsgBox "分數不正確,請重新輸入": GoTo CC
Ans = X * 0.4 + Y * 0.3 + Z * 0.3
Print "學期成績為"; Ans; "分"
End Sub
If Then Else 敘述
格式:If 條件式 Then
敘述區塊 1
Else
敘述區塊 2
End If
研究:上一單元完成的『學期成績計算』程式中,可將最後成績結果以訊息視窗顯示及格與否:
Private Sub Command1_Click()
AA:
X = Val(InputBox("請輸入平常成績", "平常成績輸入",
"100"))
If X < 0 Or X > 100 Then MsgBox
"分數不正確,請重新輸入": GoTo AA
BB:
Y = Val(InputBox("請輸入期中考成績", "期中考成績輸入",
"100"))
If Y < 0 Or Y > 100 Then MsgBox
"分數不正確,請重新輸入": GoTo BB
CC:
Z = Val(InputBox("請輸入期末考成績", "期末考成績輸入",
"100"))
If Z < 0 Or Z > 100 Then MsgBox "分數不正確,請重新輸入": GoTo CC
Ans = X * 0.4 + Y * 0.3 + Z * 0.3
If Ans >= 60 Then
MsgBox "學期成績為" & Ans &",及格"
Else
MsgBox "學期成績為" & Ans & ",不及格"
End If
End Sub
逐一過濾條件的
ElseIf
格式:If 條件式1 Then
敘述區塊 1
ElseIf 條件式2
Then
敘述區塊 2
、
、
ElseIf 條件式N Then
敘述區塊 N
ElseIf 條件式N+1
Then
敘述區塊 N+1
End If |
例題:輸入正整數並判斷其位數
Private Sub Command1_Click()
L10:
N = Val(InputBox("請輸入一正整數"))
If N < 0 Then MsgBox "請輸入正整數!": GoTo L10
If N < 10 Then
Print N; "一位數"
ElseIf N < 100 Then
Print N; "二位數"
ElseIf N < 1000 Then
Print N; "三位數"
Else
Print N; "四位數(含)以上"
End If
End Sub |
|