do-while文
プログラミング言語において、do-while文(ドゥ・フォワイル文)は時にはdo文とも呼ばれ、所定のブーリアン型の条件によって繰り返し実行を行う制御構造文である。但し、大部分の言語とは異なり、FORTRANのdo文は、実際にはfor文と類似している。
do-while構造はコードのブロックと条件で構成される。最初にブロック中のコードが実行され、次に条件が評価される。条件が真であれば、ブロック中のコードが再び実行される。条件が偽になるまで、これを繰り返す。do-while文はブロックを実行した後で条件をチェックするので、この制御構造は後判定ループとも呼ばれる。逆にwhile文は、ブロック中のコードを実行する前に条件を評価する。
条件が常に真であることを評価するために無限ループを作ることは可能であり、場合によっては望ましいことである。このようなループが故意に作成されたとき、通常はループを終了するための別の制御構造(例えばbreak文)を使用する。
いくつかの言語では、この形式のループのために別の命名規則を使用する。例えばPascalでは、"repeat until"文を使用する。一般的な言語では条件が"偽"になるとループを終了するが、Pascalでは逆に条件が"真"になるまでループが継続する。
C言語でのプログラム例:
x = 0; do { x = x + 1; } while (x < 3);
この例では、最初に x = x + 1 を実行し x = 1 となる。次に条件の x < 3 をチェックする。条件は真であり、コードブロックを再度実行する。変数 x が条件に合致する 3 になるまで、コードの実行と条件のチェックを繰り返す。
目次 |
[編集] 等価な制御構造
do { statements } while (condition);
このdo-while文は、以下の制御構造と等価である。:
while (true) { statements if (!condition) break; }
また、以下の制御構造とも等価である。:
LOOPSTART: statements if (condition) goto LOOPSTART;
[編集] do-while文の例
以下のdo-while文は与えられた数の階乗を計算する。
[編集] Ada
with Ada.Integer_Text_IO; procedure Factorial is Counter : Integer := 5; Factorial : Integer := 1; begin loop Factorial := Factorial * Counter; Counter := Counter - 1; exit when Counter = 0; end loop; Ada.Integer_Text_IO.Put (Factorial); end Main;
[編集] ActionScript
var counter:Number = 5; var factorial:Number = 1; do { factorial *= counter; counter --; } while (counter > 0) trace(factorial);
[編集] Visual Basic .NET
Dim counter As UInteger = 5 Dim factorial as ULong = 1 Do factorial *= counter 'multiply counter -= 1 'decrement Loop While counter > 0 System.Console.WriteLine(factorial)
[編集] C言語とC++
unsigned int counter = 5; unsigned long factorial = 1; do { factorial *= counter--; /*Multiply, then decrement.*/ } while (counter > 0); printf("%lu\n", factorial);
[編集] C#
uint counter = 5; ulong factorial = 1; do { factorial *= counter--; } while (counter > 0); System.Console.WriteLine(factorial);
[編集] D言語
uint i = 0; do { ++i; writefln(i); } while(i < 5);
[編集] Java
int counter = 5; long factorial = 1; do { factorial *= counter--; //Multiply, then decrement. } while (counter > 0); System.out.println(factorial);
[編集] REALbasic
Dim counter As Integer = 5 Dim factorial as Integer = 1 Do factorial = factorial * counter // multiply counter = counter - 1 // decrement While counter > 0 MsgBox Str( factorial ) Loop
[編集] Fortran
Program FACTORIALPROG
Integer start
Integer factorial,counter
Data Start /5/
Factorial = 1
Counter = Start
do while(counter>0)
Factorial = Factorial*counter
Counter = Counter-1
end do
print *,Factorial
End Program
[編集] Pascal
program Factorial; var Counter, Factorial: integer; begin Counter := 5; Factorial := 1; repeat Factorial := Factorial * Counter; Counter := Counter - 1; until Counter = 0; Write(Factorial); end.