繰り返し
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";
}| やりたいこと | 書き方 |
|---|---|
| 画面に出す | 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 時間。
進め方
- 各 chapter の
slide.mdを読む (4〜5 分) drill/配下の問題を順番に解く- 採点:
php scripts/grade.php topics/loop/<chapter>/drill/<drill>/
つまづきポイント
| 症状 | 多くの原因 |
|---|---|
| プログラムが終わらない (無限ループ) | while のカウンタを更新していない / 条件が常に真 → Ctrl+C で止める |
| ループが 1 回多い / 少ない (オフバイワン) | < と <= を間違えている。1〜N なら for ($i=1; $i<=N; $i++) |
| 入れ子ループで break が外側まで抜ける | break は 1 段だけ 抜ける。複数段抜けたいなら 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 でもアクセスできる (シンボリックリンク)。