Do-while 루프

do-while 루프는 대부분의 컴퓨터 프로그래밍 언어에서 주어진 불린 자료형 조건을 기반으로 코드가 한 번 실행할 수 있게 하는 제어 흐름문이다. 대부분의 언어와 달리 포트란의 do 루프는 실제로는 for 루프와 같다.

구조체 
아래의 소스는
do {
   do_work();
} while (condition);

"continue" 문이 사용되지 않는 한 다음과 같으며

do_work();
while (condition) {
   do_work();
}

기술적으로는 다음과 동등하다:

while (true) {
   do_work();
   if (!condition) break;
}

또는

LOOPSTART:
   do_work();
   if (condition) goto LOOPSTART;

예제

C
int counter = 5;
int factorial = 1;
do {
  factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
printf("factorial of 5 is %d\n", factorial);

C#
int counter = 5;
int factorial = 1;
do {
  factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
System.Console.WriteLine(factorial);

자바
int counter = 5;
int factorial = 1;
do {
  factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
System.out.println(factorial);

자바스크립트
var counter = 5;
var factorial = 1;
do {
    factorial *= counter--;
} while (counter > 0);
console.log(factorial);

액션스크립트 3
var counter:int = 5;
var factorial:int = 1;
do {
  factorial *= counter--; /* Multiply, then decrement. */
} while (counter > 0);
trace(factorial);

에이다
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 Factorial;

포트란
program FactorialProg
  integer :: counter = 5
  integer :: factorial = 1
  do
    factorial = factorial * counter
    counter = counter - 1
    if (counter == 0) exit
  end do
  print *, factorial
end program FactorialProg
포트란 90 이후 위의 iteration count가 없는 형태의 do 문과 아래의 do while 문이 추가되었다.
program FactorialProg
  integer :: counter = 5
  integer :: factorial = 1
  factorial = factorial * counter
  counter = counter - 1
  do while (counter > 0)
    factorial = factorial * counter
    counter = counter - 1
  end do
  print *, factorial
end program FactorialProg

펄
$counter = 5;
$factorial = 1;
do {
     $factorial *= $counter--;
} while ($counter > 0);
print $factorial;

PHP
<?php
$counter = 5;
$factorial = 1;
do {
     $factorial *= $counter--;
} while ($counter > 0);
echo $factorial;
?>

PL/I
아래는 do until 문법만을 보여준다.

declare counter   fixed initial(5);
declare factorial fixed initial(1);
do until(counter<=0);
  factorial = factorial * counter;
  counter = counter - 1;
  end;
put(factorial);

래킷 
#lang racket
(define counter 5)
(define factorial 1)
(let loop ()
  (set! factorial (* factorial counter))
  (set! counter (sub1 counter))
  (when (> counter 0) (loop)))
(displayln factorial)

루비 
counter = 5
factorial = 1
begin
  factorial *= counter
  counter -= 1
end while counter > 0
puts factorial

스몰토크
| counter factorial |
counter := 5.
factorial := 1.
[counter > 0] whileTrue:
  [factorial := factorial * counter.
  counter := counter - 1].
Transcript show: factorial printString

비주얼 베이직 닷넷
Dim counter As Integer = 5
Dim factorial As Integer = 1
Do
   factorial *= counter
   counter -= 1
Loop While counter > 0
Console.WriteLine(factorial)

같이 보기 
 for 루프
 foreach
 while 루프
 제어 흐름

참조 

제어 흐름