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


Last updated:2017/06/12
Author:efn

';