概要

ループの基本構文を覚えたら、次は 実用パターン に進む。プログラミング演習でも実務でも頻出するのが「最初に件数 N が与えられ、続く N 行に実データが並ぶ」という入力形式だ。たとえば「テストの人数 → 各人の点数」「商品数 → 各商品の価格」のように、件数を先に教えてもらえば、こちらは N 回の for ループでデータを順に読めば良い、という構造になる。

具体的な書き方は、まず trim(fgets(STDIN)) で 1 行目から N を受け取り、続けて for ($i = 0; $i < $N; $i++) の中でもう一度 fgets(STDIN) を呼ぶ、というパターンになる。読んだ値は文字列なので、数値計算したいときは (int) でキャストするのを忘れないこと。読み込んだ値はその場で集計してもいいし、いったん配列に貯めて後でまとめて処理する形でもいい — 後者なら配列章で学ぶ array_sum() / max() / min() のような 組み込み関数 をそのまま使えて、ループの中で if の山を書かずに済む。

このパターンを押さえると、「入力フォーマットを読むループで処理集計値を出力」という、プログラミング演習で出題される問題の 半分以上 が同じ骨格で解けることに気づくはずだ。逆に言うと、ここで「件数 N → N 行データ → 集計」の型が体に染みていないと、後の配列・関数の章で「何でこんな構造になってるんだろう」と毎回混乱することになる。シンプルだが土台になるパターンなので、ドリルで手を動かして体得しておきたい。

学習目標

ドリル

no 内容
01 1 行目に N、2 行目以降に N 行のテキスト → そのまま出力
02 1 行目に N、2 行目以降に N 個の整数 → 合計を出力
03 1 行目に N、2 行目以降に N 個の整数 → 最大値を出力

演習: ドリル 01 — N 行をそのまま出力

問題

1 行目に整数 N、2 行目以降に N 行のテキストが入力されます。 N 行のテキストをそのまま 1 行ずつ出力してください。

入力例:

3
apple
banana
cherry

期待される出力:

apple
banana
cherry

ヒント

演習: ドリル 02 — N 個の整数の合計

問題

1 行目に整数 N、2 行目以降に N 個の整数が 1 行ずつ入力されます。 N 個の整数の合計を出力してください。

入力例:

5
1
2
3
4
5

期待される出力:

15

ヒント

演習: ドリル 03 — N 個の整数の最大値

問題

1 行目に整数 N、2 行目以降に N 個の整数が 1 行ずつ入力されます。 N 個の整数の 最大値 を出力してください。

入力例:

5
3
17
9
42
8

期待される出力:

42

ヒント

この章を AI に聞く

  1. 「ch06 — 標準入力をループで処理」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

    💬 ChatGPT 📘 Claude ✨ Gemini

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

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch06 — 標準入力をループで処理」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE