while文

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

while文プログラミング言語において条件論理値:true,数値:1など0以外の値)の間だけ与えられたの実行を繰り返すループを記述するための文である。

ループの記述には、前置判定と後置判定の2つがある。前置判定は最初に条件式の評価を行い、真であればループ内の処理を行う。C言語などでは while(式) {文} が前置判定となる。後置判定は最初にループの処理を行い、その後に条件式の評価を行う。同様にCでは do {文} while(式); が後置判定となる。両者の違いは、前置判定では条件が偽(論理値:false,数値:0)であれば一度もループ内の処理を行わないの対して、後置判定では最低1回はループの内の処理が行われる点にある。

文法[編集]

Cおよびそれに類する言語の場合[編集]

C, C++, C#, D, Java, Perlなどでは基本的な構文は以下のようになる。

while(条件) {}

このループは次のような手順で実行される。

  1. 条件を評価する。条件がならば、ループを終了する。
  2. 真文を実行する。
  3. 条件の評価に戻る。

条件がはじめから偽の場合は、真文は一度も実行されないことになる。

C言語のwhile文は、初期化とカウンタ変数の更新を省略したfor文として書き換えることができる。したがって、C言語のwhile文はfor文を特殊化したものといえる。ただし、while文ではループの条件を省略できない点がfor文と異なる。

例文[編集]

int x = 0;
while (x < 100) {
    printf("x は %d です。\n",x);
    x++;
}

これを実行すると、次のような出力結果が得られる。

x は 0 です。
x は 1 です。

…………
 
x は 98 です。
x は 99 です。

はじめ変数xの値は0であり、真文が1回実行されるたびに1が加えられる。真文が100回実行されるとxの値は100になり条件が成り立たなくなるため、このときこのループは終了する。

ループを終了するには、ループの条件を偽にするほかに真文においてbreak文を使う方法もある。ループの条件が常に真であり、真文にbreak文が含まれていない場合(またはbreak文が実行されない場合)、ループは無限ループとなる。また、真文が複数の文からなる場合、continue文を使うことで真文の実行を中止し、条件の評価から処理を再開することができる。

Pascalの場合[編集]

Pascalでは、前置判定としてwhile, do を、また後置判定として repeat, until を使用する。

前置判定

while 条件 do

後置判定

repeat;...;until 条件

repeat-untilでは、条件式が偽の間はループの処理を行い、真になるとループを抜ける点が、Cなどの do-while と異なっている。whileと異なり、必要に応じ複数の文をrepeatとuntilの間における。

Visual Basicの場合[編集]

Visual Basicでは、条件が真の間にループを継続するための前置判定としてWhileDo Whileを、後置判定としてDoを用いる。

Whileによる前置判定

While 条件
    文
Wend

Do Whileによる前置判定

Do While 条件
    文
Loop

Doによる後置判定

DoLoop While 条件

Visual Basicでは、前置判定、後置判定を問わず、条件が偽の間にループを継続することも可能である。前置判定としてDo Until、後置判定としてDoを用いる。ただし、Whileとは異なり、Doを伴わないUntilは利用できない。

Do While文による偽の前置判定

Do Until 条件
    文
Loop

Do文による偽の後置判定

DoLoop Until 条件

関連項目[編集]