なぜ繰り返し処理の理解が重要なのか、その理由

この記事では、弊社の新人エンジニア研修の参考にC#を解説します。

前回は条件分岐と判定条件について解説しました。今回は繰り返し処理について解説します。

繰り返し処理は、人間にとって煩わしいものでも、コンピュータには難なく行えます。コンピュータの利点を最大限に引き出すためにも、繰り返し処理を理解しましょう。

ここでは、以下の3つの繰り返し処理を学びます:

  • while
  • for
  • do-while

なお、繰り返し処理のことをループとも言います。


1. while

英語の「while」には「~の間」という意味があります。
while文では、継続条件を満たしている間は処理を繰り返します。

基本構文

csharpコピーする編集するwhile (継続条件式)
{
    文;
}

「継続条件式」がtrueなら「文」を実行し、falseならループを終了します。

C#での例 (Example01)

using System;

class Example01
{
    static void Main()
    {
        int i = 0;
        while (i < 3)
        {
            Console.WriteLine(i);
            i++;
        }
    }
}

実行結果

コピーする編集する0
1
2

ここでは、i++(インクリメント)に注目してください。この部分がないと無限ループになります。無限ループが発生した場合、開発環境(IDE)での強制停止方法を講師に尋ねてみてください。


2. for

while文では、初期化、条件判定、更新を分けて記述しましたが、for文はこれらを1行にまとめて記述できます。

基本構文

csharpコピーする編集するfor (初期化式; 継続条件式; 更新式)
{
    文;
}
  1. 初期化式を1度だけ実行します。
  2. 継続条件式を評価し、trueなら文を実行します。
  3. 更新式を実行し、2に戻ります。

C#での例 (Example02)

using System;

class Example02
{
    static void Main()
    {
        for (int i = 0; i < 3; i++)
        {
            Console.WriteLine(i);
        }
    }
}

実行結果

0
1
2

3. ユーザー入力を受け付ける

ユーザーからの入力を受け付けるには、C#ではConsole.ReadLineを使用します。

C#での例 (Example05)

using System;

class Example05
{
    static void Main()
    {
        Console.WriteLine("何回数え上げますか?");
        int count = int.Parse(Console.ReadLine());

        int i = 0;
        while (i < count)
        {
            Console.WriteLine(i);
            i++;
        }
    }
}


4. ループを中断するbreak

break文を使用して、特定の条件でループを終了できます。

C#での例 (Example06)

using System;

class Example06
{
    static void Main()
    {
        int sum = 0;

        while (true)
        {
            Console.WriteLine("整数値を入力してください。(終了するには-1を入力)");
            int n = int.Parse(Console.ReadLine());

            if (n == -1)
            {
                break;
            }

            sum += n;
            Console.WriteLine("これまでの合計: " + sum);
        }
    }
}


5. ループを1回スキップするcontinue

continue文を使用すると、ループ内の後続の処理をスキップし、次の繰り返しに移行します。

C#での例 (Example08)

using System;

class Example08
{
    static void Main()
    {
        int sum = 0;

        for (int i = 0; i < 3; i++)
        {
            Console.WriteLine("整数値を入力してください。");
            int n = int.Parse(Console.ReadLine());

            if (n < 0)
            {
                continue;
            }

            sum += n;
            Console.WriteLine("これまでの合計: " + sum);
        }
    }
}


6. ループのネスト

ループの中に別のループを入れることをループのネスト(入れ子処理)と言います。

C#での例 (Example09)

using System;

class Example09
{
    static void Main()
    {
        for (int i = 1; i <= 9; i++)
        {
            for (int j = 1; j <= 9; j++)
            {
                Console.Write(i * j + "\t");
            }
            Console.WriteLine();
        }
    }
}


7. do-while

do-while文は、条件を判定する前に1度必ず処理を実行します。

C#での例 (Example10)

using System;

class Example10
{
    static void Main()
    {
        int count = 0;

        do
        {
            count++;
        } while (count < 1);

        Console.WriteLine(count);
    }
}

実行結果



<まとめ:隣の人に正しく説明できたらチェックを付けましょう>

□ 継続条件を満たしている間は処理を繰り返すというのがwhile文やfor文である

□ for文で間違えやすいのは、「継続条件式は繰り返し処理を実行する前に判定される」、「更新文は繰り返し処理が終わってから実行される」ということである

□ break文はループを中断し、continue文はループを1回スキップする

□ 終了条件と継続条件を相互に変換するには、不等号をひっくり返して=がなければ足し、あれば無くす

□ ループ処理の中にループ処理を入れることをループのネスト、または入れ子処理という

これらの基礎をしっかり押さえておくことで、C#プログラミングの理解が深まります。

まとめができたら、アウトプットとして演習問題にチャレンジしましょう。

最後までお読みいただきありがとうございます。