【C#】繰り返し文を書く方法 | while / do ~ while 文を使用する方法

繰り返し文はこれまでにfor文を習ってきました。for文は条件に応じて繰り返す回数などを制限できるので、とても便利な構文だと紹介してきましたね。ここでは、もう一つの構文であるwhile文を紹介していきます。

こちらも条件などを指定して、柔軟に繰り返しを制御できるので、覚えておく必要があります。エンジニアとして働き始めると、アプリケーションの構成やその場の条件、保有している値からfor文とwhile文を判断して使い分ける場面がありますので、どちらもしっかりと使いこなせるようになる必要があります。

while文の基礎知識

この記事で紹介していくwhile文には2つの書き方があります。それらの書き方を、以下のように定義しておきます。

  • while ~ 文(前判定)
  • do ~ while ~ 文(後判定)

具体的な記述方法は後述しますので、ここでは簡単に特徴だけ説明します。while ~ 文は一般的に前判定と呼ばれ、次のループに入る前に「繰り返すかどうか?」を判定するような動作をします。逆にdo ~ while ~ 文は、現在地点のループで「繰り返すかどうか?」を判定します。

前判定では条件によって繰り返しを1回も行わない(繰り返しに入らない)場合もありますが、あと判定では最低1回は処理を行うようになります。説明だけではわからないと思いますので、それぞれをサンプルを作成しながらみていきます。

while文を書く方法

2種類のwhile文の書き方について紹介していきます。それぞれの書き方をきちんと覚えておきましょう。個人的な経験では前判定をよく使い、後判定はあまり使わないような印象です。

while ~ 文を書く方法

前判定である「while ~ 文」はその名の通り、繰り返しの前側で処理を継続するかどうかを判定します。構文は以下のように記述して、条件式がtrueの場合に繰り返しの処理を実行するようになります。

while(条件式)
{
    //繰り返し内部の処理
}

では、新しいコンソールアプリケーションを作成して、以下のソースコードを記載してみてください。実行してみると繰り返しの条件がよくわかるかと思います。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App01
{
    class Program
    {
        static void Main(string[] args)
        {
            int index = 1;
            while (index <= 10)
            {
                Console.Write("if文の中:");
                Console.WriteLine(index.ToString());

                Console.WriteLine();
                index++;
            }

            Console.Write("処理終了:");
            Console.WriteLine("i = " + index.ToString());
            Console.ReadLine();
        }
    }
}

この繰り返しでは、繰り返しの外側で継続条件(int index)を配置して、その値によって前側で繰り返すかどうかを判定しています。宣言時点ではindexの値は、1になっているので、「index <= 10」を満たすので繰り返しを実行します。

あとは内部でindexの値をインクリメントしているので、indexの値が10より大きくなった(11)の時点で繰り返しを行わないようになっています。したがって10までしか、画面には表示されていないのです。

do ~ while ~ 文を書く方法

では後判定について紹介します。後判定は処理の後側で繰り返しの継続を判定します。do ~ while ~ と記述します。構文は以下のようになります。

do
{
    //繰り返し内部の処理
}
while(条件式)

doは「~する」の意味なので、なんとなく意味として通じますよね。なおwhileは「~の間」という意味ですので、これも英語の通りのような感じがします。こうして考えてみると、意外と覚えやすいかもしれません。

では、実際のサンプルを作ってみたいと思います。新規のアプリケーションを作成して、以下を記載して実行してみてください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App02
{
    class Program
    {
        static void Main(string[] args)
        {
            int index = 1;
            do
            {
                Console.Write("if文の中:");
                Console.WriteLine(index.ToString());

                Console.WriteLine();
                index++;
            }
            while (index <= 10);

            Console.Write("処理終了:");
            Console.WriteLine("i = " + index.ToString());
            Console.ReadLine();
        }
    }
}

継続条件を外側で宣言し、繰り返しの最後のwhlileで継続を判定しています。最初は1からスタートし、内部でインクリメントされていきます。最終的にindexが11になったタイミングで、継続条件がfalseとなり繰り返し文から抜けます。ですので、画面には1から10までしか表示されていないのです。

以上、繰り返し文として、知っておくべきもう一つの構文であるwhile文を紹介しました。for文よりも使用頻度は少ないですが、こちらの構文も必ず使うので、覚えておくべき内容になりますので、しっかりと復習をしておいてくださいね。

この繰り返しでは、繰り返しの外側で継続条件(int index)を配置して、その値によって前側で繰り返すかどうかを判定しています。宣言時点ではindexの値は、1になっているので、「index <= 10」を満たすので繰り返しを実行します。

あとは内部でindexの値をインクリメントしているので、indexの値が10より大きくなった(11)の時点で繰り返しを行わないようになっています。したがって10までしか、画面には表示されていないのです。

do ~ while ~ 文を書く方法

では後判定について紹介します。後判定は処理の後側で繰り返しの継続を判定します。do ~ while ~ と記述します。構文は以下のようになります。

do
{
    //繰り返し内部の処理
}
while(条件式)

doは「~する」の意味なので、なんとなく意味として通じますよね。なおwhileは「~の間」という意味ですので、これも英語の通りのような感じがします。こうして考えてみると、意外と覚えやすいかもしれません。

繰り返し文として、知っておくべきもう一つの構文であるwhile文を紹介しました。for文よりも使用頻度は少ないですが、こちらの構文も必ず使うので、覚えておくべき内容になりますので、しっかりと復習をしておいてくださいね。