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回目
a
は0
a < 10
はtrue
なので中身を実行する
a
を出力
a += 2
を実行
ループ2回目
a
は2
a < 10
はtrue
なので中身を実行する
a
を出力
a += 2
を実行
という感じで繰り返されて、
ループ6回目
a
は10
a < 10
はfalse
なので中身を実行しない
while
の次へジャンププログラム終了
という流れ。何度も読み返して、ゆっくり慣れていってね!
条件式
最初から条件式が false
だと、中の 処理は一回も実行されない ってこと。
while (false) {
std::cout << "(´д`)\n";
}
逆に、true
だと中から抜け出せない 無限ループ になる。
while (true) {
std::cout << "You are an idiot\n☺ ☺ ☺\n";
}
こうなっても 抜け出す手段はある けど、それは次の次のページ。
true
のときに実行されるから注意!私でも逆にしちゃうことはあるけど。