while

ずーっと、ただし条件がある


今までのプログラムは、上から順に実行されるけどその処理は全部手で書いていた。

めんどくさいけどこれはしょうがない。

処理A1;

処理B1;

処理A2; // 同じような処理……

処理B2;

処理A3; // また同じような処理だ!

処理B3;

そのまま書くと、

  • 修正するときは全部直さなきゃいけない
  • 何をやっているのかが見づらい
  • 指定回数の繰り返しが実現できない

などなど問題が出てくる。

しかも機械に単純作業をさせるとなると、間違いなく 繰り返し が必要なんだ。信じてくれ。

この繰り返しをさせる文が、while 文。

文法はこんな感じ。

while ( 条件式 ) 繰り返す文

while (わいる、みたいに読む) は英語で ~である間 って意味だよ。

この条件式が true かどうかチェックして、繰り返す文を実行する。

実際に使うとこうなる。

#include <iostream>
int main() {
  int a = 0;
  while (a < 10) {
    std::cout << a << "\n";
    a += 2;
  }
  // 繰り返しが終わるとここにジャンプしてくる
}

条件式→繰り返す文→条件式→繰り返す文→…… という順序で動作する。

実行してみると、

0
2
4
6
8

ってなるはず。順に追ってみよう。

ループ1回目

a0

a < 10true なので中身を実行する

a を出力

a += 2 を実行

ループ2回目

a2

a < 10true なので中身を実行する

a を出力

a += 2 を実行

という感じで繰り返されて、

ループ6回目

a10

a < 10false なので中身を実行しない

while の次へジャンプ

プログラム終了

という流れ。何度も読み返して、ゆっくり慣れていってね!

条件式

最初から条件式が false だと、中の 処理は一回も実行されない ってこと。

while (false) {
  std::cout << "(´д`)\n";
}

逆に、true だと中から抜け出せない 無限ループ になる。

while (true) {
  std::cout << "You are an idiot\n☺ ☺ ☺\n";
}

こうなっても 抜け出す手段はある けど、それは次の次のページ。

true のときに実行されるから注意!私でも逆にしちゃうことはあるけど。