【C#入門】繰り返し処理(while文、do〜while文)の使い方を分かりやすいサンプルコードで徹底解説②
今回は繰り返し処理の続きです。
ここでは「while」「do〜while」について紹介します。
while文
while文は、繰り返しの回数が決まっていないループで使われることが多い制御文です。
1 2 3 4 |
while(ループの継続条件式) { 繰り返す処理 } |
for文は()の中に、「カウンタ変数の初期化」
「ループの継続条件式」「カウンタ変数の更新」を書きますが、
while文は「ループの継続条件式」のみを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
static void Main(string[] args) { int n, sum = 0; Console.Write("整数値>"); n = int.Parse(Console.ReadLine()); while (n > 0) //入力した値が0より大きければ繰り返す { sum += n; Console.Write("整数値>"); n = int.Parse(Console.ReadLine()); } Console.WriteLine($"合計値は{sum)です。"); } |
while文の実行結果
キーボードから入力した値を変数sumに繰り返し加算します。
継続条件式は「n>0」なので、0以下を入力すると処理を終了します。
もし、取材 に0以下の値が入力された場合には一度も加算処理を行わずに終了します。
このように、while文は条件によっては一度も処理を実行しない制御文です
もし、必ず1回は処理を実行したい場合には、do〜while文を使用します。
返す処理が1文の場合には、{}を省略することができます。
けれども、複数の文の場合に{}をつけ忘れると、最初の文しか繰り返されないので注意してください。
これは、for文の場合も同じです。
for文もwhile文も繰り返し制御を行いますが、一般にfor文は「n回処理を繰り返す」ときに使用され
while文は「〜の間処理を繰り返す」ときに使用される傾向があります。
最も、両者は構文上の違いがあるだけで、処理上の違いは傾向があります。
ですから、while文で「n回処理を繰り返す」ことも可能ですし、
for文で「〜の間処理を繰り返す」ことも可能です。
実際にどちらを用いるのかは、プログラマの好みの問題になります。
forとwhileの二重ループの比較
while文では、カウンタ変数の初期化と更新を()の外に記述するようになります。
特に多重ループでは、記述場所を間違いやすいので注意してください。
for文の二重ループ
1 2 3 4 5 6 7 8 9 10 |
for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 7; j++) { Console.Write("*") } Console.Write("¥n") } |
while文の二重ループ
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int i = 1; while (i <= 5) { int j = 1; while(j <= 7) { Console.Write("*"); j++; } i++; Console.Write("¥n"); } |
do〜while文
for文とwhile文は処理の前で繰り返し条件を判定する制御文ですが、
do~while文は処理の後で条件を判定する後判定の制御文です。
1 2 3 4 |
do { 繰り返す処理 }while(ループの継続条件式); |
1 2 3 4 5 6 7 8 9 10 11 12 |
static void Main(string[] args) { int n, sum = 0; do { Console.Write("整数値> "); n = int.Parse(Console.ReadLine()); sum += n; }while (n > 0); // 入力した値が0より大きければ繰り返す Console.WriteLine($"合計値は{sum}です。"); } |
do〜while文の実行結果
while文は 処理を実行しない場合がありますが、do〜while文では、
必ず1回は処理を実行します。
ですから、最初に0以下の整数値を入力した場合でも加算を実行します。
継続条件にかかわらず1回は処理を行いたいときにはdo-while文を使用してください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。