| 루프 구성체 |
| --- |
| * Do-while 루프
* While 루프
* For 루프
* Foreach 루프
* 무한 루프
* 제어 흐름
 |
| * v
* t
* e
 |

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)

```

참조
--

1. ↑  "Mozilla Developer Network Documentation - The Do While Loop in JavaScript".
2. ↑  "Do While - Official PHP Documentation".

| * v
* t
* e
프로그래밍 구성체 |
| --- |
| 변수 | 
* 전역 변수
* 지역 변수
* 정적 변수
* 매개 변수
* 상수
* 포인터 변수
* 레퍼런스 (참조자)
* 레지스터 변수
* lvalue
* rvalue

 |
| 자료형 | 
* 정수
* 부동소수점수
* 고정소수점수
* 복소수
* 문자열
* 불린 자료형
* unsigned
* 배열
* 구조체
* 공용체
* typedef 선언
* 형 변환

 |
| 제어 분기문 | 
* if-else 구조
* switch 문
* goto 문

 |
| 반복문 | 
* while 루프
* do-while 루프
* for 루프
* foreach 루프

 |
| 함수 | 
* x86 호출 규약(stdcall, cdecl)
* inline 함수
* 다중 정의
* 가변 인자 함수

 |
| 객체 지향적 문법 | 
* 클래스(멤버 변수 · 멤버 함수)
* 상속
* 연산자 오버로딩
* 템플릿
* 접근 권한
* 이름공간
* 예외 처리
* 인터페이스

 |
| 기타 | 
* 매크로
* 헤더 파일
* 모듈화
* 비트 연산
* 라이브러리
* 연산자

 |