第7回|C言語のwhile文と反復処理を学ぶ:条件が成り立つ間くり返す

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析には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 ~/Desktop

2. コンパイルする

clang while_sample.c -o while_sample

3. 実行する

./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++;
}

処理の流れは次のとおりです。

  1. i に 1 を入れる
  2. i <= 3 を判定する
  3. 真なら中の処理を実行する
  4. i++ で i を増やす
  5. 再び条件式を判定する
  6. 偽になるまで繰り返す

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
4

i < 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 文の両方を理解すると、基本的な反復処理はひと通り書けるようになります。

次回予告

次のステップでは、関数という考え方を学びます。
関数は、処理をひとまとめにして、必要なときに呼び出せる仕組みです。

同じ処理を何度も書かずに済むようになることで、コードはぐっと読みやすくなります。
少しずつ、プログラム全体を整理して書けるようになっていきます。

復習してみよう

復習したい方は、こちらもあわせてご覧ください。

用途ごとに選ぶ C言語のおすすめ本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次