繰り返しブロック
最終更新日: 2022年7月25日
「繰り返し」タブのブロックは次の通りです。
画面に入力された「〜から」と「〜まで」の数値から、順に加算した結果を求めるサンプルを用意しました。
「から」を "1" とし、「まで」を "10" としたとき、1+2+3+⋯+10 を計算します。
これをブロックで実現した例を示します。
「カウントする」ブロックは変数 "i" をカウンタとして使います。"i" の名前は自由に変更できます。
「カウントする」ブロックは「〜から」「〜まで」「いくつずつ」という3箇所(3つのパラメータ)を設定する必要があります。
「合計」はこのブロックで使う変数です。変数の詳細は「変数の宣言と値の確認」をお読みください。
「リスト」とは、複数の "要素" の "集まり" をいいます。通常、要素は「同じ型」の集合です。例えば数値型の値が集まったリストや、文字列型の値が集まったリスト、になります。
ここでは3つの値 1,2,3 が含まれるリストを用意し、そのリストを一つずつ操作する例を示します。(例では足し算の操作を行っています。)
リストを操作するブロックは、リストに入っている要素を順番にとりだし、一時変数 "i" にその値を格納します。つまりリストの実行ブロックでは変数 i の値は 1,2,3 と変わっていきます。
変数の名前は任意に変更することができます。
リストに格納された値を取得する場合、取得順は保証されません。そのため、順番を前提にしたブロックは組み立てないようにしてください。
「N回繰り返すブロック」は指定した回数分だけ、処理(複数のブロック)を実行します。
パラメータには固定値(数値)もしくは変数、モデル項目(数値型)を指定することができます。
ここでは指定した回数だけ、1から順に加算する処理を行うサンプルを紹介します。
「合計」と「加算する値」はこのブロックで使う変数です。変数の詳細は「変数の宣言と値の確認」をお読みください。
条件によって繰り返すブロックは、「続ける条件」または「終了する条件」を指定することができます。
ここでは「続ける条件」とし、指定した回数だけ加算する処理を行ってみました。
「終わる条件」の場合、判断部分の条件式が変わります。
「合計」と「ループカウンタ」はこのブロックで使う変数です。変数の詳細は「変数の宣言と値の確認」をお読みください。
条件を満たした場合に強制的にループから抜け出す、という処理を加えることもできます。
次の例は、合計値が 999 より大きい場合にはループを抜けるようにしています。つまりこの加算処理は 999 までの足し算が上限、となります。
条件を満たした場合にループの最後に移動する(つまり、次のループを開始する)という処理を加えることもできます。
次の例は、奇数の場合は合計を加算する処理をスキップします。ループカウンタが 0,2,4,.. と偶数の場合だけ加算するようになります。
ループの終了条件を誤って、ループが終了しなくなることを「無限ループ(になった状態)」と呼びます。
次の例は無限ループになってしまいます。どこが問題でしょうか?
ループカウンタが 0 のときは(偶数なので)問題ありません。次のループで、ループカウンタが 1 になると奇数なので「ループの次の反復処理を実行」します。このとき、ループカウンタを1増やすブロックが処理されないことに注意してください。そのため、次のループにはいったとき、ループカウンタは 1 のままです。以降、このループは延々と回り続けます。
ループを強制的に終了する時間(タイムアウト)を設定します。標準では10秒となっています。最大は180秒ですので、この「繰り返す」ブロックは180秒以内で終了するようにしてください。
この例では無限ループになりますが、10秒後に強制終了となります。画面に警告メッセージが出力され、また、ログにも同じく警告が記録されます。
繰り返しのブロック
Xを~から~までNずつカウントする
リストAの各項目Bについて~を実行する
取得の順番
処理をN回繰り返す
条件によって繰り返す
ループから抜け出す/続行する
抜け出す
続行する
無限ループ
対策