While文とは? わかりやすく解説

while文

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/01/14 13:45 UTC 版)

while文 (: while statement) はプログラミング言語において繰り返し(ループ)の制御構造を記述するための (statement) である。英語の接続詞 while の意味「〜である間」の通り、継続条件として指定された(制御式)を評価した値が真である間、ループ本体 (loop body) [1]の処理を繰り返し実行する。

while文では通例、ループの最初に継続条件式を評価する。したがって、継続条件式が偽であった場合はループ本体の処理は一度も実行されない。プログラミング言語によっては、ループの本体を一度実行した後、継続条件式を評価するdo-while文をサポートするものもある。do-while文では継続条件式の真偽にかかわらず、ループ本体の処理が必ず一度は実行される。詳細は当該記事も参照のこと。

なお、関数型言語では通例、whileループは文ではなく式 (expression) として定義される。while式はwhile文よりもプログラム中で記述できる位置に関して柔軟性がある。Haskellのような純粋関数型言語では、ループは常に再帰末尾再帰)を使って記述するため、whileループの構文をサポートしないものもある。

Cおよびそれに類する言語

C言語, C++, C#, D, Java, Perlなどでは以下のような構文である。

while (条件)
     // ここの部分を「ループ本体」と呼ぶ

このループの実行は、次のような手順となる。

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

「条件」がはじめから偽の場合は、「文」は一度も実行されない。

ループ本体が複数の文からなる場合、ブロック(複文)を使う。

while (条件) {
    ...
}

プログラム例

int x = 0;
while (x < 100) {
    printf("x は %d です。\n", x);
    ++x; // x の値を 1 だけ増やす(インクリメントする)。
}

これを実行すると、次のように標準出力に出力する。

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

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

変数xの初期値は0であり、ループ本体の処理を1回実行するたびにインクリメントされる。xの値が100未満すなわち99のときまではループ本体の処理が実行され、最終的にxの値が100になる。その後、継続条件式を評価するとき、条件は成り立たなくなり、ループは終了する。

ループの脱出と継続

ループの脱出と継続の制御に利用できる分岐文を備える言語もある。break文は、ループ本体の複文の途中からであっても、またwhileの条件が成り立っていても、ループ中から抜け出す。continue文はループの途中から、ループ本体の最後に飛び[2]、while文の場合にはそこから先頭に戻って条件の評価となる。

goto文を使える言語では、whileループの脱出にgoto文を使うこともできる。通常はbreak文のほうが好ましいが、多重ループを脱出する場合やswitch文をループ本体に含む場合などでは、goto文のほうが簡潔に記述できる。return文や例外のスローによってループを脱出することのできる言語もある。

Pascal

Pascalにおけるwhile文は、C言語系列と概ね同様であり、キーワードとして whiledo を使う。一方、do-while文に関しては、repeat-until文が相当するが、キーワードとして repeatuntil を使う点が異なるだけでなく、制御式として継続条件ではなく終了条件(真のときループを終了)を記述する点も異なる。

構文

while 条件 do 
repeat ; ...;  until 条件

LL(1)の単純な構文というPascalのポリシーから、両者で全く違うキーワードを使う設計(デザイン)となっている。

whileでは複数の文を置く場合には begin-end で複文にしなければならないが、repeat-until はそれ自身が暗黙のブロック構文になっているので、セミコロンで区切って複数の文を置くことができる。

Basic

Full BASIC(INCITS/ISO/IEC 10279-1991 (R2005) "Information Technology – Programming Languages – Full BASIC")には、ループの多くのパターンに対応する柔軟性のあるDo-Loop文がある。またVisual Basicには、それに加えて伝統的なBASICのWHILEに近いWhile文もある。

構文

Visual Basic .NETにおけるWhile文は以下のような構文である[3]Visual Basicでは While...Wend だが、VB.NETでは While...End While となっている。

While 条件
    ...
    [ (Continue|Exit) While ]
    ...
End While

Exit While はbreak文、Continue While はcontinue文に相当する機能を持つ。

Do...Loop文は以下のような構文である[4]

Do [(While|Until) 条件]
    ...
    [ (Continue|Exit) Do ]
    ...
Loop [(While|Until) 条件]

Do の後に While を続ければ、while文に相当し、Loop の後に Until を続ければ、Pascalの repeat-until に相当する。どちらにも条件を付けなければ、単純な無限ループになる。

  1. ^ JIS X 3010:2003「プログラム言語C」§6.8.5「繰返し文」
  2. ^ JIS X 3010:2003「プログラム言語C」§6.8.6.2「continue文」
  3. ^ While...End While Statement (Visual Basic) | Microsoft Docs
  4. ^ Do...Loop Statement (Visual Basic) | Microsoft Docs

関連項目


while 文

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/12 05:34 UTC 版)

C Shell」の記事における「while 文」の解説

while 文は式を評価するその結果真なら続くコマンド群を実行し、再び式の評価に戻る。 while (式) コマンド1 コマンド2 コマンド3 ...end

※この「while 文」の解説は、「C Shell」の解説の一部です。
「while 文」を含む「C Shell」の記事については、「C Shell」の概要を参照ください。

ウィキペディア小見出し辞書の「While文」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「While文」の関連用語

While文のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



While文のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのwhile文 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのC Shell (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS