コマンドを学ぼう: ブロック

条件によって処理内容をまとめたいときに使うコマンドです。

ブロック〜ブロック終了の間に設定されたコマンドは、ブロックコマンドの条件によって実行されるかどうかが決まります。
V9以降のブロックコマンドは、機能が追加され更に便利になっているので、ここで、パターン分けして使い方を整理しておきます。

ブロック11.ブロックIf
基本です。
ブロックコマンドの条件がTrueのとき、ブロック終了までのコマンドが実行されます。
ブロックコマンドの条件がFalseのときは、ブロック終了までのコマンドは実行されず、処理はブロック終了までスキップします。

ブロック22.ブロックIf + Else(条件なし)
ブロックIfの条件がTrueのとき、その直下からブロックElseまでのコマンドが実行されます。
その後、ブロックElseからブロック終了まではコマンドが実行されず、処理はブロック終了までスキップします。
ブロックIfの条件がFalseのとき、処理はブロックElseまでスキップされ、ブロックElseからブロック終了までのコマンドが実行されます。

ブロック33.ブロックIf + Else(条件あり)
ブロックIfの条件がTrueのとき、その直下から最初のブロックElseまでのコマンドが実行されます。
その後、ブロックElseからブロック終了まではコマンドが実行されず、処理はブロック終了までスキップします。
ブロックIfの条件がFalseのとき、処理はブロックElseまでスキップされ、ブロックElseの条件を評価します。
Trueになる条件のブロックを処理すると、以降のブロックElseからブロック終了まではコマンドが実行されず、処理はブロック終了までスキップします。
最後のブロックElseに条件を設定しなければ、それまでの条件に該当しないとき(その他のとき)という使い方ができます。

ブロック44.ブロックIfのネスト
ブロックIfはネストして使うことができます。
ブロックIfからブロック終了の間に、別のブロックIfからブロック終了を設定する使い方です。
この場合、中に入っているブロック内のコマンドは、最初のブロックIfの条件がTrueで、且つ、そのブロックコマンドの条件もTrueのときだけ実行されます。
例では、「条件フラグ = 0」 AND 「数量 > 0」のときに、コールコマンドが実行されます。

ブロック55.ブロックLoop
繰り返し処理をさせることができます。
ブロックLoopの条件がTrueの間、その中のコマンドを繰り返し実行します。
合わせて覚えておきたいのがLoopCounterという関数です。
これは、ブロックLoopを何回処理したかを取得する関数です。
10回ループさせたいときは、ブロックLoopの条件を「LoopCounter () <= 10」(10以下)とします。
「LoopCounter () = 10」としてしまうと、1回も処理されません。