跳轉到內容

BlitzMax/語言/程式流程

來自華夏公益教科書,開放的書籍,為開放的世界

本節介紹影響程式執行流程的命令。

While/Wend 迴圈

[編輯 | 編輯原始碼]

While/Wend 迴圈在表示式計算結果為真時繼續執行。

While 表示式
語句
Wend

Repeat/Until 迴圈

[編輯 | 編輯原始碼]

Repeat/Until 迴圈在表示式計算結果為真時停止執行。

Repeat
語句
Until 表示式

Repeat/Until 迴圈中的語句至少會執行一次,因為終止表示式只在迴圈底部進行計算。

Repeat/Forever 迴圈

[編輯 | 編輯原始碼]

Repeat/Forever 迴圈會一直執行下去。

Repeat
語句
Forever

For/To/Next 迴圈

[編輯 | 編輯原始碼]

For/To/Next 迴圈在數值索引變數的值超過退出值時停止執行。索引變數在每次迴圈迭代時都會自動更新,增加步長值。請注意,退出值是包含的 - 迴圈通常會在索引變數等於退出值時執行一次,然後終止。

For 索引變數 = 起始值 To 結束值 Step 步長值
語句
Next

'Step' 部分是可選的,在這種情況下,索引變數將以 1 為增量進行步進。步長值也必須是常量。

退出值只在迴圈開始時計算一次。這意味著將其用作退出值的複雜或“慢”程式碼是安全的。

你也可以透過在索引變數前使用 Local 關鍵字來宣告一個新的區域性變數作為索引變數。當迴圈終止時,此類區域性變數在迴圈外部不可見。

For/Until/Next 迴圈

[編輯 | 編輯原始碼]

For/Until/Next 迴圈的工作方式類似於 For/To/Next 迴圈,不同的是,當索引變數等於結束值時迴圈會終止 - 換句話說,結束值是不包含的。當需要計算“直到”某個值,但不包括該值時,這很有用。

For 索引變數 = 起始值 Until 結束值 Step 步長值
語句
Next

'Step' 部分是可選的,在這種情況下,索引變數將以 1 為增量進行步進。步長值也必須是常量。

退出值只在迴圈開始時計算一次。這意味著將其用作退出值的複雜或“慢”程式碼是安全的。

你也可以透過在索引變數前使用 Local 關鍵字來宣告一個新的區域性變數作為索引變數。當迴圈終止時,此類區域性變數在迴圈外部不可見。

退出和繼續

[編輯 | 編輯原始碼]

Exit 命令可用於退出 WhileRepeatFor 迴圈。迴圈將終止,程式流程將轉移到迴圈後的第一個命令。

Continue 命令可用於強制 WhileRepeatFor 迴圈從迴圈的“頂部”重新開始執行,跳過迴圈中剩餘的任何語句。

ExitContinue 都可以後跟一個可選的識別符號。此識別符號必須與之前宣告的 迴圈標籤 匹配,這允許你退出或繼續特定的迴圈,而不一定是“最近”的迴圈。

要宣告迴圈標籤,請在 WhileRepeatFor 迴圈之前使用 #識別符號語法。例如,當 k 和 j 都等於 5 時,此程式將退出兩個迴圈。

Strict
Local k,j
#Label1   'loop label
For k=1 To 4
#Label2    'another loop label (unused in this example)
For j=1 To 4
Print k+","+j
If k=3 And j=3 Exit Label1
Next
Next

請注意,迴圈標籤只在嚴格模式下可用。在非嚴格模式下,請使用 Goto 代替。

If/Then 塊

[編輯 | 編輯原始碼]

BlitzMax 提供了經典的 BASIC“單行”風格的 If/Then 語句...

If 表示式 Then 語句 Else 語句

...以及更現代的塊等價物...

If 表示式
語句
Else If 表示式
語句
Else
語句
EndIf

在這兩種形式中,Then 關鍵字都是可選的。

註釋:請注意,單行 If/ElseIf/Else 語句也受支援,然後可以使用 .. 行延續符號在多行上拆分。

Select/Case 塊

[編輯 | 編輯原始碼]

Select/Case 塊允許你簡化複雜的條件測試。選擇表示式與每個 case 表示式進行比較,如果發現相等,則執行相應 case 塊中的程式程式碼。如果沒有找到匹配的 case,則執行可選的 default 塊中的程式程式碼。

Select 表示式
Case 表示式
語句
Default
語句
End Select

Default 部分是可選的。

選定值只計算一次,在檢查每個 case 之前。

每個 case 可以透過提供以逗號分隔的表示式序列來使用多個表示式。

華夏公益教科書