跳转到内容

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 可以通过提供以逗号分隔的表达式序列来使用多个表达式。

华夏公益教科书