![](https://marunaka-blog.com/wp-content/uploads/2021/04/5d01986ebd84a27b7bc6db64f2ee5481.png)
while文てどうやって使うの!?
この記事では、C# の while 文と do while 文の使い方をサンプルコードを交えて分かりやすく解説ています。
同じ繰り返し処理として for 文があります。for 文と比較すると使用機会が少なく、while 文の使い方は忘れてしまいがちという方もいるのではないでしょうか。
今回は繰り返し処理の while 文と do while 文について紹介していますので、ぜひ参考にしてみて下さい。
![](https://marunaka-blog.com/wp-content/uploads/2021/11/csharp-recommend-reference-book-5-300x168.webp)
オススメの参考書
C#の使い方が丁寧に解説しており、「基礎からしっかりと学びたい」という初心者の方にオススメの一冊です。サンプルコードも記載してあり、各章の最後に復習問題があるので理解度を確認しながら読み進めることができます。新しい C# のバージョンにも対応している書籍です。
while文とは
![](https://marunaka-blog.com/wp-content/uploads/2022/03/e79f61a6baca46b24df8b1f92d141ae5-2-1024x358.png)
C# の while 文は、繰り返し(ループ)処理を行う際に使います。
条件式が true の間は、繰り返し処理を行います。条件式とは、結果が true または false になる式のことです。
フローチャートで表現すると次のようになります。
![](https://marunaka-blog.com/wp-content/uploads/2023/07/3f55603027400999b0182cb6e98414a8.png)
while文の基本構文
while 文は次のような構文になっています。
while(条件式)
{
繰り返し処理
}
while 文のポイントは次の通りです。
- 条件式が true の間、処理を繰り返します。条件式が false になるまで、繰り返されます。
- 条件式が false の場合、処理を終了します。
- 繰り返し処理を行う前に、条件式が評価されます。最初の判定が false の場合、処理は1回も実行されずに while 文を抜けます。
- 条件式に不備があり、false にするロジックがないと無限ループになるので注意が必要です。
具体的な例を見ていきましょう。
下記のコードは「num
が3以下の間は、num
の値を1ずつ増やす」というプログラムです。
int num = 0; // ①
while (num < 3) // ②
{
num++; // ③
}
Console.WriteLine($"繰り返した数:{num}"); // ④
処理の流れは次のようになります。
- 変数
num
に0が代入される。・・・① num< 3
が評価される。num
は0なので true になる。・・・②num
の値を+1する。(num
の値は1になる)・・・③num< 3
が評価される。num
は1なので true になる。・・・②num
の値を+1する。(num
の値は2になる)・・・③num< 3
が評価される。num
は2なので true になる。・・・②num
の値を+1する。(num
の値は3になる)・・・③num< 3
が評価される。num
は3なので false になる。・・・②- コンソールに
num
の値が出力される。・・・④
このように、ある条件式を満たすまでの間、処理を繰り返したい場合には while 文を使います。
do while文とは
![](https://marunaka-blog.com/wp-content/uploads/2022/03/e79f61a6baca46b24df8b1f92d141ae5-2-1024x358.png)
C# の do while 文は、繰り返し(ループ)処理を行う際に使います。
while 文との違いは、最初の条件式が false の場合でも1回は繰り返し処理を実行してからループを抜ける点です。
「最低でも1回はループ内の処理を実行したい」という場合は、do while文を使います。
フローチャートで表現すると次のようになります。
![](https://marunaka-blog.com/wp-content/uploads/2023/07/2e6ae6aa05afd4c93f3c96d3b3742bdb.png)
do while文の基本構文
do while 文は次のような構文になっています。
do
{
繰り返し処理
}
while(条件式)
do while 文のポイントは次の通りです。
- 条件式が true の間、処理を繰り返します。条件式が false になるまで、繰り返されます。
- 条件式が false の場合、処理を終了します。
- 繰り返し処理を行う前に、条件式が評価されます。最初の判定が false の場合、処理は1回も実行されずに while 文を抜けます。
- 条件式に不備があり、false にするロジックがないと無限ループになるので注意が必要です。
具体的な例を見ていきましょう。
下記のコードは「num
が3以下の間は、num
の値を1ずつ増やす」というプログラムです。
int num = 0; // ①
do
{
num++; // ②
}
while (num < 3) // ③
Console.WriteLine($"繰り返した数:{num}"); // ④
処理の流れは次のようになります。
- 変数
num
に0が代入される。・・・① num
の値を+1する。(num
の値は1になる)・・・②num< 3
が評価される。num
は1なので true になる。・・・③num
の値を+1する。(num
の値は2になる)・・・②num< 3
が評価される。num
は2なので true になる。・・・③num
の値を+1する。(num
の値は3になる)・・・②num< 3
が評価される。num
は3なので false になる。・・・③- コンソールに
num
の値が出力される。・・・④
while 文と比較すると、最初に繰り返し処理が実行されてから条件式が実行されていることが分かります。
ループを制御する
![](https://marunaka-blog.com/wp-content/uploads/2022/03/091184bcda645b76415dad025b422929-1024x358.jpg)
繰り返し処理の途中で while 文を終了したり、処理をスキップしたりした場合に使えるのが、 break 文や continue 文を使います。
- break 文:繰り返し処理を終了する
- continue 文:繰り返し処理の途中でスキップして、次の繰り返し処理へ進める
具体的な例を見ていきましょう。
下記のコードは「num
が10以下の間は、num
の値を1ずつ増やしてコンソールに出力する。num
の値が3の場合はコンソールに出力はしない。num
の値が6の場合は while 文を抜ける」というプログラムです。
int num = 0;
while (num < 10)
{
num++;
if (num == 3)
{
continue; // numが3の場合は以降の処理をスキップする
}
if (num == 6)
{
break; // numが6の場合は繰り返し処理を終了する
}
Console.WriteLine($"繰り返した数:{num}");
}
8行目はnum
の値が3の場合、continue 文によって以降の処理をスキップしています。
13行目はnum
の値が6の場合、break 文によって繰り返し処理を終了しています。
結果は次のようになります。
繰り返した数:1
繰り返した数:2
繰り返した数:4
繰り返した数:5
無限ループについて
![](https://marunaka-blog.com/wp-content/uploads/2023/05/34eeef9ad11d89fd1433c48ee18b4047-1024x358.png)
while 文や do while 文の条件式を true にすると、無限に繰り返し処理を実行します。
これを無限ループと言います。
while( true )
{
繰り返し処理
}
名前の通り、無限にループするので使い道がなさそうですが、先ほど紹介した break 文と組み合わせることで、ループから抜け出すことができます。
このような while 文は、何回繰り返すか定まっていないようなループ処理を記述する際には活躍するので、覚えておくといいでしょう。
int num = 0;
while (true)
{
num++;
if (num % 5 == 0)
{
break;
}
Debug.WriteLine($"繰り返した数:{num}");
}
結果は次のようになります。
繰り返した数:1
繰り返した数:2
繰り返した数:3
繰り返した数:4
while文のサンプルコード
![](https://marunaka-blog.com/wp-content/uploads/2022/03/2ba5cbb657d2e1599edd30d8fa258ed4-1024x358.jpg)
while 文の構文を使って、プログラムを確認してみましょう。
サンプルコード①
int num = 0;
while (true)
{
if (!int.TryParse(Console.ReadLine(), out num))
{
Console.WriteLine("数値以外が入力されました");
break;
}
if (num % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
}
上記のコードは「ユーザーから入力された数字が偶数か奇数か判定する」というプログラムです。
条件式が true になっているので、無限ループする while 文です。ユーザーが数値以外を入力した場合はループから抜けます。
上記のコードを実行すると、次のような結果を得られます。
ユーザー入力文字:2
偶数です
ユーザー入力文字:5
奇数です。
ユーザー入力文字:A
数値以外が入力されました
サンプルコード②
int i = 1;
while (i <= 5)
{
int j = 1;
while (j < 6)
{
Console.Write($"{j}");
j++;
}
i++;
Console.Write(",");
}
上記のコードは「1~5までの数字を順番にコンソールへ出力した後、カンマをコンソールへ出力する繰り返し処理を5回行う」というプログラムです。
while 文の中に while 文を入れ子にした2重ループのサンプルになります。
上記のコードを実行すると、次のような結果を得られます。
12345,12345,12345,12345,12345,
まとめ
![](https://marunaka-blog.com/wp-content/uploads/2023/04/c35f903f10ed2371757ca77d9f41dce9-1024x358.png)
この記事では、C# の while文と do while 文の使い方とサンプルコードをいつくか紹介しました。
- while 文は条件式が true の間は、繰り返し処理を行う。
- do while 文は最低でも1回は繰り返し処理を実行し、条件式が true の間は、繰り返し処理を行う。
while 文は何回繰り返すかが予め定まっていない場合によく使用されます。条件式を true にして無限ループを記述する場合もあり、break 文を使ってループの制御を行いましょう。
繰り返し処理を実行する回数を指定したい場合はfor 文を活用しましょう。
この機会にしっかりとマスターしておくことをオススメします。
![](https://marunaka-blog.com/wp-content/uploads/2022/11/csharp-visual-studio-2022-install-step-300x168.webp)
![](https://marunaka-blog.com/wp-content/uploads/2022/03/2f5a8ba6b1682610f773da3b2f1516f9-300x169.jpg)
![](https://marunaka-blog.com/wp-content/uploads/2022/09/1c0278efd52188a8154c18b8b21f1be2-300x169.jpg)
以上、最後まで読んで頂きありがとうございました。