本文へスキップ
BecomeCoder

C言語コース · 第3章 制御構文 · レッスン12

while と do-while ― 条件でくり返す

ブラウザで完結

導入

回数が決まっていないくり返しには while を使います。「最低1回は実行してから条件を見る」do-while もあります。

説明

while (条件) { ... } は、条件が真のあいだくり返します。条件を先に判定してから本体を実行するので、最初から条件が偽なら1回も実行されません。中で条件を変えないと無限ループになるので注意します。

#include <stdio.h>

int main() {
    int count = 1;
    while (count <= 5) {
        printf("%d ", count);
        count++;            // これを忘れると無限ループ
    }
    printf("\n");
    return 0;
}

do { ... } while (条件); は、while と順番が逆で、先に中身を1回実行してから条件を判定します。条件が最初から偽でも、必ず1回は実行されるのが while との違いです。

#include <stdio.h>

int main() {
    int n = 10;
    do {
        printf("%d ", n);
        n--;
    } while (n >= 8);       // 10 9 8
    printf("\n");
    return 0;
}

次のように条件が最初から偽の場合を比べると、違いがはっきりします。while は0回、do-while は1回だけ実行されます。

#include <stdio.h>

int main() {
    int x = 100;
    while (x < 10) {
        printf("whileの中\n");   // 1度も表示されない
    }
    do {
        printf("do-whileの中\n"); // 条件が偽でも1回は表示される
    } while (x < 10);
    return 0;
}

この実行環境には安全のため時間制限があり、無限ループになっても自動で止まります。

やってみよう

while の条件や do-while の範囲を変えて、くり返し回数が変わることを確かめましょう。上の「条件が最初から偽」の例も実行して、whiledo-while の違いを目で確認してください。

演習

while を使って、1 から 5 までの数を横に並べて表示してください(1 2 3 4 5)。

ヒント1を見る

int i = 1; から始め、while (i <= 5) { printf("%d ", i); i++; }

実際に動かしてみよう

下のエディタにCを書いて「実行」を押すと、ブラウザ内のインタプリタで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(scanf を使う回は「標準入力」欄に値を入れてから実行します)。

C/C++ — ブラウザ内で実行

ブラウザ内でC/C++を動かす学習用インタプリタ(JSCPP)を読み込みます(入門向けのサブセットです)。
スクロールして表示された時点でも自動で読み込まれます。