基礎から学ぶC#入門 90日コース | 制御構文・メソッド - Day 12:while文

Web APP 90日で身につけるC#
スポンサーリンク
スポンサーリンク
  1. Day 12 のゴールと全体イメージ
  2. while 文の基本構造
    1. 「条件が true の間、繰り返す」
  3. 具体例1:1〜10 を while 文で表示する
    1. for 文との違いを意識しながら書いてみる
  4. while 文の設計で大事なこと
    1. 「初期化」「条件」「更新」の3つを必ずセットで考える
  5. 具体例2:ユーザー入力で繰り返しを続ける
    1. 「終了と入力されるまで繰り返す」
  6. do while 文の基本構造
    1. 「最低1回は必ず実行される」ループ
  7. 具体例3:メニューを最低1回は表示する
    1. 「一度は必ず聞きたい」場面で使う
  8. 無限ループとは何か
    1. 「終わりの条件がない」または「条件が変わらない」ループ
  9. 具体例4:意図的な無限ループ + break で抜ける
    1. 「ずっと待ち続けるが、条件を満たしたら抜ける」
  10. 無限ループになってしまう典型的なミス
    1. 更新を忘れる / 条件が変わらない
  11. Day 12 のまとめ
  12. Day 12 ミニ課題のゴール
  13. 仕様を日本語で整理する
  14. while 版:条件でループを続ける
    1. ステップ1:状態を表す変数を用意する
    2. ステップ2:条件を決める
    3. ステップ3:コード全体を書く
  15. do while 版:最低1回は必ず実行する
    1. 「一度は必ず入力してもらう」場面に向いている
    2. コード例:do while で「終了」まで繰り返す
  16. 無限ループ版:while(true) + break で抜ける
    1. 意図的な無限ループと安全な抜け方
    2. コード例:while(true) を使ったバージョン
  17. 3パターンの違いを整理する
    1. while / do while / 無限ループ + break
  18. 練習テンプレート:メッセージを変えて遊ぶ
  19. Day 12 ミニ課題のまとめ

Day 12 のゴールと全体イメージ

Day 12 では、「繰り返し処理」のもう一つの重要な構文である while 文do while 文 を学びます。 Day 11 の for 文は「回数が決まっている繰り返し」に向いていましたが、 while 文は「条件が満たされている間ずっと続ける」というスタイルの繰り返しに向いています。

学ぶことは次のとおりです。

  • while 文
  • do while 文
  • 無限ループ(終わらないループ)

これらをステップバイステップでかみ砕きながら、初心者の方でも自然に使えるようになることを目指します。

while 文の基本構造

「条件が true の間、繰り返す」

while 文は、

「ある条件が true の間、同じ処理を繰り返す」

ための構文です。基本形は次のようになります。

while (条件)
{
    // 繰り返したい処理
}
C#

ここでのポイントは、

  • 条件が true の間は、何度でも繰り返す
  • 条件が false になった瞬間に、ループを抜ける
  • 条件がずっと true のままだと、ループが終わらない(無限ループ)

ということです。

具体例1:1〜10 を while 文で表示する

for 文との違いを意識しながら書いてみる

Day 11 では、1〜10 を for 文で表示しました。 同じことを while 文で書いてみると、次のようになります。

using System;

class Program
{
    static void Main(string[] args)
    {
        int i = 1; // カウンター変数。最初は 1 からスタートします。

        // i が 10 以下の間、繰り返します
        while (i <= 10)
        {
            Console.WriteLine(i); // 現在の i の値を表示します

            i++; // i を 1 つ増やします(更新)
        }

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • for 文では「初期化・条件・更新」が一行にまとまっていましたが、 while 文では「初期化」と「更新」をループの外と中に分けて書きます。
  • 条件(ここでは i <= 10)が false になると、ループを抜けます。

while 文の設計で大事なこと

「初期化」「条件」「更新」の3つを必ずセットで考える

while 文を書くときに大事なのは、

  • 初期化:ループに入る前に、カウンターや状態を準備する
  • 条件:ループを続けるかどうかを決める
  • 更新:ループの中で、状態を変えていく

という3つをセットで考えることです。

もし「更新」を書き忘れると、条件がずっと変わらず、 結果として 無限ループ になってしまうことがあります。

具体例2:ユーザー入力で繰り返しを続ける

「終了と入力されるまで繰り返す」

while 文の強みは、「回数が決まっていない繰り返し」に向いていることです。 例えば、次のような仕様を考えてみます。

「ユーザーが ‘exit’ と入力するまで、メッセージを表示し続ける。」

これを while 文で書くと、次のようになります。

using System;

class Program
{
    static void Main(string[] args)
    {
        string command = ""; // ユーザーの入力を入れる変数

        // command が "exit" でない間、繰り返します
        while (command != "exit")
        {
            Console.WriteLine("何か入力してください(終了するには exit と入力):");
            command = Console.ReadLine(); // 毎回新しい入力を受け取ります

            Console.WriteLine($"あなたが入力した文字列:{command}");
        }

        Console.WriteLine("プログラムを終了します。");
        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 条件は command != "exit" なので、command"exit" になるまで繰り返します。
  • ループの中で command = Console.ReadLine(); を行うことで、 毎回条件に使う値が更新されます。
  • 「いつ終わるか分からない繰り返し」に while 文は向いています。

do while 文の基本構造

「最低1回は必ず実行される」ループ

do while 文は、while 文と似ていますが、

「最低1回は必ず実行される」

という特徴があります。基本形は次のとおりです。

do
{
    // 繰り返したい処理
}
while (条件);
C#

ここでのポイントは、

  • まず do { ... } の中身が 1回実行される
  • その後で while (条件) が評価され、true ならもう一度実行される
  • 条件が false になったら、そこでループ終了

という流れになることです。

具体例3:メニューを最低1回は表示する

「一度は必ず聞きたい」場面で使う

do while 文の典型的な使い方として、 「メニューを最低1回は表示して、ユーザーに選んでもらう」という例を見てみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        int menu;

        // 少なくとも 1 回はメニューを表示して、選んでもらいます
        do
        {
            Console.WriteLine("=== メニュー ===");
            Console.WriteLine("1: 挨拶");
            Console.WriteLine("2: 今日の日付を表示");
            Console.WriteLine("0: 終了");
            Console.WriteLine("番号を入力してください:");

            string input = Console.ReadLine();
            menu = int.Parse(input);

            if (menu == 1)
            {
                Console.WriteLine("こんにちは!");
            }
            else if (menu == 2)
            {
                Console.WriteLine($"今日の日付:{DateTime.Now.ToShortDateString()}");
            }
            else if (menu == 0)
            {
                Console.WriteLine("終了します。");
            }
            else
            {
                Console.WriteLine("不正な番号です。0〜2 を入力してください。");
            }

            Console.WriteLine(); // 空行で見やすくします

        } while (menu != 0); // menu が 0 でない間、もう一度メニューを表示します

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • do while 文では、「処理 → 条件チェック」の順番になります。
  • メニューのように「一度は必ず表示したい」場面に向いています。
  • 条件(ここでは menu != 0)が false になると、ループを抜けます。

無限ループとは何か

「終わりの条件がない」または「条件が変わらない」ループ

無限ループとは、

「ずっと終わらずに繰り返し続けるループ」

のことです。

典型的な書き方は次のようになります。

while (true)
{
    // ずっと繰り返される処理
}
C#

この場合、条件が常に true なので、 プログラムを強制終了しない限り、ループは終わりません。

注意点:

  • 無限ループは、意図的に使う場合もあります(ゲームのメインループなど)。
  • しかし、意図せず無限ループになってしまうと、 CPU を使い続けてしまい、プログラムが固まったように見えることがあります。

具体例4:意図的な無限ループ + break で抜ける

「ずっと待ち続けるが、条件を満たしたら抜ける」

無限ループを安全に使うためには、 ループの中で break を使って「抜ける条件」を用意することが大切です。

using System;

class Program
{
    static void Main(string[] args)
    {
        while (true) // 無限ループ
        {
            Console.WriteLine("コマンドを入力してください(exit で終了):");
            string command = Console.ReadLine();

            if (command == "exit")
            {
                Console.WriteLine("終了コマンドが入力されたので、ループを抜けます。");
                break; // while ループを抜けます
            }

            Console.WriteLine($"入力されたコマンド:{command}");
            Console.WriteLine();
        }

        Console.WriteLine("プログラムを終了しました。");
        Console.ReadLine();
    }
}
C#

重要ポイント:

  • while (true) で「ずっと待ち続ける」ループを作り、 if (command == "exit") { break; } で「抜ける条件」を用意しています。
  • 無限ループを使うときは、必ず「抜けるための条件と break」をセットで考えることが重要です。

無限ループになってしまう典型的なミス

更新を忘れる / 条件が変わらない

初心者の方が while 文でよくやってしまうミスは、

  • カウンターや状態の 更新を忘れる
  • 条件に使っている変数が ループの中で変化していない

というものです。

例えば、次のコードは危険です。

int i = 1;

while (i <= 10)
{
    Console.WriteLine(i);
    // i++ を書き忘れている!
}
C#

この場合、i はずっと 1 のままなので、 i <= 10 は永遠に true のままになり、無限ループになります。

対策:

  • while 文を書くときは、「初期化」「条件」「更新」の3つを必ずセットで確認する。
  • ループの中で、条件に関係する変数がちゃんと変化しているかを意識する。

Day 12 のまとめ

Day 12 では、繰り返し構文のもう一つの柱である while 文do while 文 を学びました。

  • while 文
    • 条件が true の間、処理を繰り返す
    • 回数が決まっていない繰り返しに向いている
    • 「初期化」「条件」「更新」をセットで考えることが重要
  • do while 文
    • 少なくとも 1 回は必ず処理が実行される
    • 「一度は必ず聞きたい」場面(メニュー表示など)に向いている
  • 無限ループ
    • 条件がずっと true のままのループ
    • 意図的に使う場合もあるが、必ず「抜ける条件」と break をセットで考える

Day 11 の for 文と Day 12 の while 文・do while 文を組み合わせることで、 「回数が決まっている繰り返し」と「条件に応じて続く繰り返し」の両方を扱えるようになります。

ぜひ、

  • for 文で書いた処理を while 文に書き換えてみる
  • ユーザー入力に応じて続くループを作ってみる
  • 無限ループ + break のパターンを安全に試してみる

といった練習を通して、「状況に応じて最適な繰り返し構文を選ぶ感覚」を育てていってください。


Day 12 ミニ課題のゴール

Day 12 のミニ課題では、「ユーザーが『終了』と入力するまで繰り返すプログラム」を題材にして、

  • while
  • do while
  • 無限ループ(と、その安全な抜け方)

を実践的に身につけていきます。 「いつ終わるか分からない繰り返し」を扱うので、while 文の本領発揮の場面です。

仕様を日本語で整理する

まずは、プログラムの動きを日本語で整理します。

  1. ユーザーに文字列を入力してもらう。
  2. 入力された文字列を表示する。
  3. 入力が「終了」だったら、ループを終えてプログラムを終了する。
  4. 「終了」以外なら、また 1 に戻って繰り返す。

この「日本語の仕様」を、そのまま while 文に落とし込んでいきます。

while 版:条件でループを続ける

ステップ1:状態を表す変数を用意する

「終了かどうか」を判定するために、ユーザー入力を保持する変数を用意します。

string input = ""; // ユーザーの入力を入れる変数。最初は空文字にしておきます。
C#

ステップ2:条件を決める

仕様では「ユーザーが『終了』と入力するまで繰り返す」ので、 条件は次のようになります。

「input が ‘終了’ でない間、繰り返す」

つまり、input != "終了" です。

ステップ3:コード全体を書く

using System;

class Program
{
    static void Main(string[] args)
    {
        string input = ""; // ユーザーの入力を保持する変数

        // input が "終了" でない間、繰り返します
        while (input != "終了")
        {
            Console.WriteLine("文字を入力してください(終了するには「終了」と入力):");
            input = Console.ReadLine(); // 毎回新しい入力を受け取ります

            Console.WriteLine($"あなたが入力した文字列:{input}");
            Console.WriteLine(); // 空行で見やすくします
        }

        Console.WriteLine("「終了」と入力されたので、プログラムを終了します。");
        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 条件は input != "終了" なので、「終了」以外の間はずっと繰り返します。
  • ループの中で input = Console.ReadLine(); を行うことで、 条件に使う値が毎回更新されます。
  • 「いつ終わるか分からない繰り返し」に while 文は向いています。

do while 版:最低1回は必ず実行する

「一度は必ず入力してもらう」場面に向いている

do while 文は、

「最低1回は必ず処理を実行してから、条件をチェックする」

という特徴があります。 今回のミニ課題にも、do while で書いたバージョンを作ってみます。

コード例:do while で「終了」まで繰り返す

using System;

class Program
{
    static void Main(string[] args)
    {
        string input; // ユーザーの入力を保持する変数

        // 少なくとも 1 回は必ず入力してもらいます
        do
        {
            Console.WriteLine("文字を入力してください(終了するには「終了」と入力):");
            input = Console.ReadLine(); // 入力を受け取ります

            Console.WriteLine($"あなたが入力した文字列:{input}");
            Console.WriteLine(); // 空行で見やすくします

        } while (input != "終了"); // input が "終了" でない間、もう一度繰り返します

        Console.WriteLine("「終了」と入力されたので、プログラムを終了します。");
        Console.ReadLine();
    }
}
C#

重要ポイント:

  • do while 文では、「処理 → 条件チェック」の順番になります。
  • そのため、「一度は必ず入力してもらう」場面に向いています。
  • 条件は while 版と同じく input != "終了" です。

無限ループ版:while(true) + break で抜ける

意図的な無限ループと安全な抜け方

もう一つの書き方として、無限ループ + break のパターンもよく使われます。

「ずっと入力を受け付けるが、『終了』と入力されたら break で抜ける」

というイメージです。

コード例:while(true) を使ったバージョン

using System;

class Program
{
    static void Main(string[] args)
    {
        while (true) // 無限ループ。条件は常に true です。
        {
            Console.WriteLine("文字を入力してください(終了するには「終了」と入力):");
            string input = Console.ReadLine();

            if (input == "終了")
            {
                Console.WriteLine("「終了」と入力されたので、ループを抜けます。");
                break; // while ループを抜けます
            }

            Console.WriteLine($"あなたが入力した文字列:{input}");
            Console.WriteLine(); // 空行で見やすくします
        }

        Console.WriteLine("プログラムを終了しました。");
        Console.ReadLine();
    }
}
C#

重要ポイント:

  • while (true) は「ずっと続くループ」ですが、 if (input == "終了") { break; } で「抜ける条件」を用意しています。
  • 無限ループを使うときは、必ず break で抜けるための条件 をセットで考えることが重要です。

3パターンの違いを整理する

while / do while / 無限ループ + break

同じ「終了と入力されるまで繰り返す」でも、書き方によって特徴が少し変わります。

  • while 版
    • 条件を先にチェックしてから、ループに入る。
    • 初期値によっては、1 回も実行されない可能性がある。
  • do while 版
    • 必ず 1 回は実行してから、条件をチェックする。
    • 「一度は必ず入力してもらう」場面に向いている。
  • while(true) + break 版
    • 条件は常に true で、ループの中で「抜ける条件」を判定する。
    • メインループやコマンド受付などでよく使われるパターン。

初心者の方は、まずは while 版 をしっかり理解し、 そのあとで do while 版無限ループ版 を「書き方のバリエーション」として押さえておくと、 状況に応じて自然に選べるようになっていきます。

練習テンプレート:メッセージを変えて遊ぶ

このミニ課題のコードは、少しアレンジするだけでいろいろな練習に使えます。

  • 「終了」ではなく "exit""quit" に変えてみる。
  • 入力された文字列を、ToUpper()Length で加工して表示してみる。
  • 「終了」以外のときに、カウンターを増やして「何回入力したか」を表示してみる。

例えば、入力回数を数える while 版は次のようになります。

using System;

class Program
{
    static void Main(string[] args)
    {
        string input = "";
        int count = 0; // 入力回数を数えるカウンター

        while (input != "終了")
        {
            Console.WriteLine("文字を入力してください(終了するには「終了」と入力):");
            input = Console.ReadLine();

            count++; // 入力回数を 1 増やします

            Console.WriteLine($"[{count} 回目] あなたが入力した文字列:{input}");
            Console.WriteLine();
        }

        Console.WriteLine($"合計 {count} 回入力されました。プログラムを終了します。");
        Console.ReadLine();
    }
}
C#

Day 12 ミニ課題のまとめ

このミニ課題では、

  • while 文で「終了と入力されるまで繰り返す」
  • do while 文で「最低1回は必ず入力してもらう」
  • 無限ループ + break で「ずっと待ちつつ、条件で抜ける」

という3つの書き方を通して、

  • 条件に応じて続く繰り返し
  • 「いつ終わるか分からないループ」の設計
  • 無限ループとその安全な抜け方

を体験しました。

Day 11 の for 文と Day 12 の while / do while を組み合わせることで、 「回数が決まっている繰り返し」と「条件に応じて続く繰り返し」の両方を扱えるようになります。

ぜひ、

  • 条件やキーワードを変えて、いろいろな「終了条件付きループ」を作ってみる
  • 入力回数や履歴を記録するなど、少しずつ機能を足してみる
  • while / do while / 無限ループ + break の違いを意識しながら書き分けてみる

といった練習を通して、「繰り返し構文を自分の意図通りにコントロールする感覚」を育てていってください。

タイトルとURLをコピーしました