概要
プログラムの仕事の多くは「同じような処理を繰り返す」ことだ。1 から 100 までの数を出力したい時、echo 1; echo 2; ... と 100 行書くのは現実的ではないし、コピペで済ませようとした瞬間にバグの温床になる。ループは、この「繰り返し」をコンピュータに任せて、人間が書くコードを 1 ブロックに圧縮するためのしくみだ。
PHP で最も基本的なループが for 文。for ($i = 0; $i < N; $i++) という形は、3 つのパートで構成されている。初期化 ($i = 0、ループ開始前に 1 回だけ実行)、条件 ($i < N、毎回チェックされ、真の間だけ繰り返す)、更新 ($i++、各反復の最後に実行)。この 3 点セットで「何回回るか」が明示できるので、回数が事前に分かっているループには for が最適になる。
初学者がここで一番踏むのが オフバイワンエラー だ。「1 から N まで」のつもりで $i < N と書くと N が出力されない (実際は 1 から N-1 までしか回らない)。<= を使うか、開始を 1 にして $i <= N にするか、流派は色々あるが、まずは自分で書いて 1 つズレた結果を見ることが最大の学びになる。もうひとつ、$i++ を書き忘れたり条件を絶対に偽にならない式にすると 無限ループ に突入してターミナルが止まる。Ctrl+C で止められる、と最初に知っておくと安心できる。
学習目標
for ($i = 0; $i < N; $i++)の 3 つの部分の意味を言える- 同じ処理を N 回繰り返せる
- カウンタ変数
$iを使って値を 1 つずつ変えながら処理できる
ドリル
| no | 内容 |
|---|---|
| 01 | 1 から 5 までを 1 行ずつ出力 |
| 02 | 入力 N で 1+2+...+N の合計を出力 |
| 03 | 入力 N で N の段の九九を出力 |
📝 演習: ドリル 01 — 1 から 5 までを出力
問題
for 文を使って 1 から 5 までを 1 行ずつ出力してください。
期待される出力:
1
2
3
4
5ヒント
for ($i = 1; $i <= 5; $i++)でループするecho $i . "\n";で 1 行ずつ出力
📝 演習: ドリル 02 — 1 から N までの合計
問題
標準入力で整数 N を 1 行受け取り、1 + 2 + ... + N の合計を出力してください。
入力例:
10
期待される出力:
55ヒント
$n = (int) trim(fgets(STDIN));で N を読む$sum = 0;で合計用の変数を用意for ($i = 1; $i <= $n; $i++) { $sum += $i; }で足していく$sum += $iは$sum = $sum + $iと同じ
📝 演習: ドリル 03 — N の段の九九
問題
標準入力で整数 N (1〜9) を 1 行受け取り、N の段の九九を 1 行ずつ出力してください。
出力形式は N x i = 結果 の形 (空白区切り)。
入力例:
3
期待される出力:
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27ヒント
$n = (int) trim(fgets(STDIN));で N を読むfor ($i = 1; $i <= 9; $i++)で 1 から 9 まで回すecho "$n x $i = " . ($n * $i) . "\n";のように出力