指定した回数だけ繰り返し処理を行います。
繰り返す回数がわかっていないときは WHILE-WEND(前判定)もしくはREPEAT-UNTIL(後判定)を使います。
最低1回は実行したい場合は、後判定のREPEAT-UNTILを使います。
初期値と終了値が同じ値の場合は一度だけ実行されます。
- 構文
- FOR 変数 = 初期値 TO 終了値 [STEP 刻み値]
処理NEXT
- 引数
- 戻り値
刻み値
刻み値は、通常1回のループが終了すると1加算されます。刻み値を指定するとループの度に指定された値がカウンタ変数に加算されます。刻み値は正の数・負の数どちらも指定するとこができます。刻み値に負の数を指定した場合、終了値は初期値よりも小さい値を指定する必要があります。
刻み値に整数以外を指定
刻み値に整数以外の値を指定すると、途中から値に誤差が出ることがあります。
FOR n = 0 TO 1 STEP 0.01
PRINT n
NEXT
- 結果
0 0.01 0.02 0.03 0.04 (省略) 0.8 0.81 0.820000000000001 0.830000000000001 0.840000000000001 (省略) 0.950000000000001 0.960000000000001 0.970000000000001 0.980000000000001 0.990000000000001
刻み値を整数にするため100倍し、値を使うときに100で割ると誤差を出さずに同じ処理ができます。
FOR i = 0 * 100 TO 1 * 100 STEP 0.01 * 100
i = i / 100 // 刻み値を整数にするため100倍したので1/100で補正する
NEXT
FOR i = 0 TO 100
i = i / 100
PRINT i
NEXT
以下は刻み値が0.1なので10倍して整数にする。
FOR i = 1 TO 10 STEP 0.1
NEXT
FOR i = 1 * 10 TO 10 * 10 STEP 0.1 * 10
i = i / 10 // 10倍したので1/10で補正
NEXT
FOR i = 10 TO 100
i = i / 10
NEXT
分数の場合は、初期値・終了値・刻み値に分母の値を掛けます。
FOR i = 1 TO 10 STEP 3/5
NEXT
分母の5を掛ける。
FOR i = 1 * 5 TO 10 * 5 STEP (3/5) * 5
i = i / 5 // 5倍したから1/5で補正
NEXT
FOR i = 5 TO 50 STEP 3
i = i / 5
NEXT
ループ変数の書き換え
ループ内で変数の値を書き換えても、無限ループになることはありません。FOR-TOの部分でカウンタがもとに戻ります。
FOR n = 1 TO 10
IF n = 5 THEN n = 0
PRINT n
NEXT
- 結果
1 2 3 4 0 6 7 8 9 10
ループ終了後のループ変数の値
「終了値+刻み値」になります。
FOR n = 1 TO 10
(処理)
NEXT
PRINT n
- 結果
11
FOR文をネストする
プログラミングで入れ子構造のことを「ネスト」と言います。FOR文でネストすると、2つのカウンタ変数を使用して行・列を順に処理することができます。
FOR i = 1 TO 9
FOR j = 1 TO 9
PRINT i + ” × ” + j + ” = ” + (i * j)
NEXT
NEXT
- 結果
1 × 1 = 1 1 × 2 = 2 1 × 3 = 3 1 × 4 = 4 1 × 5 = 5 1 × 6 = 6 1 × 7 = 7 1 × 8 = 8 1 × 9 = 9 2 × 1 = 2 2 × 2 = 4 2 × 3 = 6 2 × 4 = 8 2 × 5 = 10 2 × 6 = 12 2 × 7 = 14 2 × 8 = 16 2 × 9 = 18 3 × 1 = 3 3 × 2 = 6 3 × 3 = 9 3 × 4 = 12 3 × 5 = 15 3 × 6 = 18 3 × 7 = 21 3 × 8 = 24 3 × 9 = 27 4 × 1 = 4 4 × 2 = 8 4 × 3 = 12 4 × 4 = 16 4 × 5 = 20 4 × 6 = 24 4 × 7 = 28 4 × 8 = 32 4 × 9 = 36 5 × 1 = 5 5 × 2 = 10 5 × 3 = 15 5 × 4 = 20 5 × 5 = 25 5 × 6 = 30 5 × 7 = 35 5 × 8 = 40 5 × 9 = 45 6 × 1 = 6 6 × 2 = 12 6 × 3 = 18 6 × 4 = 24 6 × 5 = 30 6 × 6 = 36 6 × 7 = 42 6 × 8 = 48 6 × 9 = 54 7 × 1 = 7 7 × 2 = 14 7 × 3 = 21 7 × 4 = 28 7 × 5 = 35 7 × 6 = 42 7 × 7 = 49 7 × 8 = 56 7 × 9 = 63 8 × 1 = 8 8 × 2 = 16 8 × 3 = 24 8 × 4 = 32 8 × 5 = 40 8 × 6 = 48 8 × 7 = 56 8 × 8 = 64 8 × 9 = 72 9 × 1 = 9 9 × 2 = 18 9 × 3 = 27 9 × 4 = 36 9 × 5 = 45 9 × 6 = 54 9 × 7 = 63 9 × 8 = 72 9 × 9 = 81
多次元配列
関連記事
- FOR-IN-NEXT
- 配列やコレクションなどのグループの各要素に対して繰り返し処理を行います。
- WHILE-WEND
- ループ処理を行います。ループの始めに条件判定を行いループ内で条件を変えないと無限ループになります。条件が合わなければ処理は1度も実行されません。最低1度は処理を実行したい場合はREPEAT-UNTIL文を使います。前判定。
- REPEAT-UNTIL
- REPEAT文では、条件式がTRUEになるまで処理を行います。WHILE文と同様処理を繰り返す回数がわからないときREPEAT文を使います。ループ内で条件式の変数の値を変えないと無限ループとなるので注意が必要です。 REPEAT文は後判定でループ内の処理を実行してから条件式の確認を行うので、最低一度は処理が実行されます。