本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第7回|C言語のwhile文と反復処理を学ぶ:条件が成り立つ間くり返す

はじめてのC言語 | 第7回
はじめに
前回は、for 文を使って回数を決めた繰り返し処理を学びました。
今回は、条件が成り立つ間だけ処理を繰り返す while 文を扱います。
この回の目的は次の4点です。
- while 文の基本形を理解する
- 条件によって繰り返しを止める方法を知る
- カウンタ変数を使った反復処理を書けるようにする
- 無限ループを避けるための基本を押さえる
while 文とは何か
while 文は、条件式が真である間、同じ処理を繰り返す構文です。
基本形は次のとおりです。
while (条件式) {
繰り返す処理;
}意味は次のとおりです。
- 条件式が真なら処理を実行する
- 処理のあとで再び条件式を判定する
- 条件式が偽になったら繰り返しを終了する
最初のサンプルコード
ソースコード
while_sample.c という名前で保存します。
#include <stdio.h>
int main(void) {
int i = 1;
while (i <= 5) {
printf("%d\n", i);
i++;
}
return 0;
}実行手順
1. 作業ディレクトリに移動する
cd ~/Desktop2. コンパイルする
clang while_sample.c -o while_sample3. 実行する
./while_sample実行結果:
1
2
3
4
5コードの読み方
int i = 1;
繰り返し回数を管理する変数 i を宣言し、1 を代入しています。
while (i <= 5)
i が 5 以下である間、波かっこの中を繰り返します。
printf(“%d\n”, i);
現在の i の値を表示します。
i++;
1回の処理が終わるたびに i を1増やします。
これにより、いつか i <= 5 が偽になり、ループが終了します。
while 文の処理の流れ
次のコードを例にします。
int i = 1;
while (i <= 3) {
printf("%d\n", i);
i++;
}処理の流れは次のとおりです。
- i に 1 を入れる
- i <= 3 を判定する
- 真なら中の処理を実行する
- i++ で i を増やす
- 再び条件式を判定する
- 偽になるまで繰り返す
for 文との違い
for 文と while 文は、どちらも繰り返し処理に使います。
for 文が向いている場面
- 何回繰り返すかが最初から分かっている
- カウンタを1ずつ増減させる
例:
for (i = 1; i <= 5; i++) {
printf("%d\n", i);
}while 文が向いている場面
- 条件が満たされている間だけ繰り返したい
- 終了回数が最初から決まっていない
この段階では、回数が明確なら for、条件ベースなら while と考えておけば十分です。
0から始める例
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
return 0;
}実行結果:
0
1
2
3
4i < 5 なので、5 は表示されません。
if 文と組み合わせる例
while 文の中でも条件分岐を使えます。
#include <stdio.h>
int main(void) {
int i = 1;
while (i <= 10) {
if (i % 2 == 0) {
printf("%d\n", i);
}
i++;
}
return 0;
}実行結果:
2
4
6
8
10無限ループに注意する
while 文では、条件式を偽にする処理を書き忘れると、ループが止まらなくなります。
誤った例:
#include <stdio.h>
int main(void) {
int i = 1;
while (i <= 5) {
printf("%d\n", i);
}
return 0;
}このコードでは i が変化しないため、i <= 5 がずっと真のままです。
結果として、無限ループになります。
正しくは、次のように i++ が必要です。
#include <stdio.h>
int main(void) {
int i = 1;
while (i <= 5) {
printf("%d\n", i);
i++;
}
return 0;
}初心者がつまずきやすい点
条件式の変化を忘れない
while 文では、条件が変わる仕組みを自分で書く必要があります。
この更新がないと終了しません。
= と == を混同しない
比較には == を使います。
正しい例:
while (i == 3) {
printf("%d\n", i);
}ただし、この例は i が変化しないと無限ループの原因になるため、実用上は注意が必要です。
波かっこを省略しない
1行でも波かっこは書く方が安全です。
while (i <= 5) {
printf("%d\n", i);
i++;
}よくあるエラー
expected expression
原因: while () の丸かっこの中が空です。
対処: 条件式を書く必要があります。
use of undeclared identifier
原因: 変数を宣言する前に使っています。
対処: 先に int i = 1; のように宣言します。
終わらない実行になる
原因: 更新処理がない、または条件式が常に真です。
対処: 条件がいつ偽になるかを確認します。
練習用コード
1から5まで表示する
#include <stdio.h>
int main(void) {
int i = 1;
while (i <= 5) {
printf("%d\n", i);
i++;
}
return 0;
}3回だけ文字列を表示する
#include <stdio.h>
int main(void) {
int count = 0;
while (count < 3) {
printf("Hello\n");
count++;
}
return 0;
}実行結果:
Hello
Hello
Helloまとめ
今回のポイントは次のとおりです。
- while 文は、条件が真である間だけ処理を繰り返す
- 条件式を偽にする更新処理が必要である
- for 文と同様に、カウンタ変数を使って反復処理を書ける
- 無限ループを避けるには、条件の変化を必ず意識する
この回では、while 文を使った繰り返し処理を確認しました。
for 文と while 文の両方を理解すると、基本的な反復処理はひと通り書けるようになります。
次回予告
次のステップでは、関数という考え方を学びます。
関数は、処理をひとまとめにして、必要なときに呼び出せる仕組みです。
同じ処理を何度も書かずに済むようになることで、コードはぐっと読みやすくなります。
少しずつ、プログラム全体を整理して書けるようになっていきます。
復習してみよう
復習したい方は、こちらもあわせてご覧ください。













