C#のdo-while文の特徴と使い方!必ず1回実行されるループとは?
生徒
「C#のループにはいろいろあるって聞いたのですが、do-while文ってどんなときに使うんですか?」
先生
「良いところに気がつきましたね。do-while文は、条件に関係なく“必ず1回だけは処理が実行される”ループ構文です。」
生徒
「それってwhile文と何が違うんですか?」
先生
「それでは、C#のdo-while文の使い方と特徴について、わかりやすく説明していきましょう!」
1. do-while文とは?
C#のdo-while文は、繰り返し処理の一種で、少なくとも1回は必ず処理を実行するという特徴を持っています。これは、最初に条件をチェックするwhile文やfor文とは異なり、まず処理を行ってから条件を確認するという流れになっています。
簡単にいうと、「とりあえず1回はやってみて、そのあと続けるかどうか考える」というイメージです。
2. do-while文の基本構文
以下がC#のdo-while文の基本的な書き方です:
do
{
// くり返す処理
} while (条件);
ポイントは、doの後にブロック{ }があり、その中に繰り返したい処理を書きます。そしてwhile (条件);でループを続けるかどうかを判断します。最後にセミコロン(;)を忘れずにつけましょう。
3. do-while文とwhile文の違いを図で理解しよう
初心者の方にも分かりやすいように、do-while文とwhile文の流れの違いを図解で説明します:
- while文: 最初に条件をチェック → 条件が
trueなら処理 → 繰り返す - do-while文: 最初に処理を実行 → その後で条件をチェック → 条件が
trueなら繰り返す
このため、条件が最初からfalseでも、do-while文では1回は実行されるという点が重要です。
4. do-while文の簡単なサンプルコード
次に、具体的なC#コードでdo-while文の動きを見てみましょう。今回は、1回だけ「こんにちは」と表示される例です。
int count = 0;
do
{
Console.WriteLine("こんにちは!");
count++;
} while (count > 5);
この例では、countは0ですが、条件はcount > 5なので最初からfalseです。しかし、それでもConsole.WriteLineは1回実行されて「こんにちは!」と表示されます。
出力結果は次の通りです:
こんにちは!
5. ユーザー入力を使ったdo-while文の活用例
もう少し実用的な例として、ユーザーに「もう一度やりますか?」と聞くようなプログラムを考えてみましょう。
string input;
do
{
Console.WriteLine("処理を実行しました。");
Console.Write("もう一度やりますか? (y/n): ");
input = Console.ReadLine();
} while (input == "y");
このコードでは、ユーザーが「y」と入力する限り、処理が繰り返されます。最初は必ず「処理を実行しました。」が表示されるので、do-while文の特徴が活かされています。
6. どんなときにdo-while文を使うの?
do-while文は次のような場面で使うと便利です:
- 最初に必ず1回処理したいとき(例:ユーザーに最初の入力を求める)
- 繰り返す前提で、条件チェックはあとで行いたいとき
- ゲームのリスタート確認や、パスワードの再入力など
初心者のうちは、while文と混同しやすいですが、必ず1回実行されるという点を覚えておけば安心です。
7. よくあるミスと注意点
- セミコロンの付け忘れ:
while(条件)の最後にはセミコロン;が必要です。 - 無限ループに注意: 条件が常に
trueになると終わらないループになります。 - 条件の書き方に注意: 変数の更新がないと、ずっと同じ条件のままで止まりません。
このようなポイントに気をつけながら、do-while文を使うようにしましょう。
まとめ
これまで、C#のdo-while文について、仕組みや特徴、基本構文、実践しやすいサンプルコードなどを通して理解してきました。振り返ってみると、do-while文は他のループと比べてとても素直な動きをする構文でした。とりあえず必ず一度は実行するという性質は、意外と日常的な処理に向いています。たとえば、ゲームのリスタートや、ユーザーの入力確認、メニューを表示して繰り返し処理するタイプのアプリケーションなど、実際のプログラムの中でよく使われます。とくに、条件が最初からfalseでも、一度だけ処理が必ず通るという点は、初心者の方にとって理解しておくと作業が楽になります。
また、while文やfor文との違いを整理しておけば、構文に迷うことも減ります。たとえば、最初に条件判定をするか、最後に判定するか、という違いは、一見小さなようでいて、実際には動作にとても大きな影響があります。プログラムが一度も動かない可能性があるかどうかは、処理の設計や流れを考えるうえで欠かせない視点です。プログラミング初学者がつまずきやすいのは、「ループがなぜ止まらないのか」「条件を更新し忘れた」などの場面ですが、do-while文の場合は、いま何をしているのかが見えやすく、画面に表示する処理やログ出力を入れておけば、動作を確認しながら進められます。
ここで、改めてdo-while文の良さを整理すると、以下のような点が挙げられます。必ず一回実行する性質は、はじめてプログラムを書く時期にとてもありがたいものです。条件の前に処理が流れるという特徴は、ユーザーにメッセージを見せたいときや、繰り返しのスタート地点を決めたいときにぴったり合います。とりあえず実行し、そのあとで継続するかどうか判断するという、自然な流れで書けるのも魅力です。ほかにも、読みやすさ、直感的な処理、入力確認と相性が良いなど、現場でも目にすることが少なくありません。
さらに、do-while文は短いコードでも書けますが、工夫すればもっと分岐や処理を混ぜながら実践的に活用できます。次のような例では、メニュー形式で複数の選択肢を表示し、ユーザーが選択した内容に応じて処理を繰り返します。ループが終わる条件を人間の感覚に近い形で設定できるため、初心者にもやさしい構造です。
メニュー形式のサンプルコード
string input;
do
{
Console.WriteLine("メニューを選択してください");
Console.WriteLine("1: あいさつを表示");
Console.WriteLine("2: 今日の日付を表示");
Console.WriteLine("3: 終了する");
Console.Write("入力してください: ");
input = Console.ReadLine();
if (input == "1")
{
Console.WriteLine("こんにちは!");
}
else if (input == "2")
{
Console.WriteLine(DateTime.Now.ToString());
}
else if (input != "3")
{
Console.WriteLine("正しい数字を入力してください");
}
} while (input != "3");
Console.WriteLine("プログラムを終了します。");
このような書き方をすると、ユーザーは自然な流れで操作ができ、プログラム側も必ずメニューを一度は表示できます。もしこの処理をwhile文だけで書くと、メニューが一度も表示されない可能性があり、プログラムの見通しが悪くなります。do-while文なら、そのような不安がなく、繰り返し回数を意識せず実装できます。
もうひとつ大切な点は、条件式の終わりにセミコロンを付けることです。小さな記号ですが、忘れてしまうとエラーになります。とくに慣れていないうちはミスが起きやすいので、コードを書くときは「do { } while(条件);」という形を目で確認しながら書き進めると安心です。繰り返し処理を支えるループ構文の中でも、do-while文はやさしく扱える一方、無限ループになる危険もあります。条件がずっと変わらない場合、ループが終わらず止まらなくなるため、変数の更新や入力値の変化が必ず起きるように意識しておく必要があります。
プログラミングにおいて、ループは必ずと言っていいほど使う場面が出てきます。慣れてしまえば、それぞれのループの意味がはっきりと違っていることに気づきます。do-while文は、「まず一度だけ動かす」という場面と相性が良く、初期表示、初回処理、最初の確認、エラーの再入力など多くの状況で役に立ちます。やさしい構文でありながら、使いどころが多いのが魅力です。
初心者の方こそ、短いサンプルをいくつか自分で書きながら、動きの違いを確かめると理解が深まります。とくに、コンソールアプリでユーザー入力を扱うと、実際の動作が目に見えるため、手応えを感じながら覚えられます。自然な文章で出力したり、分岐を増やしたりしながら応用していくと、プログラムが成長していくのを実感できるでしょう。小さなコードから始めて、少しずつ機能を足していく方法なら、挫折しにくく、気づいたときには実践的な書き方が身に付いています。
生徒
「do-while文は、最初に一度は処理が実行されるっていうのが、やっぱり大きな違いなんですね。while文だと条件次第で一度も動かないこともありますけど、do-while文なら必ず画面に表示したり、入力を求められたりするんだと分かりました。」
先生
「その通りです。とくに、ユーザーの操作を前提にしたプログラムでは大きな意味があります。はじめにメニューを出したり、確認を求めたりする処理は、do-while文の得意とするところですね。」
生徒
「サンプルコードで、選択肢ごとに動きを変える方法も分かりやすかったです。無限ループになるのが怖いですが、条件を変える処理を忘れなければ大丈夫なんですね。」
先生
「変数の更新や、入力のチェックを確実に行えば安心です。ループは怖いものではなく、正しく使えばとても頼れる仕組みです。これから先、もっと複雑な処理を書くときにも、do-while文の考え方はきっと役に立ちますよ。」