繰り返しブロック

最終更新日: 2022年7月25日

繰り返しのブロック

「繰り返し」タブのブロックは次の通りです。

繰り返しブロック一覧

Xを~から~までNずつカウントする

画面に入力された「〜から」と「〜まで」の数値から、順に加算した結果を求めるサンプルを用意しました。

「から」を "1" とし、「まで」を "10" としたとき、1+2+3+⋯+10 を計算します。

〜から〜までの和を求める

これをブロックで実現した例を示します。

〜から〜までの和を求めるブロック

「カウントする」ブロックは変数 "i" をカウンタとして使います。"i" の名前は自由に変更できます。

変数iの名前を変更できる

「カウントする」ブロックは「〜から」「〜まで」「いくつずつ」という3箇所(3つのパラメータ)を設定する必要があります。

3つのパラメータを設定する

「合計」はこのブロックで使う変数です。変数の詳細は「変数の宣言と値の確認」をお読みください。

リストAの各項目Bについて~を実行する

「リスト」とは、複数の "要素" の "集まり" をいいます。通常、要素は「同じ型」の集合です。例えば数値型の値が集まったリストや、文字列型の値が集まったリスト、になります。

※ 数値や文字、日付が混在したリストを作ることはできます。ただ要素がばらばらだと操作が難しくなるため、そのようなリストを前提としない方がよいです。

ここでは3つの値 1,2,3 が含まれるリストを用意し、そのリストを一つずつ操作する例を示します。(例では足し算の操作を行っています。)

リストの作成の詳細はこちらをお読みください。

リストを操作するブロック

リストを操作するブロックは、リストに入っている要素を順番にとりだし、一時変数 "i" にその値を格納します。つまりリストの実行ブロックでは変数 i の値は 1,2,3 と変わっていきます。

変数の名前は任意に変更することができます。

リスト内で利用される変数の名前を変更する

取得の順番

リストに格納された値を取得する場合、取得順は保証されません。そのため、順番を前提にしたブロックは組み立てないようにしてください。

なお、リストの操作前に「並び替え」を行うと、指定した順番で取り出すことができます。

処理をN回繰り返す

「N回繰り返すブロック」は指定した回数分だけ、処理(複数のブロック)を実行します。

パラメータには固定値(数値)もしくは変数、モデル項目(数値型)を指定することができます。

N回繰り返すブロック

ここでは指定した回数だけ、1から順に加算する処理を行うサンプルを紹介します。

加算を行う処理の例

「合計」と「加算する値」はこのブロックで使う変数です。変数の詳細は「変数の宣言と値の確認」をお読みください。

条件によって繰り返す

条件によって繰り返すブロックは、「続ける条件」または「終了する条件」を指定することができます。

条件によって繰り返すブロック

ここでは「続ける条件」とし、指定した回数だけ加算する処理を行ってみました。

続ける条件を使って加算を行う

「終わる条件」の場合、判断部分の条件式が変わります。

終わる条件を使って加算を行う

「合計」と「ループカウンタ」はこのブロックで使う変数です。変数の詳細は「変数の宣言と値の確認」をお読みください。

ループから抜け出す/続行する

抜け出す

条件を満たした場合に強制的にループから抜け出す、という処理を加えることもできます。

次の例は、合計値が 999 より大きい場合にはループを抜けるようにしています。つまりこの加算処理は 999 までの足し算が上限、となります。

ループから抜け出すブロック

続行する

条件を満たした場合にループの最後に移動する(つまり、次のループを開始する)という処理を加えることもできます。

次の例は、奇数の場合は合計を加算する処理をスキップします。ループカウンタが 0,2,4,.. と偶数の場合だけ加算するようになります。

ループを続行するブロック

無限ループ

ループの終了条件を誤って、ループが終了しなくなることを「無限ループ(になった状態)」と呼びます。

次の例は無限ループになってしまいます。どこが問題でしょうか?

無限ループになってしまうブロックの例

ループカウンタが 0 のときは(偶数なので)問題ありません。次のループで、ループカウンタが 1 になると奇数なので「ループの次の反復処理を実行」します。このとき、ループカウンタを1増やすブロックが処理されないことに注意してください。そのため、次のループにはいったとき、ループカウンタは 1 のままです。以降、このループは延々と回り続けます。

無限ループになってしまうブロックの例

対策

ループを強制的に終了する時間(タイムアウト)を設定します。標準では10秒となっています。最大は180秒ですので、この「繰り返す」ブロックは180秒以内で終了するようにしてください。

タイムアウトの設定

この例では無限ループになりますが、10秒後に強制終了となります。画面に警告メッセージが出力され、また、ログにも同じく警告が記録されます。

無限ループの強制終了