C#のdo-while文とは?while文との違いを初心者向けに徹底解説
生徒
「先生、C#のwhile文は条件によって繰り返しができると分かったんですが、似たような名前のdo-while文というものがあると聞きました。何が違うんですか?」
先生
「C#のdo-while文は、条件をチェックするタイミングが通常のwhile文とは違うんだよ。まずは必ず一度処理を実行してから、条件を確認するのが特徴なんだ。」
生徒
「最初に必ず一度動くということですか?詳しく教えてください!」
先生
「それでは、基礎から分かりやすく見ていこうね!」
1. do-while文とは?
C#のdo-while文とは、プログラムの中で同じ処理を何度も繰り返すためのループ処理の仕組みの一つです。通常のwhile文との最大の違いは、条件の判定を最初に行うか、最後に行うかという点にあります。do-while文では、まず最初にブロック内の処理を無条件に1回実行します。その実行が終わった後に条件が正しいかどうかを判定し、正しければもう一度繰り返し、正しくなければループを終了します。これにより、条件に関わらず絶対に一度は処理を実行したい場面で非常に役立ちます。プログラミング初心者の方でも、日常の身近な例えを思い浮かべるとスムーズに理解できるようになります。
2. while文とdo-while文の決定的な違い
通常のwhile文とdo-while文の決定的な違いは、条件判定のタイミングです。通常のwhile文は、ループに入る前に条件式をチェックします。そのため、もし最初から条件が満たされていない場合は、中の処理は一度も実行されずにそのまま次の処理へ進んでしまいます。これに対して、do-while文は、処理を先に行ってから最後に条件式をチェックします。そのため、条件を満たしていない初回の実行であっても、必ず一度は中のコードが動くことになります。この違いをしっかりと把握することが、思い通りのプログラムを作るための近道となります。パソコン操作やプログラミングの基礎を固めるうえで、この仕組みの違いはとても重要なポイントです。
3. do-while文の基本的な書き方と構文
それでは、C#におけるdo-while文の具体的な書き方を確認していきましょう。プログラミング言語の構文ルールに沿ってコードを記述する必要があります。doというキーワードの後に中括弧を配置し、その中に繰り返したい処理を記述します。そして、中括弧の閉じ括弧の直後にwhileと記述し、その後の丸括弧の中に継続するための条件式を書き、最後にセミコロンを置きます。この最後のセミコロンを忘れてしまうと、コンパイルエラーというプログラムのビルド時のミスが発生してしまうため注意が必要です。初心者の方は、この独特な形をまずはそのまま覚えていきましょう。
int count = 1;
do
{
Console.WriteLine("現在のカウントは " + count + " です。");
count++;
} while (count <= 3);
上記のコードを実行したときの出力結果は次のようになります。コンソール画面にどのように文字が表示されるかを確認してみましょう。
現在のカウントは 1 です。
現在のカウントは 2 です。
現在のカウントは 3 です。
4. 条件が最初から偽の場合の動きを比較する
次に、条件が最初から満たされていない場合における、通常のwhile文とdo-while文の動きの違いを具体的なコードで比較してみましょう。条件が合わないとき、それぞれの文がどのような挙動を示すのかを把握することは、バグのない安全なプログラムを作るために欠かせない知識です。まずは、通常のwhile文で条件が最初から偽の場合を確認します。偽とは、条件式の結果が正しくない、つまり「間違い」である状態を指します。
int number = 10;
while (number < 5)
{
Console.WriteLine("この文章は表示されません。");
}
上記のwhile文では、変数numberの値が10であり、条件である「5より小さい」という判定に最初から一致しないため、中の処理は一切実行されず画面には何も表示されません。一方で、同じ条件でdo-while文を使った場合の動きを次のコードで見ていきましょう。
int number = 10;
do
{
Console.WriteLine("条件に関わらず一度だけ表示されます。");
} while (number < 5);
このコードを実行すると、次のような出力結果が得られます。条件を満たしていないにもかかわらず、最初の1回だけ処理が実行されていることが分かります。
条件に関わらず一度だけ表示されます。
5. ユーザーからの入力を受け取る実践的な使い方
do-while文が実際のアプリケーション開発においてどのように活用されるのか、具体的な例を見ていきましょう。最もよく使われる代表的な場面の一つが、ユーザーからのキーボード入力を受け取り、正しい値が入力されるまで繰り返し確認を求める処理です。例えば、ゲームの継続確認や、正しいパスワードの入力画面などでこの仕組みが活躍します。ユーザーが何かを入力する行為は、最低でも一度は必ず行われるため、最初に処理を走らせるdo-while文と非常に相性が良いのです。初心者の方でも理解しやすいように、簡単な数字の入力を促すプログラムの例を作成しました。
string input;
do
{
Console.WriteLine("終了するには yes と入力してください。");
input = Console.ReadLine();
} while (input != "yes");
Console.WriteLine("プログラムを終了します。");
このプログラムでは、ユーザーが「yes」という文字を入力するまで、何度でも画面に文字入力を促すメッセージが表示され続けます。このように、ユーザーの操作に応じて処理を継続させる仕組みを簡単に実装できるのが、do-while文の大きな魅力です。
6. 無限ループに注意するポイントと対策
最後に、do-while文をはじめとする繰り返し処理を使ううえで、最も注意しなければならない無限ループについて解説します。無限ループとは、終わりの条件を満たすことができず、プログラムが永遠に止まらなくなってしまう現象のことです。パソコンに大きな負担をかけてしまい、アプリがフリーズする原因になります。特にdo-while文では、ループ内の処理で条件を変化させる変数の値を更新し忘れると、永遠に条件式が成立し続けてしまいます。安全なプログラムを作るために、必ずループを抜けるための仕組みが正しく機能しているかを確認するクセをつけましょう。初心者の方が陥りやすいミスを防ぐためのシンプルなコード例を確認してみましょう。
int score = 0;
do
{
Console.WriteLine("現在のスコア: " + score);
score += 25;
} while (score < 100);
Console.WriteLine("目標スコアに到達しました。");
上記のコードでは、scoreの値を毎回25ずつ増やしていくことで、最終的に100未満という条件を満たさなくなり、無事にループを抜け出すことができます。このように、変化する値の増減が正しく記述されているかを意識することが大切です。