while文は、指定した条件が真である限り、繰り返し処理を行うための制御構造です。
この記事では、while文の基本的な使い方から、応用的な使い方までをサンプルコードを交えてわかりやすく解説します。
while文とは
while文は、ある条件が成立している限り繰り返し処理を行うための制御構文です。条件式が真である場合に、ブロック内の処理を実行し、再度条件式を評価します。このプロセスを繰り返すことで、条件式が偽になるまで繰り返されます。 C#では、while文は以下のように書きます。
while (条件式)
{
// 繰り返し処理
}
while文の基本的な使い方
C#において、while文は指定した条件が真である限り、繰り返し処理を行うための制御構文です。while文の基本的な使い方について解説します。
while文の構文
while文の構文は以下のようになります。
while (条件式)
{
// 条件式が真である間、繰り返し実行される処理
}
条件式は真偽値を返す式であり、その結果がtrueである限り、中括弧内の処理が繰り返し実行されます。
while文の動作
while文は以下のように動作します。
- 条件式を評価する。
- 条件式がtrueであれば、中括弧内の処理を実行する。
- 中括弧内の処理が終了したら、再び条件式を評価する。
- 条件式がfalseであれば、while文から抜け出す。 以下は、1から10までの整数を順番に表示するプログラム例です。
int i = 1;
while (i <= 10)
{
Console.WriteLine(i);
i++;
}
このプログラムでは、変数iが1から始まり、10以下である限り繰り返し処理が行われます。変数iはループごとに1ずつ増加していきます。ループ内ではConsole.WriteLineメソッドを用いて変数iを表示しています。
while文の応用
while文は、基本的には指定した条件が成立している間、繰り返し処理を行います。しかし、その使い方はこれだけではありません。ここでは、while文の応用について解説します。
while文を使った繰り返し処理
while文を使った繰り返し処理とは、指定した回数だけ同じ処理を繰り返す方法です。例えば、「10回Hello World!と表示する」というプログラムを作成する場合、以下のようなコードになります。
int i = 0;
while (i < 10)
{
Console.WriteLine("Hello World!");
i++;
}
このプログラムでは、変数i
を初期化してから、i
が10未満である限りHello World!
と表示し、i
を1ずつ増やしています。このようにwhile文を使って同じ処理を繰り返すことができます。
while文を使った条件判定
while文は条件式が真である限りループします。そのため、条件式に変数や関数の戻り値などを使用することで動的なループ制御が可能です。 例えば、「ユーザーから入力された数字が偶数か奇数か判定する」というプログラムを作成する場合、以下のようなコードになります。
int num = int.Parse(Console.ReadLine());
while (num != 0)
{
if (num % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
num = int.Parse(Console.ReadLine());
}
このプログラムでは、ユーザーから入力された数字が偶数か奇数か判定し、「偶数です」または「奇数です」と表示します。
そして再度ユーザーから数字の入力を受け付け、ユーザーが0を入力するまでループします。
while文を使った無限ループ
while文は条件式が真である限りループします。そのため、「無限ループ」と呼ばれる特殊なループ制御も可能です。
例えば、Ctrl + C
キーを押して強制終了させるまでHello World!
と表示し続けるプログラムは以下のように書くことが出来ます。
while (true)
{
Console.WriteLine("Hello World!");
}
このプログラムでは、条件式に常に真(true)を指定しています。そのため、Ctrl + C
キー以外の方法でプログラムの実行を停止する必要があります。
while文の注意点
while文を使う際には、いくつか注意点があります。以下で詳しく解説します。
while文の条件式の書き方
while文の条件式は、真偽値を返す式である必要があります。例えば、以下のような条件式が考えられます。
int i = 0;
while (i < 10)
{
// 処理
i++;
}
この場合、i < 10
という条件式が真偽値を返すため、正常に動作します。しかし、以下のような条件式ではエラーとなります。
int i = 0;
while (i)
{
// 処理
i++;
}
この場合、i
は整数型であり、真偽値を返さないためエラーとなります。
他の言語では0以外ならtrue、0ならfalseとして判定されることもありますが、C#にはそのような仕様はありません。
while文の処理の中での条件式の変更
while文内で処理を行っている最中に、条件式を変更することも可能です。例えば、以下のように書くことができます。
int i = 0;
int limit = 10;
while (i < limit)
{
// 処理
if (i == 5)
{
limit = 7; // 条件式を変更する
}
else
{
i++;
}
}
この場合、途中でlimit
が7
に変更されているため、i
が7になった時点でループが終了します。
while文の処理の中でのbreak文の使用
while文内で処理を行っている最中に、特定の条件下でループから抜け出すことも可能です。その際にはbreak
文を使用します。例えば、以下のように書くことができます。
int i = 0;
while (true) // 無限ループ
{
// 処理
if (i == 10)
{
break; // ループから抜け出す
}
i++;
}
この場合、i
が10になった時点でループから抜け出しています。
while文の代替手段
while文以外にも、同じような繰り返し処理を行うための構文があります。ここでは、for文とdo-while文について説明します。
for文の使用
for文は、あらかじめ繰り返し回数が決まっている場合に使用されます。以下は、1から10までの数字を順番に表示するプログラムです。
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
このプログラムでは、iという変数を1から10まで1ずつ増やしながら、Console.WriteLineメソッドでiの値を表示しています。
for文の構造は、「初期化式」「条件式」「更新式」の3つから成り立ちます。初期化式では変数を初期化し、条件式では繰り返し処理を行う条件を指定します。更新式では変数を更新します。
do-while文の使用
do-while文は、最低でも一度は処理を実行したい場合に使用されます。以下は、ユーザーが入力した数字が0でなければ繰り返すプログラムです。
int num;
do
{
Console.Write("数字を入力してください(0で終了):");
num = int.Parse(Console.ReadLine());
} while (num != 0);
このプログラムでは、doブロック内でユーザーから数字を入力させています。
その後、whileブロック内でnumが0でなければ再度doブロック内の処理が実行されます。
以上がC#におけるwhile文以外の代替手段です。適切な構文を選択することで、より効率的なプログラミングが可能となります。