概要

ループは 入れ子 にできる。for の中にもう 1 つ for を書くと、外側が 1 回回るたびに内側のループが最初から最後まで全部回る、という二重構造になる。これは「表のような 2 次元データ」を扱うときに必須のテクニックで、九九表 (9 行 × 9 列)、星のピラミッド (行ごとに違う数の *)、行列演算、画像のピクセル走査など、現実のプログラミングで出てくる場面は数えきれない。

文法的には外側のループのカウンタを $i、内側を $j にする慣習がある。これは「i と j で区別がつきやすい」「両方とも $i だと内側が外側のカウンタを破壊して バグになる」という実害から来ている。3 重ループになれば $k、それ以上は名前を意味のあるもの ($row / $col / $layer 等) に切り替える、と段階的にスケールしていく。

入れ子で必ず意識すべきが 計算量 だ。外側が N 回・内側が M 回回るループは、本体が合計 N × M 回 実行される。N = M = 1000 なら 100 万回、10000 なら 1 億回。N が増えるほど一気に重くなるので、「これは本当に N × M 必要か」「片方は N 回で済まないか」を常に問う癖が、後の配列・アルゴリズムの章で効いてくる。入れ子ループは強力だが、雑に書くと簡単に重いコードになるという両刃の剣だと覚えておくと良い。

学習目標

ドリル

no 内容
01 1×1 から 9×9 までの九九表 (81 行) を出力
02 入力 N で N 段の星 (*) のピラミッドを出力

演習: ドリル 01 — 九九表 (1×1 〜 9×9)

問題

入れ子ループを使って、1 x 1 = 1 から 9 x 9 = 81 までの九九を 1 行ずつ全て (81 行) 出力してください。

出力の形は A x B = C (空白区切り)。

期待される出力 (先頭抜粋):

1 x 1 = 1
1 x 2 = 2
...
1 x 9 = 9
2 x 1 = 2
2 x 2 = 4
...
9 x 9 = 81

ヒント

演習: ドリル 02 — 星のピラミッド (左寄せ)

問題

標準入力で整数 N を 1 行受け取り、左寄せの星 (*) のピラミッドを N 段出力してください。

入力例:

4

期待される出力:

*
**
***
****

ヒント

この章を AI に聞く

  1. 「ch05 — 入れ子ループ」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch05 — 入れ子ループ」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch05 — 入れ子ループ」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch05 — 入れ子ループ」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE