while文 / do...while文
while文とは、プログラミング言語において指定した条件が真(論理値:true 数値:1など0以外の値)の間だけ与えられた命令文の実行を繰り返す為の文でです。
ループの記述には、前置判定と後置判定の2つがあります。
前置判定(while文)
C言語では while(条件式) {命令文} が前置判定となります。
前置判定は最初に条件式の評価を行い、真であればループ内の処理を行う。
前置判定では条件が偽(論理値:false,数値:0)であれば一度もループ内の処理を行いません。
while文は以下の二通りの方法で記述します。
構文
while (条件式) 命令文;
while (条件式) { ... 命令文; ... }
前置判定(while文)を使用した記述例
// while文 program in C.
#include <stdio.h>
int main(int argc, char *args[])
{
int i = 0; // ループカウンタ
int total = 0; // 合計値
// カウンタが4未満かつ合計値が12以下の間ループする
while (i < 4 && total <= 12)
{
total += i * 2;
printf("Loop:%d Total:%d\n", i, total);
i++;
}
// カウンタが4未満かつ合計値が12以下の間ループする
while (i < 4 && total <= 12)
{
total += i * 2;
printf("Loop:%d Total:%d\n", i, total);
i++;
}
return 0;
}
上記例では1度目のwhile処理終了後、2度目のwhile処理を実施しますが、前置判定である為、条件式評価が偽となりループ処理が実行されません。
実行結果
Loop:0 Total:0
Loop:1 Total:2
Loop:2 Total:6
Loop:3 Total:12
後置判定(do...while文)
C言語では do {文} while(式); が後置判定となります。
後置判定は最初にループの処理を行い、その後に条件式の評価を行います。
do...while文は以下の二通りの方法で記述します。
※ セミコロンの位置に注意してください。
構文
do 命令文; while (条件式);
do { ... 命令文; ... } while (条件式);
後置判定(do...while文)を使用した記述例
// while文 program in C.
#include <stdio.h>
int main(int argc, char *args[])
{
int i = 0; // ループカウンタ
int total = 0; // 合計値
// カウンタが4未満かつ合計値が12以下の間ループする
do
{
total += i * 2;
printf("Loop:%d Total:%d\n", i, total);
i++;
} while (i < 4 && total <= 12);
// カウンタが4未満かつ合計値が12以下の間ループする
do
{
total += i * 2;
printf("Loop:%d Total:%d\n", i, total);
i++;
} while (i < 4 && total <= 12);
return 0;
}
上記例では1度目のdo...while処理終了後、2度目のdo...while処理を実施し、後置判定である為、処理実行後に条件式評価が偽となりループ処理が終了します。
実行結果
Loop:0 Total:0
Loop:1 Total:2
Loop:2 Total:6
Loop:3 Total:12
Loop:4 Total:20