【C言語のdo while文を徹底解説】使い方と実例で学ぶ繰り返し処理の基本

1. イントロダクション

C言語における繰り返し処理の重要性

プログラミングでは、同じ処理を何度も繰り返す「ループ処理」が重要です。C言語では、for文やwhile文、そして今回のテーマであるdo while文が繰り返し処理に使われます。この記事では、do while文に焦点を当て、基本的な使い方から実用例までを解説します。

2. do while文の基礎

do while文の基本構文

do while文は、少なくとも一度はループ内の処理を実行することを保証します。構文は以下の通りです。

do {
    // 実行する処理
} while (条件式);

この構文では、doブロック内の処理が先に実行され、その後に条件式が評価されます。条件式がtrueであれば再度ループが実行され、falseになればループを終了します。

while文との違い

while文では、条件式が先に評価され、trueの場合のみループ内の処理が実行されます。一方、do while文では、最初に条件式の評価が行われないため、少なくとも一度は処理が実行される点が大きな違いです。

3. do while文の使いどころ

ユーザー入力の再試行

do while文は、ユーザーからの入力を検証する際に有効です。例えば、パスワードの入力を繰り返す場合、do while文を使って最初の入力が正しいかどうかを確認することができます。入力が正しくない場合は、ユーザーに再度入力を促す処理を簡単に実装できます。

ゲームの繰り返し処理

ゲームプログラムで、プレイヤーが特定の行動を選択し続けるまで繰り返し処理を行う場合にもdo while文が活躍します。プレイヤーが「ゲームを続ける」を選択する限り、ゲームのループを継続するようなシナリオで使用されます。

4. do while文のコード例

基本的なdo while文の例

次に、do while文の基本的な使い方を示すコード例を紹介します。

#include <stdio.h>

int main() {
    int i = 0;

    do {
        printf("カウント: %d\n", i);
        i++;
    } while (i < 5);

    return 0;
}

この例では、doブロック内の処理が先に実行され、iの値が5未満である間はループが継続されます。そのため、0から4までの数が出力されます。

ユーザー入力の例

ユーザーから入力された値が特定の条件を満たすまでループを繰り返す場合のコード例です。

#include <stdio.h>

int main() {
    int number;

    do {
        printf("1から10までの数値を入力してください: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("入力された数値: %d\n", number);

    return 0;
}

このコードは、ユーザーが1から10の範囲外の数値を入力すると、再度入力を促します。正しい数値が入力されるまでループが続きます。

5. 無限ループと制御

無限ループの作成

do while文を使って無限ループを作成することも可能です。無限ループとは、条件式が常にtrueのため、永遠に繰り返されるループのことです。

do {
    // 無限に繰り返される処理
} while (1);

無限ループの制御方法

無限ループを制御するには、break文やcontinue文を使います。

  • break: ループから脱出するために使用します。
  • continue: ループの残りの処理をスキップし、次の繰り返しを開始します。

以下は、break文を使った無限ループの例です。

#include <stdio.h>

int main() {
    int count = 0;

    do {
        printf("ループ回数: %d\n", count);
        count++;
        if (count > 5) {
            break;
        }
    } while (1);

    return 0;
}

このコードでは、countが5を超えたときにbreak文が実行され、ループから抜け出します。

6. 複数条件を使ったdo while文

複数条件を使用する方法

do while文では、&&(AND)や||(OR)などの論理演算子を使って複数の条件を組み合わせることができます。

do {
    // 実行する処理
} while (条件式1 && 条件式2);

複雑な条件を使った例

以下の例では、ユーザーの入力が1から100の範囲にあるかどうかをチェックし、範囲外の場合は再度入力を促します。

#include <stdio.h>

int main() {
    int number;

    do {
        printf("1から100までの数値を入力してください: ");
        scanf("%d", &number);
    } while (number < 1 || number > 100);

    printf("入力された数値: %d\n", number);

    return 0;
}

このコードでは、入力された値が1以上かつ100以下でない限り、再度入力を求めます。

7. まとめ

do while文は、最低でも1回はループ内の処理を実行したい場合に便利な構文です。while文とdo while文を使い分けることで、プログラムの柔軟性を高めることができます。breakcontinueを使ってループを制御する方法や、複数条件を使った高度な使い方も学んで、C言語のループ処理をしっかりマスターしましょう。

8. 練習問題と解答例

問題

ユーザーに1から10までの整数を入力させ、正しい入力がされるまで再入力を促すプログラムを作成してください。入力が正しい場合は、入力された数値を2倍にして表示してください。

解答例

#include <stdio.h>

int main() {
    int number;

    do {
        printf("1から10までの数値を入力してください: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("入力された数値の2倍: %d\n", number * 2);

    return 0;
}

この練習問題では、do while文を使ってユーザー入力を検証し、範囲外の入力がされた場合に再入力を促す処理を実装しています。

9. 関連情報と次のステップ

do while文を理解したら、他のループ構文(for文、while文)との使い分けについても学ぶと良いでしょう。また、次に学ぶべきC言語の重要なトピックとして「ポインタ」があります。ポインタの概念を理解することで、より高度なプログラムの作成が可能になります。ぜひ次のステップとして学んでみてください。