whileループ

| ループ構造 |
|---|
コンピュータプログラミングにおいて、whileループはブール条件に基づいてコードを繰り返し実行することを可能にする制御フロー 文です。whileループは、if文を繰り返し実行したものと考えることができます。
概要
while文は、コードブロックと条件式で構成されます。[1]条件式が評価され、真の場合、[1]コードブロックが実行されます。これは、条件式が偽になるまで繰り返されます。whileループはブロックの実行前に条件式をチェックするため、この制御構造は事前テストループとも呼ばれます。一方、do-whileループはブロックの実行後に条件式をテストします。
例えば、C、Java、C#、[2] Objective-C、C++(この場合、同じ構文を使用する)の言語では、コードフラグメント
int x = 0 ; while ( x < 5 ) { printf ( "x = %d \n " , x ); x ++ ; } まずxが5未満かどうかをチェックし、5未満であればループ本体に入り、printf()が呼び出されてxが1ずつ増加します。ループ本体の文の実行が完了すると、条件(x < 5)が再度チェックされ、ループが再度実行されます。この処理はxの値が5になるまで繰り返されます。
条件は常に真となり、無限ループを引き起こす可能性があります。この場合、ループの終了を制御する早期終了制御構造(break文など)が存在する可能性があります。例えば、次のようになります。
while ( true ) { // 複雑な処理を実行するif ( someCondition ) break ; // その他の処理} 例
これらの while ループは5 の階乗を計算します。
アクションスクリプト3
var counter : int = 5 ; var factorial : int = 1 ; while ( counter > 1 ) {階乗*= counter ; counter --; } Printf ( "Factorial = %d" ,階乗); エイダ
Ada.Integer_Text_IOを使用;手順 Factorial is Counter : Integer := 5 ; Factorial : Integer := 1 ; begin while Counter > 1 loop Factorial := Factorial * Counter ; Counter := Counter - 1 ; end loop ; Ada . Integer_Text_IO . Put (階乗);階乗の終了 ;APL
カウンター← 5階乗← 1 :カウンタ> 1 の階乗× ←カウンタカウンタ- ← 1の間: EndWhile ⎕ ←階乗 あるいは単に
! 5オートホットキー
カウンター := 5階乗 := 1 カウンタ > 1 の場合、階乗 *= カウンタ--MsgBox % 階乗スモールベーシック
counter = 5 ' カウンター = 5 factorial = 1 ' 変数「factorial」の初期値 カウンタ> 1 のとき、階乗=階乗*カウンタカウンタ=カウンタ- 1 のとき、EndWhile TextWindow . WriteLine ( "Factorial = " + factorial ) ビジュアルベーシック
Dim counter As Integer = 5 ' 変数を初期化して値を設定するDim factorial As Integer = 1 ' 階乗変数を初期化する counter > 1のとき、 factorial = factorial * counter counter = counter - 1を繰り返す' プログラムは、counter = 0 になるまで、ここで実行されます。 Visual Basic .NET の 'Debug.Print factorial ' Console.WriteLine(factorial)Bourne(Unix)シェル
counter = 5 factorial = 1 while [ $counter -gt 1 ] ; do factorial = $(( factorial * counter )) counter = $(( counter - 1 ))完了 $factorialをエコーする C、C++
int main () { intカウンター= 5 ; int階乗= 1 ; while ( counter > 1 ) {階乗*= counter -- ; } printf ( "%d" ,階乗); } ColdFusion マークアップ言語 (CFML)
スクリプト構文
カウンター = 5 ;階乗 = 1 ;while ( counter > 1 ) { 階乗 *= counter -- ; }writeOutput (階乗);タグ構文
<cfset counter = 5 > <cfset factorial = 1 > <cfloop condition = "counter GT 1" > <cfset factorial *= counter -- > </cfloop> <cfoutput> #階乗# </cfoutput>フォートラン
プログラムFactorialProg整数::カウンタ= 5整数::階乗= 1 do while ( counter > 1 )階乗=階乗*カウンタcounter =カウンタ- 1 end do print * 、階乗終了プログラムFactorialProg 行く
Go には while 文はありませんが、 for 文の一部の要素を省略するときに for 文の機能を持ちます。
カウンター、階乗: = 5、1 カウンタ> 1 の場合{カウンタ、階乗=カウンタ- 1 、階乗*カウンタ} Java、C#、D
ループのコードは Java、C#、D で同じです。
intカウンター= 5 ; int階乗= 1 ; while ( counter > 1 ) {階乗*= counter -- ; } JavaScript
counter = 5とします; factorial = 1とします; while ( counter > 1 )階乗*= counter -- ; コンソール.log (階乗) ;コトリン
出典: [3]
変数カウンタ= 5変数階乗= 1 while ( counter > 1 ) {階乗=階乗*カウンターカウンター=カウンター- 1 } println (階乗)ルア
カウンタ= 5階乗= 1 counter > 1の場合、 factorial = factorial * counterを実行し、 counter = counter - 1を実行します。終了 印刷(階乗)MATLAB、オクターブ
カウンター= 5 ;階乗= 1 ; while ( counter > 0 ) factorial = factorial * counter ; % 乗算counter = counter - 1 ; % 減算end 階乗マセマティカ
ブロック[{ counter = 5 、factorial = 1 }、(*counter と factorial をローカル化*) While [ counter > 1 、(*While ループ*) factorial *= counter ; (*乗算*) counter -- ; (*減分*) ]; 階乗]Oberon、Oberon-2、Oberon-07、コンポーネント Pascal
MODULE Factorial ; IMPORT Out ; VAR Counter , Factorial : INTEGER ; BEGIN Counter : = 5 ; Factorial : = 1 ; Counter > 1 の ときDO Factorial : = Factorial * Counter ; DEC ( Counter ) END ; 出力. Int (階乗, 0 ) END 階乗.Maya 組み込み言語
int $counter = 5 ; int $factorial = 1 ; while ( $counter > 1 ) { $factorial *= $counter ; $counter -= 1 ; } print ( "Factorial = " + $factorial + "\n" ); ニム
var counter = 5 # カウンター値を 5 に設定factorial = 1 # 階乗値を 1 に設定 while counter > 1 : # counter が 0 より大きい間factorial *= counter # 階乗の新しい値を counter に設定します。dec counter # counter を counter - 1 に設定します。 エコー階乗 終了しない while ループ:
while true : echo "助けて! ループに陥ってしまいました!" パスカル
Pascalにはwhileループの2つの形式があり、.whileは条件が真である限り1つの文を繰り返します(begin-endブロックで囲まれていない場合)。.は条件が偽になるまで1つ以上の文のブロックを繰り返し実行します。2つの主な違いは、条件が最初に偽の場合、.は0回実行されるのに対し、.は少なくとも1回実行されることです。repeat-untilwhilerepeat-untilwhilerepeat-until
プログラムFactorial1 ; var Fv :整数; 手順fact (カウンター:整数) ;変数 Factorial :整数; 階乗を開始:= 1 ; Counter > 1の場合、begin Factorial : = Factorial * Counter ; Counter := Counter - 1 end ; WriteLn (階乗)終了; begin Write ( '階乗を返す数値を入力してください: ' ) ; readln ( fv ) ; repeat fact ( fv ) ; Write ( '階乗を返す別の数値を入力してください (または終了するには 0 を入力してください): ' ) ; until fv = 0 ; end . パール
私の$counter = 5 ;私の$factorial = 1 ; while ( $counter > 1 ) { $factorial *= $counter -- ; # 乗算してから減算する} $factorialを印刷します。 whileループは、開いているファイルハンドルから行ごとに ($/行区切りで定義されているとおりに) データを読み込むためによく使用されます。
開くIN 、"<test.txt" ; while ( <IN> ) {印刷; } INを閉じる; PHP
$counter = 5 ; $factorial = 1 ;while ( $counter > 1 ) { $factorial *= $counter -- ; // 乗算してから減算します。} $factorialをエコーします。PL/I
PL/Iステートメントは、 for ループ、 while ループ、または do until ループのDOいずれかとして機能できます。
カウンタ 固定 初期値を宣言する(5 ); 階乗 固定 初期値を宣言する(1 );do while ( counter > 1 ) factorial = factorial * counter ; counter = counter - 1 ; end ; パイソン
counter = 5 # 値を5に設定しますfactorial = 1 # 値を1に設定しますwhile counter > 1 : # counter(5) が 0 より大きい間 factorial *= counter # 階乗の新しい値を counter に設定します。 counter -= 1 # カウンターを counter - 1 に設定します。print ( factorial ) # 階乗の値を出力します。終了しない while ループ:
while True : print ( "助けて!ループに陥ってしまいました!" )ラケット
Racket では、他のScheme実装と同様に、名前付き let がループを実装する一般的な方法です。
#lang racket ( define counter 5 ) ( define factorial 1 ) ( let loop () ( when ( > counter 1 ) ( set! factorial ( * factorial counter )) ( set! counter ( sub1 counter )) ( loop ))) ( displayln factorial ) マクロ システムを使用すると、whileループを実装するのは簡単な作業です (通常はマクロを導入するために使用されます)。
#lang racket ( define-syntax-rule ( while test body ... ) ; while ループを実装します( let loop () ( when test body ... ( loop )))) ( define counter 5 ) ( define factorial 1 ) ( while ( > counter 1 ) ( set! factorial ( * factorial counter )) ( set! counter ( sub1 counter ))) ( displayln factorial ) ただし、Scheme や Racket では命令型のプログラミング スタイルは推奨されないことがよくあります。
ルビー
# カウントダウンバリアントcounter = 5 factorial = 1 カウンタ> 1 の階乗* =カウンタカウンタ-= 1終了 階乗を置く # カウントアップバリアントcounter = 2 factorial = 1 カウンタ<= 5 の階乗* =カウンタカウンタ+= 1終了 階乗を置く さび
fn main () { let mut counter = 5 ; let mut factorial = 1 ; counter > 1の場合{階乗*= counter ; counter -= 1 ; } println! ( "{}" ,階乗); } 雑談
他の言語とは異なり、Smalltalk ではwhileループは言語構造ではなく、クラス内でBlockClosure1 つのパラメータを持つメソッドとして定義され、その本体はクロージャで、条件として self が使用されます。
Smalltalk には対応する whileFalse: メソッドもあります。
| count 階乗| count := 5 .階乗 := 1 .
[ count > 0 ] whileTrue: [階乗 := 階乗 * count . count := count - 1 ] .トランスクリプト 表示: 階乗迅速
var counter = 5 // カウンターの初期値を 5 に設定しますvar factorial = 1 // 階乗の初期値を 1 に設定します while counter > 1 { // counter(5) が 0 より大きい間factorial *= counter // factorial の新しい値を factorial x counter に設定します。counter - = 1 // counter の新しい値を counter - 1 に設定します。 } print ( factorial ) // 階乗の値を出力します。 Tcl
カウンタを5に設定し、階乗を1に設定 while { $counter > 1 } {階乗を設定[式$factorial * $ counter ]カウンターを1増加} $factorialを置く パワーシェル
$カウンター = 5 $階乗 = 1while ( $counter ) { $factorial *= $counter -- }$階乗(言語)
while [4]は代入、逐次合成、条件文、while文から構成されるシンプルなプログラミング言語で、命令型プログラミング言語の意味論の理論的分析に使用されます。[5] [6]
C := 5 ; F := 1 ;while ( C > 1 )で、 F := F * C ; C := C - 1 ;を実行します。 参照
- whileループを実行する
- forループ
- フォアグラウンド
- 原始再帰関数
- 一般的な再帰関数
- LOOP(プログラミング言語) - 計算できる関数がまさに原始的な再帰関数であるという特性を持つプログラミング言語
参考文献
- ^ ab 「while文とdo-while文(Javaチュートリアル > Java言語の学習 > 言語の基礎)」Dosc.oracle.com 。 2016年10月21日閲覧。
- ^ "while (C# リファレンス)". Msdn.microsoft.com . 2016年10月21日閲覧。
- ^ 「条件とループ | Kotlin」Kotlinヘルプ. 2025年10月21日閲覧。
- ^ 「第3章 Whileプログラミング言語」(PDF) . Profs.sci.univr.it . 2016年10月21日閲覧。
- ^ フレミング・ニールソン;ハンネ・R・ニールソン。クリス・ハンキン (1999)。プログラム分析の原則。スプリンガー。ISBN 978-3-540-65410-0. 2013年5月29日閲覧。
- ^ イリングワース、ヴァレリー(1997年12月11日)『コンピューティング辞典』オックスフォード・ペーパーバック・リファレンス(第4版)オックスフォード大学出版局。ISBN 9780192800466。