C言語のwhile文とdo-while文の違いを完全解説!初心者でも理解できる繰り返し処理の基本
生徒
「C言語で同じ処理を何回も繰り返す方法ってあるんですか?」
先生
「ありますよ。C言語では繰り返し処理を行うために、while文やdo-while文という仕組みを使います。」
生徒
「while文は聞いたことがありますが、do-while文とは何が違うんですか?」
先生
「大きな違いは条件をチェックするタイミングです。while文は最初に条件を確認しますが、do-while文は処理を一度実行してから条件を確認します。」
生徒
「なるほど。処理が実行される順番が違うんですね!」
先生
「その通りです。それではC言語初心者でも分かるように、while文とdo-while文の違いを具体例で見ていきましょう。」
1. C言語のwhile文とは?
while文は、条件が成立している間、同じ処理を何度も繰り返すためのループ処理(繰り返し処理)です。プログラムの世界では、同じ作業を何度も行うことが多くあります。そのような場合にwhile文を使うと効率よく処理を書くことができます。
たとえば、数字を1から5まで順番に表示する処理を考えてみましょう。手作業で書くと同じコードを何回も書く必要がありますが、while文を使えば自動的に繰り返すことができます。
while文は条件を先に確認するという特徴があります。条件が最初から成立していなければ、処理は一度も実行されません。
2. while文の基本構文
C言語のwhile文は次のような書き方をします。
while(条件式)
{
繰り返したい処理
}
ここで使われている条件式とは、「条件を判断する式」のことです。たとえば「変数が5より小さいかどうか」などを判断します。
条件が真(true)なら処理を実行し、処理が終わると再び条件を確認します。条件が偽(false)になると、while文は終了します。
この仕組みによって、同じ処理を何度も繰り返すことができます。
3. while文のサンプルプログラム
それでは、実際のC言語プログラムを見てみましょう。次の例では、数字を1から5まで表示します。
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 5)
{
printf("%d\n", i);
i++;
}
return 0;
}
このプログラムでは、変数iを使って回数を管理しています。i++は「変数を1増やす」という意味です。
処理の流れは次のようになります。
1
2
3
4
5
条件「i <= 5」が成立している間は処理が繰り返されます。6になった瞬間に条件が偽になり、ループが終了します。
4. C言語のdo-while文とは?
do-while文もwhile文と同じく、繰り返し処理を行うための構文です。しかし大きな違いがあります。
それは処理を先に実行してから条件を確認するという点です。
つまり、条件が最初から成立していなくても必ず一回は処理が実行されるのが特徴です。
たとえばゲームで「少なくとも一回はサイコロを振る」というような処理では、do-while文がよく使われます。
5. do-while文の基本構文
C言語のdo-while文の基本構文は次のようになります。
do
{
繰り返したい処理
}
while(条件式);
while文との大きな違いはdoから始まる点と、最後のwhileの後にセミコロンが必要な点です。
また、処理の順番も重要です。
- 処理を実行する
- 条件を確認する
- 条件が真なら繰り返す
この順番になるため、必ず一回は処理が実行されます。
6. do-while文のサンプルプログラム
次にdo-while文のサンプルプログラムを見てみましょう。
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d\n", i);
i++;
}
while(i <= 5);
return 0;
}
このプログラムの実行結果は次の通りです。
1
2
3
4
5
見た目の結果はwhile文と同じですが、内部の処理順序は異なっています。do-while文では最初に処理が実行される点がポイントです。
7. while文とdo-while文の違い
ここで、while文とdo-while文の違いを整理してみましょう。
| 構文 | 条件確認のタイミング | 最低実行回数 |
|---|---|---|
| while文 | 処理の前 | 0回 |
| do-while文 | 処理の後 | 1回 |
この違いを理解すると、どの場面でどちらを使うべきか判断しやすくなります。
8. 条件が最初から成立しない場合の違い
最後に、条件が最初から成立しない場合の違いを見てみましょう。
while文の場合です。
#include <stdio.h>
int main()
{
int i = 10;
while(i < 5)
{
printf("実行されました\n");
}
return 0;
}
この場合、条件は最初から偽なので一度も実行されません。
(何も表示されない)
同じ条件をdo-while文で書くと次のようになります。
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("実行されました\n");
}
while(i < 5);
return 0;
}
この場合は一回だけ実行されます。
実行されました
この違いがwhile文とdo-while文の最も重要なポイントです。プログラムの目的に合わせて、適切なループ処理を選ぶことがC言語プログラミングでは大切になります。
まとめ
ここまで、C言語における繰り返し処理の基本であるwhile文とdo-while文の違いについて詳しく解説してきました。C言語プログラミングを学ぶうえで、繰り返し処理の理解は非常に重要です。なぜなら、実際のプログラムでは同じ処理を何度も実行する場面が非常に多く、ループ処理を使いこなすことで効率的なプログラムを書くことができるからです。
C言語のwhile文は「条件を先に確認してから処理を実行する」という特徴を持つループ構文です。条件式が真である間は処理が繰り返されますが、最初の段階で条件が偽の場合は一度も処理が実行されません。この仕組みによって、プログラムの流れを安全に制御することができます。例えば、データの数が分かっている場合や、条件が成立しているときだけ処理を行いたい場合などにwhile文は非常に便利です。
一方で、C言語のdo-while文は「処理を一度実行してから条件を確認する」という特徴があります。そのため、条件が成立していなくても必ず一回は処理が実行されます。この特徴は、少なくとも一度は処理を実行する必要があるプログラムで役立ちます。例えば、ユーザー入力の確認処理や、ゲームの開始処理など、最初の一回を必ず実行したい場面ではdo-while文が適しています。
C言語のwhile文とdo-while文の最大の違いは、条件を確認するタイミングにあります。while文は処理の前に条件を確認するため、実行回数がゼロ回になる可能性があります。一方でdo-while文は処理の後に条件を確認するため、最低でも一回は必ず実行されます。この違いを理解することで、プログラムの目的に合わせた適切なループ処理を選択できるようになります。
また、C言語の繰り返し処理では、ループが終了する条件を正しく設定することも非常に重要です。条件を間違えると無限ループが発生してしまい、プログラムが終了しなくなることがあります。そのため、ループの中では変数を更新する処理を必ず書く必要があります。例えばカウンタ変数を増やす「i++」のような処理を忘れてしまうと、条件が永遠に成立し続けてしまうため注意が必要です。
C言語の初心者が繰り返し処理を学ぶ際には、まずwhile文を理解することが基本になります。while文の動作を理解したうえで、do-while文との違いを比較すると、繰り返し処理の仕組みをより深く理解することができます。さらに、for文など他のループ構文も合わせて学ぶことで、C言語のプログラム構造をより柔軟に設計できるようになります。
実際のC言語プログラムでは、繰り返し処理を使って配列の処理を行ったり、大量のデータを順番に処理したり、ユーザー入力を確認したりする場面が多くあります。while文とdo-while文を正しく使い分けることで、読みやすく効率的なプログラムを書くことができます。C言語のループ処理を理解することは、プログラミングの基礎を身につけるうえでとても大切なステップです。
特にプログラミング初心者の方は、サンプルプログラムを実際にコンパイルして動かしてみることで理解が深まります。コードを書いて実行し、条件を変えてみたり、カウンタの値を変更してみたりすることで、while文とdo-while文の動作の違いを体験的に理解することができます。繰り返し処理の仕組みをしっかり理解することで、C言語プログラミングの基礎力は確実に向上していきます。
まとめのサンプルプログラム
最後に、while文とdo-while文の違いをもう一度確認できる簡単なサンプルプログラムを紹介します。条件が最初から成立しない場合の動作を比較してみましょう。
#include <stdio.h>
int main()
{
int num = 10;
printf("while文の結果\n");
while(num < 5)
{
printf("whileが実行されました\n");
}
printf("do-while文の結果\n");
do
{
printf("do-whileが実行されました\n");
}
while(num < 5);
return 0;
}
このC言語プログラムでは、変数numの値が最初から条件を満たしていないため、while文の処理は一度も実行されません。しかしdo-while文は処理を先に実行するため、一回だけ表示される結果になります。このように、C言語のwhile文とdo-while文ではループの開始タイミングが異なることを理解しておくことが重要です。
while文の結果
do-while文の結果
do-whileが実行されました
生徒
今日の学習で、C言語のwhile文とdo-while文の違いがだいぶ分かってきました。while文は条件を先に確認する繰り返し処理で、条件が成立していない場合は一度も実行されないんですよね。
先生
その通りです。C言語のwhile文は条件判定を最初に行うループ構文なので、条件が偽の場合は処理が実行されません。この特徴はプログラムの安全性を保つうえでとても重要です。
生徒
それに対してdo-while文は、処理を一回実行してから条件を確認するので、必ず一回は実行されるんですよね。条件チェックのタイミングが違うというのが大きなポイントでした。
先生
よく理解できていますね。C言語の繰り返し処理では、while文とdo-while文の違いを理解して使い分けることがとても大切です。プログラムの目的に合わせてループ構文を選ぶことが、良いプログラムを書くコツになります。
生徒
これからは、ユーザー入力の処理や回数が決まっていない処理ではwhile文を使ったり、最低一回は実行したい処理ではdo-while文を使うように考えてみます。
先生
とても良い考え方です。C言語のwhile文、do-while文、そしてfor文などの繰り返し処理をしっかり理解すれば、より実用的なプログラムを書くことができるようになります。これからもサンプルプログラムを書いて動作を確認しながら学習を続けていきましょう。