for
あらかじめ決まった回数を繰り返す場合に特化した繰返し処理である。 以下の例では 「for (i を1 から3まで2ずつ増やす)」により、 変数を1から3まで2ずつ増やしながら、 処理を繰り返す。 変数が3より大きくなると、繰返し処理を終了しendforの次行へと進む。
1: for (i を1から3まで2ずつ増やす)
2: // 処理
3: endforfor は、 1行で数多くの要素を盛り込んでいるため、最初に各部に分けて、内容を読み取ろう。
for ( i を 1から 3まで 2ずつ 増やす)
for の実行手順
for の実行手順は、以下の流れ図の通りである。 つまり、①は、 初回だけ実行し、それ以降は、条件式が真の間、②→③→④、 ②→③→④ …と繰り返す。②で、条件式が偽になると、for を終了し endforの次行へと進む。

forのトレース
for を含むプログラムのトレース表は、以下の通りである。
[プログラム]
1: 整数型: a, i
2: a ← 0
3: for (i を1から3まで2ずつ増やす)
4: a ← a +i
5: endfor
6: a を出力する| トレース表 | 条件式 | a | i | for の実行手順 |
|---|---|---|---|---|
| 2:a ← 0 | 0 | |||
| 3: for (i を1から3まで2ずつ増やす) | 1 | ①初期値1をfor 変数iに格納する。 | ||
| 1 ≦ 3 T | ②条件式を見極める。 | |||
| 4:a ← a + i | 1 | ③処理を実行する。 | ||
| 3: for (i を1から3まで2ずつ増やす) | 3 | ④増分2をfor 変数 i 加える。 | ||
| 3 ≦ 3 T | ②条件式を見極める。 | |||
| 4:a ← a + i | 4 | ③処理を実行する。 | ||
| 3: for (i を1から3まで2ずつ増やす) | 5 | ④増分2をfor 変数 i 加える。 | ||
| 5 ≦ 3 F | ②条件式が偽のため 繰返しを終了する 。 | |||
| 6: a を出力する | 「4」を出力する。 |
注意点は、以下の通りである。
トレース表が2行にわたると、スペースを必要とするため、以下の通り1行にまとめる。
つまり、 forのトレースでは1 行で条件式欄にも変数欄にも記入が必要。
| トレース表 | 条件式 | a | i |
|---|---|---|---|
| 3: for (i を1から3まで2ずつ増やす) | 1 | ||
| 1 ≦ 3 T |
| トレース表 | 条件式 | a | i |
|---|---|---|---|
| 3: for (i を1から3まで2ずつ増やす) | 1 ≦ 3 T | 1 |
1行にまとめると、条件式欄にも変数欄にも記入が必要。
増やす・減らす
for の条件式には 「増やす」 と 「減らす」 がある。 例は以下の通りである。
- for (i を1から3まで2ずつ増やす )
- for (i を 6 から3まで3ずつ減らす)
また、条件式にある「3まで」とは3を含む表現である。つまり 「i<3」でなく「i≦3」となる。
ただし、 同じ「3 まで」であっても、「増やす」 と 「減らす」 とでは条件式の関係演算子が異なる。
増やす
条件式「3まで」は 「O ≦ 3」である。 「for (i を1から3まで2ずつ増やす)」のように、初期値1が、条件式にある3より小さいためである。 プログラムの例とトレース表は、以下の通りである。
[プログラム]
1: 整数型: a, i
2: a ← 0
3: for (i を1から3まで2ずつ増やす)
4: a ← a + i
5: endfor
6: a を出力する| 通し番号 | トレース表 | 条件式 | a | i | 説明 |
|---|---|---|---|---|---|
| A | 2: a ← 0 | 0 | |||
| B | 3: for (i を1から3まで2ずつ増やす) | 1 ≦ 3 T | 1 | ※1 | |
| C | 4:a ← a + i | 1 | |||
| D | 3: for (i を1から3まで2ずつ増やす) | 3 ≦ 3 T | 3 | ||
| E | 4:a ← a + i | 4 | |||
| F | 3: for (i を1から3まで2ずつ増やす) | 5 ≦ 3 F | 5 | ※2 | |
| G | 6: a を出力する | 「4」を出力する |
※1 条件式は 「i≦ 3」。 初期値1が、条件式にある3より小さい値のため。
※2 iは, 1→3→5と変化し、5で条件式がF (偽)になり for を終了する。
なお、「3: for (i を1から3まで 2ずつ増やす)」の通り、条件式は「3まで」 だが、 for を終了するのは、 iが3になった場合でなく、 iが5になった場合である。
減らす
条件式「3まで」は「○≧ 3」 である。 「for (i を6から3まで3ずつ減らす)」のように、初期値6が、条件式にある3より大きいためである。 プログラムの例とトレース表は、以下の通りである。
なお、「減らす」 では for の実行手順の「④ 増分をfor変数に加える」を「④ 増分をfor変数から減らす」 に読み替える。
[プログラム]
1: 整数型: a, i
2: a ← 0
3: for (i を6から3まで3ずつ減らす)
4: a ← a + i
5: endfor
6: a を出力する| 通し番号 | トレース表 | 条件式 | a | i | 説明 |
|---|---|---|---|---|---|
| A | 2: a ← 0 | | 0 | | |
| B | 3: for (i を6から3まで3ずつ減らす) | 6 ≦ 3 T | | 6 | ※1 |
| C | 4:a ← a + i | | 6 | | |
| D | 3: for (i を6から3まで3ずつ減らす) | 3 ≦ 3 T | | 3 | |
| E | 4:a ← a + i | | 9 | | |
| F | 3: for (i を6から3まで3ずつ減らす) | 0 ≦ 3 F | | 0 | ※2 |
| G | 6: a を出力する | | | | 「9」を出力する |
※1 条件式は「i≦3」。 初期値6が、 条件式にある3より大きい値のため。
※2 iは、 6→3→0と変化し、 0で条件式がF (偽)になり for を終了する。
なお、「3 : for (i を 6から3まで3ずつ減らす)」の通り、条件式は「3まで」だが、 for を終了するのは、 iが3になった場合でなく、iが0になった場合である。
(参考)
情報処理教科書 出るとこだけ!基本情報技術者[科目B]第4版 橋本 祐史 (著) 翔泳社


コメント