whileの使い方を解説します。
forとの違いは、forは回数が決まっている繰り返し(ループ)処理に適しているのに対して、whileは外部からの入力値によってループを抜けるときに力を発揮します。
記事の内容
- whileを使った繰り返し処理の書き方
- do whileを使った繰り返し処理の書き方
- while文に2つ以上の条件式を書く方法
whileを使った繰り返し処理の書き方
whileの使い方
while(条件式) { 処理; }
例1:
#include <stdio.h> void main() { int i=0; while(i<3) { printf("i=%d\n",i); i=i+1; } }
実行結果
i=0
i=1
i=2
while文ではカッコ内の条件式が成り立っている間だけ繰り返し処理を実行します。
始めはi=0なので条件式i<3に当てはまります。
そのため中カッコ内の処理が実行され、i=0と出力されます。
同時にi=i+1が実行されi=1となります。
3回目のループではi=2が出力された後にi=3となり、条件式に当てはまらないためwhile文から抜けます。
始めから条件式に当てはまらなかった場合、while文内の処理は一度も実行されません。
whileが主に使われるのは外部からの入力値によってループを抜けるときです。
例2:
#include <stdio.h> void main() { char c='0'; printf("input number 1~9\n"); while(c!='9') { c=getchar(); //キーボードから入力された値をcに代入 } printf("Correct!\n"); }
実行結果
1~8入力時:(出力なし、次のループへ)
9入力時:Correct!
このプログラムでは9が入力されたときだけループを抜け、画面にCorrect!と表示します。
それ以外の数字が入力された場合は次のループへ入り、入力を待ちます。
do whileを使った繰り返し処理の書き方
do whileの使い方
do { 処理; }while(条件式);
例:
#include <stdio.h> void main() { int i=0; while(i<3) { printf("i=%d\n",i); i=i+1; } }
実行結果
i=0
i=1
i=2
whileとの違いは条件判定が最後に来ている点です。
whileでは一度も処理を実行せずに終了することもできますが、do while文は必ず1回は処理を実行するコードが書けます。
do whileもwhileと同様、外部からの入力値によってループを抜けるときに主に使われます。
while文に2つ以上の条件式を書く方法
while文の条件式に2つ以上の条件を詰め込みたいときには&&または||を使います。
AかつBの条件式の書き方
条件Aと条件Bが同時に成り立つ場合を真としたいときは&&を使って以下のように書きます。
例:
#include <stdio.h> void main() { int i=0, j=0; while((j==0) && (i<5)) { printf("i=%d\n",i); i=i+1; j=j+1; } }
実行結果
i=0
AまたはBの条件式の書き方
条件Aか条件Bどちらかが成り立つ場合を真としたいときは||を使って以下のように書きます。
例:
#include <stdio.h> void main() { int i=0, j=0; while((j==0) || (i<3)) { printf("i=%d\n",i); i=i+1; j=j+1; } }
実行結果
i=0
i=1
i=2
3つ以上の条件式の書き方
3つ以上の条件を組み合わせたいときも&&または||で繋ぎます。
&&と||を同時に使った場合、&&が優先されます。
例:
#include <stdio.h> void main() { int i=0, j=0; while((j==0) || (i<3) && (i>0)) { printf("i=%d\n",i); i=i+1; j=j+1; } }
実行結果
i=0
i=1
i=2
まとめ:forとwhileの違いを理解して使い分けよう
C言語で繰り返し処理を実現するにはfor、while、do whileの3種類の書き方があります。
それぞれの使い時は以下です。
- for:繰り返し回数が決まっている場合
- while:外部入力によってループ回数を変えたい場合
- do while:whileを使いたいかつ最初の1ループ目は実行したい場合
whileは繰り返し回数が決まっている場合でも使えますが、forとwhileが入り乱れているとコードが見にくくなるので、その場合はforに統一した方がいいです。
C言語で行き詰まったら…
-
C言語・C++がわからない時に質問できるサイト・サービス5選
C言語を独学で勉強しているけど内容がイマイチわからない。もはや何がわからないのかもわからない。 C++のエラーが解決できない。ググってもわからない。わかる人に解説してほしい。 こんなお悩みにお答えしま ...
続きを見る