while(true)で「0が入力されるまで」加算するプログラム

広告

今回は、C#の while(true) を使って、0が入力されるまで数値を足し続けるプログラムを作ります。

while(true) は、少し怖く見えるかもしれません。

while (true)
{
}

これは、条件がずっと true なので、そのままだと永久に繰り返す処理です。

そのため、途中で処理を止めるために break を使います。

作りたいプログラム

今回作るプログラムは、次のような動きをします。

数値を入力してください
10
現在の合計は10です

数値を入力してください
20
現在の合計は30です

数値を入力してください
5
現在の合計は35です

数値を入力してください
0
終了します
最終的な合計は35です

ポイントは、0が入力されたら終了することです。

0は「終わりの合図」として使うので、合計には加えません。

サンプルコード

using System;

namespace SumUntilZero
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 合計を入れておく変数
            var total = 0;

            while (true)  // ずっと繰り返す
            {
                Console.WriteLine("数値を入力してください");

                // キーボードから入力された文字を受け取る
                var line = Console.ReadLine();

                // 入力された文字を整数に変換する
                var number = int.Parse(line);

                // 0が入力されたら、繰り返しを終了する
                if (number == 0)
                {
                    Console.WriteLine("終了します");
                    break;  // while文を抜ける
                }

                // 入力された数値を合計に加える
                total += number;

                // 現在の合計を表示する
                Console.WriteLine($"現在の合計は{total}です");
                Console.WriteLine();
            }

            // while文が終わった後に、最終的な合計を表示する
            Console.WriteLine($"最終的な合計は{total}です");
        }
    }
}

while(true)の意味

while は、条件が成り立つ間、処理を繰り返します。

たとえば、次のような書き方があります。

while (year <= 64)
{
    // yearが64以下の間、繰り返す
}

これは、条件がはっきりしています。

一方、今回のコードはこうです。

while (true)
{
    // ずっと繰り返す
}

true は常に正しいので、このままだと処理は終わりません。

そこで、次のように break を使います。

if (number == 0)
{
    break;
}

つまり、

基本的にはずっと繰り返す
でも、0が入力されたら途中で抜ける

という考え方です。

breakの役割

break は、繰り返し処理を途中で終了する命令です。

今回の場合は、0が入力されたときに break が実行されます。

if (number == 0)
{
    break;
}

この break が実行されると、while の中の処理を終了して、次の行へ進みます。

今回であれば、最後に次の処理へ進みます。

Console.WriteLine($"最終的な合計は{total}です");

total += number の意味

次のコードは、入力された数値を合計に加えています。

total += number;

これは、次の書き方と同じ意味です。

total = total + number;

たとえば、現在の total が10で、number が20なら、

total = 10 + 20

となり、total は30になります。

処理の流れ

今回のプログラムの流れは、次のようになります。

合計 total を0にする
↓
数値を入力する
↓
入力された数値が0か確認する
↓
0なら終了する
↓
0でなければ合計に加える
↓
現在の合計を表示する
↓
もう一度、数値を入力する

この流れを、0が入力されるまで繰り返します。

初学者がつまずきやすいポイント

まず注意したいのは、while(true) だけを書くと、処理が終わらないことです。

while (true)
{
    Console.WriteLine("繰り返します");
}

このようなコードを書くと、ずっと表示され続けます。

そのため、while(true) を使うときは、ほとんどの場合、どこかに break が必要です。

if (number == 0)
{
    break;
}

もう1つの注意点は、今回のコードでは、数値以外を入力するとエラーになることです。

たとえば、abc のような文字を入力すると、int.Parse で整数に変換できないため、エラーになります。

最初の学習では、まずは「数値だけを入力する」と決めて練習すれば大丈夫です。

まとめ

while(true) は、ずっと繰り返す処理を書くときに使えます。

ただし、そのままだと処理が終わらないため、break を使って終了条件を作ります。

今回のプログラムでは、

0が入力されたら終了する
0以外なら合計に加える

というルールで処理を作りました。

while(true) と break の組み合わせは、メニュー画面、入力の繰り返し、ゲームのメインループなどでもよく使われます。

まずは今回のように、0を入力するまで繰り返すというシンプルな例で慣れていきましょう。

訪問数 4 回, 今日の訪問数 4回

広告

C#

Posted by hidepon