C++でのwhile文の使い方についてわかりやすく詳しく解説

C++プログラミングにおいて、ループ処理は非常に重要です。

その中でもwhile文は、特定の条件が満たされるまで繰り返し処理を行うための構文です。

本記事では、初心者向けにwhile文の基礎的な使い方から応用的な使い方まで詳しく解説します。

目次から探す

C++のwhile文とは

C++のwhile文は、指定した条件が真である限り、繰り返し処理を行うための制御構造です。

while文は、for文と同様に反復処理を行うために使用されますが、for文と異なり初期化式や増分式を省略することができます。

while文の基本的な構文は以下の通りです。

while (条件式) {
    // 条件式が真である間実行される処理
}

例えば、1から10までの整数を順番に表示するプログラムをwhile文を使って書く場合、以下のようになります。

#include <iostream>

int main() {
    int i = 1;
    while (i <= 10) {
        std::cout << i << std::endl;
        i++;
    }
    return 0;
}
1
2
3
4
5
6
7
8
9
10

このプログラムでは、変数iを初期値1で初期化し、iが10以下である限り繰り返し処理を行います。

繰り返し処理では、現在のiの値を表示してからiに1加算します。

これによって、1から10までの整数が順番に表示されます。

以上がC++のwhile文の基本的な使い方です。次はwhile文内でbreakやcontinueなども使った応用的な使い方について解説していきます。

while文の注意点

while文を使用する際には注意点もあります。

  • 条件式が常に真となって無限ループに陥らないよう注意する必要があります。
  • 変数や配列要素等を更新しないままループさせてしまうと無限ループに陥ることもあります。
  • 初めから一度も中括弧内の処理を実行しない可能性もあるため、必ず初期化や代入等で変数等を初期化する必要性もあります。

while文の応用例

while文は、繰り返し処理を行うためによく使われます。

ここでは、while文を使った繰り返し処理や入力の受け取り、条件の判定など、実際のプログラムでよく使われる応用例を紹介します。

while文を使った繰り返し処理

while文は、指定した条件が真である限り、繰り返し処理を行います。以下は、1から10までの数値を順番に表示するプログラムです。

#include <iostream>

int main() {
    int i = 1;
    while (i <= 10) {
        std::cout << i << std::endl;
        i++;
    }
    return 0;
}
1
2
3
4
5
6
7
8
9
10

このプログラムでは、変数iに初期値として1が代入されています。その後、while文でiが10以下である限り、std::cout関数を使って変数iの値を表示し、変数iに1ずつ加算しています。

このようにすることで、1から10までの数値が順番に表示されます。

while文を使った入力の受け取り

while文は、ユーザーからの入力を受け取る場合にもよく使われます。以下は、0が入力されるまでユーザーから数字を受け取って合計値を計算するプログラムです。

#include <iostream>

int main() {
    int sum = 0;
    int input;

    while (true) {
        std::cout << "数字を入力してください(0で終了): ";
        std::cin >> input;

        if (input == 0) {
            break;
        }

        sum += input;
    }

    std::cout << "合計: " << sum << std::endl;

    return 0;
}
42

このプログラムでは、変数sumに初期値として0が代入されています。

その後、無限ループ内でユーザーから数字の入力を受け付けています。

もしユーザーが0を入力した場合はループから抜け出して合計値を計算し、最後に合計値が入った変数sumの値を表示しています。

while文を使った条件の判定

while文は条件式が真か偽かでループ処理自体も制御することが出来ます。以下は、5以上10未満のランダムな整数値(5以上9以下)だけ表示するプログラムです。

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    srand((unsigned int)time(NULL));

    while (true) {
        int num = rand() % 10 + 1; // 1~10 の乱数生成
        if (num >= 5 && num < 10) { // 条件式
            std::cout << num << std::endl;
            break; // 条件式が成立したらループから抜け出す
        }
    }

    return 0;
}
7

if文内では、num変数が「5以上かつ10未満」という条件式に当てはまるかどうか判断しています。

num変数が条件式に当てはまらない場合は何もせず再度乱数生成します。

num変数が条件式に当てはまった場合、std::cout関数でその値(5以上9以下)だけ表示したあとループを抜けています。

これによって「5以上9以下」のランダムな整数値だけ表示することが出来ます。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す