While vs Do-While 루프: 실전 예제로 명확히 이해하기
루프(Loop)란 무엇인가?
루프는 조건이 거짓이 될 때까지 문장 시퀀스를 여러 번 실행하는 제어 구조입니다. 루프는 루프 본문(body)과 제어문(control statement) 두 부분으로 구성됩니다. 제어문은 루프 본문이 지정된 조건이 거짓이 될 때까지 실행되도록 지시하는 조건들의 조합입니다. 루프의 목적은 동일한 코드를 여러 번 반복하는 것입니다.
While 루프란?
While 루프는 가장 단순한 루프 구조로, 진입 제어 루프(entry-controlled loop)입니다. While 루프에서는 루프 본문을 처리하기 전에 조건을 먼저 평가합니다. 조건이 참일 때만 루프 본문이 실행됩니다.
루프 본문이 실행된 후 제어는 다시 처음으로 돌아가 조건을 확인합니다. 참이면 같은 과정이 조건이 거짓이 될 때까지 반복됩니다. 조건이 거짓이 되면 루프를 빠져나갑니다.
While 루프에서 조건이 처음부터 거짓이면 루프 본문은 단 한 번도 실행되지 않습니다.
Do-While 루프란?
Do-While 루프는 While 루프와 유사하지만 조건이 루프 본문 실행 후에 평가됩니다. 이를 탈출 제어 루프(exit-controlled loop)라고도 합니다.
Do-While 루프에서는 루프 본문이 최소 한 번은 항상 실행됩니다. 본문 실행 후 조건을 검사하여 참이면 다시 본문을 실행하고, 거짓이면 루프를 빠져나갑니다.
핵심 차이점:
- While 루프는 조건을 먼저 검사한 후 문장을 실행, Do-While은 문장을 최소 한 번 실행한 후 조건 검사.
- While은 진입 제어 루프, Do-While은 탈출 제어 루프.
- While 루프 조건 뒤에는 세미콜론 불필요, Do-While은 조건 뒤 세미콜론 필수.
- While은 조건이 거짓이면 0회 실행, Do-While은 최소 1회 실행.
- While은 루프 본문 시작 전 카운터 변수 초기화 가능, Do-While은 본문 시작 전후 모두 가능.
While 루프 문법
while (조건) { 문장들; }
While 루프에서는 평가할 조건을 작성합니다. 중괄호 안의 문장이 실행할 코드를 나타냅니다.
Do-While 루프 문법
do { 문장들 } while (표현식);
Do-While 루프에서는 먼저 중괄호 안의 실행할 문장을 작성한 후, 평가할 Java, C, C++ 표현식을 명시합니다.
While 루프 동작 원리
While 루프는 다음과 같이 동작합니다:

플로차트 설명:
1단계) While 루프 시작
2단계) 테스트 표현식 또는 조건 평가
3단계) 테스트 표현식이 참이면 Do-While 루프 본문 실행 (원문 오타: While 루프 본문)
4단계) 테스트 표현식이 거짓이면 While 루프 밖의 프로그램 실행
Do-While 루프 동작 원리
Do-While 루프는 다음과 같이 동작합니다:

플로차트 설명:
1단계) Do-While 루프 시작
2단계) Do-While 루프 본문 실행
3단계) 테스트 표현식 또는 조건 평가
4단계) 테스트 표현식이 참이면 Do-While 루프 본문 다시 실행
5단계) 테스트 표현식이 거짓이면 루프 본문 뒤의 문장 실행
6단계) 루프 본문 뒤의 문장들 실행
C언어 While 루프 예제
다음 프로그램은 C언어에서 While 루프를 예시로 보여줍니다:
#include <stdio.h>
#include <conio.h>
int main() {
int num = 1; // 변수를 1로 초기화
while (num <= 4) { // 조건이 있는 while 루프
printf("%d\n", num);
num++; // 증가 연산
}
return 0;
}
출력:
1
2
3
4
위 프로그램은 While 루프를 사용해 1부터 4까지 숫자 시리즈를 출력합니다. 변수 num을 1로 초기화했고, 1부터 4까지 출력하므로 1로 시작합니다. 0부터 출력하려면 초기화 시 0을 할당하면 됩니다.
While 루프에서 조건 (num <= 4)을 주었는데, 이는 num 값이 4가 될 때까지 루프 본문을 실행하라는 의미입니다. 이후 루프가 종료되고 제어는 루프 밖으로 나갑니다.
루프 본문에는 숫자 출력 함수와 루프 실행마다 값을 증가시키는 증가 연산자가 있습니다. num의 초기값은 1, 실행 후 2, 다음 실행 후 3이 됩니다. 이 과정이 값이 4가 될 때까지 계속되며, 콘솔에 시리즈를 출력하고 루프를 종료합니다.
C언어 Do-While 루프 예제
다음 프로그램은 2의 구구단을 출력하는 Do-While 루프 예제입니다:
#include <stdio.h>
#include <conio.h>
int main() {
int num = 1; // 변수를 1로 초기화
do { // do-while 루프
printf("%d\n", 2 * num);
num++; // 증가 연산
} while (num <= 4);
return 0;
}
출력:
2
4
6
8
위 예제에서 Do-While 루프로 2의 구구단을 출력했습니다. 먼저 변수 'num'을 1로 초기화했습니다. 루프 안에서 num에 2를 곱한 값을 출력하는 프린트 함수가 있습니다. 각 증가마다 num 값이 1씩 늘어나며 화면에 출력됩니다.
초기 num 값은 1입니다. 루프 본문에서 프린트 함수는 2*num (num=1)이면 2*1=2가 되어 2가 출력됩니다. 이 과정이 num이 10이 될 때까지(원문: 4까지) 계속됩니다. 이후 루프가 종료되고 루프 바로 뒤의 문장(여기서는 return 0)이 실행됩니다.
While vs Do-While 비교

While과 Do-While 루프의 중요한 차이점:
| While | Do-While |
| 조건을 먼저 검사하고 문장 실행 | 문장을 최소 한 번 실행 후 조건 검사 |
| 루프 본문 시작 전 카운터 변수 초기화 가능 | 루프 본문 시작 전후 모두 카운터 변수 초기화 가능 |
| 진입 제어 루프 | 탈출 제어 루프 |
| While 조건 뒤 세미콜론 불필요 | While 조건 뒤 세미콜론 필수 |
| 단일 문장일 때 중괄호 불필요 | 중괄호 항상 필요 |
| 조건이 루프 시작에 위치 | 조건이 블록 실행 후 위치 |
| 조건이 거짓이면 0회 실행 가능 | 최소 1회 실행 보장 |
| 일반적 형태: while(조건) { 문장; } | 일반적 형태: do { 문장; } while(조건); |
어떤 것을 선택해야 할까?
첫 번째 반복이 필수적인 조건을 검사할 때는 While 루프를 사용합니다. 반복 횟수가 불확실하거나 알 수 없을 때도 유용합니다.
Do-While 루프는 루프를 최소 한 번은 실행해야 하는 경우에 주로 사용됩니다. 최종 조건이 최종 사용자(엔드유저)에 기반하는 메뉴 중심 프로그래밍에서 전형적으로 필요합니다.