繰り返し

for / while / foreach — 同じ処理を繰り返す

「同じ処理を繰り返す」を扱うトピック。for / while / do-while と、break / continue / 入れ子ループまで踏み込む。

このトピックで身につくこと

  • for で「N 回繰り返す」を書ける
  • while / do-while で「条件が満たされる間繰り返す」を書ける
  • break / continue でループの中断・スキップができる
  • 入れ子ループで表や図形を出力できる
  • 「N 件のデータを読んで合計・最大を求める」が書ける

前提知識の要点

このトピックは hello の echo / 変数 / 入力と、conditional の比較・論理演算子を前提にする。要点だけ:

<?php
// 1) 出力 / 変数 / 整数入力
echo "hello\n";
$n = (int)trim(fgets(STDIN));

// 2) 条件分岐
if ($n > 0) {
    echo "positive\n";
} elseif ($n == 0) {
    echo "zero\n";
} else {
    echo "negative\n";
}
▶ 3v4l で実行
やりたいこと 書き方
画面に出す echo "...";
変数に保存 $x = 値;
入力 (整数) $n = (int)trim(fgets(STDIN));
大小比較 < <= > >= == !=
複数条件 && (両方) / \|\| (どちらか)

これで OK。詳しくやりたければ hello / conditional トピックへ。

chapter 一覧

# chapter 内容 学習目標
1 ch01-for/ for 文 初期化・条件・更新の 3 つの部分を理解して N 回繰り返せる
2 ch02-while/ while 文 条件が真の間だけ繰り返せる / 無限ループの原因が分かる
3 ch03-do-while/ do-while 文 「最低 1 回は実行される」性質を使い分けられる
4 ch04-break-continue/ break / continue ループの中断・スキップを書ける
5 ch05-nested/ 入れ子ループ ループの中にループを書き、表や図形を出力できる
6 ch06-loop-with-input/ 標準入力 × ループ 「N 件のデータ」を読んで集計できる

合計 6 chapter / 15 drill / 所要 2 時間

進め方

  1. 各 chapter の slide.md を読む (4〜5 分)
  2. drill/ 配下の問題を順番に解く
  3. 採点: php scripts/grade.php topics/loop/<chapter>/drill/<drill>/

つまづきポイント

症状 多くの原因
プログラムが終わらない (無限ループ) while のカウンタを更新していない / 条件が常に真 → Ctrl+C で止める
ループが 1 回多い / 少ない (オフバイワン) <<= を間違えている。1〜N なら for ($i=1; $i<=N; $i++)
入れ子ループで break が外側まで抜ける break1 段だけ 抜ける。複数段抜けたいなら break 2;
入力 N 件のループが 1 行ずれる 1 行目で N を読んでから、2 行目以降をループする
合計が 0 のまま 合計用の変数を $sum = 0; でループの で初期化していない

関連トピック

トピック 関係
hello このトピックの前提 (echo / 変数 / 入力)
conditional このトピックの前提 (比較・論理演算子)
array-basic 配列の全要素を for で走査するパターンで使う
array-assoc 連想配列の走査は foreach という別ループになる
function ループを関数の中に閉じ込めて再利用する

トピックを並列で参照する全体地図は TOPICS_INDEX.md にある。

案件 (dojo_map.tsv) での参照

topic_slug    chapter_dir
loop          topics/loop/ch01-for
loop          topics/loop/ch02-while
loop          topics/loop/ch04-break-continue
...

slug loop で参照可。03-loop / loop どちらの path でもアクセスできる (シンボリックリンク)。

このレッスンの章

  1. ch01 ch01 — for 文
  2. ch02 ch02 — while 文
  3. ch03 ch03 — do-while 文
  4. ch04 ch04 — break / continue
  5. ch05 ch05 — 入れ子ループ
  6. ch06 ch06 — 標準入力をループで処理