FOR-TO-NEXT

タグ:

指定した回数だけ繰り返し処理を行います。

繰り返す回数がわかっていないときは 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
配列の要素分だけ処理を繰り返します。FOR文でも書き換えられます。
WHILE-WEND
ループ処理を行います。ループの始めに条件判定を行いループ内で条件を変えないと無限ループになります。条件が合わなければ処理は1度も実行されません。最低1度は処理を実行したい場合はREPEAT-UNTIL文を使います。前判定。
REPEAT-UNTIL
ループ処理を行います。ループの終わりに条件判定を行うので、最低1度は処理が実行されます。後判定。