do-while 루프는 코드 블록을 최소 한 번 실행하고, 지정된 조건이 참인 동안 계속 반복하는 제어 흐름 구조입니다. 표준 while 루프와 달리 조건이 루프 본문 후에 평가되므로, 조건의 초기값과 관계없이 최소 한 번은 실행이 보장됩니다.
언제 do-while 루프를 사용하는가?
다음 경우에 do-while 루프를 사용하세요:
루프 본문이 최소 한 번 실행되어야 할 때
반복 횟수가 런타임에 결정될 때
센티널 값이 입력될 때까지 사용자 입력을 읽는 프롬프트-우선 방식이 필요할 때
문법
do {
// 코드
} while (조건);
루프 본문이 while 조건 앞에 오므로, 컴파일러는 본문을 먼저 실행한 후 조건을 검사하여 반복 여부를 결정합니다.
작동 원리
흐름도 단계:
루프 시작
루프 본문 실행
조건 평가
true이면 2단계로 반복
false이면 루프 종료 후 후속 문장 계속 실행
예제 1: do-while 루프로 카운팅
#include <iostream>
using namespace std;
int main() {
int x = 1;
do {
cout << "X is: " << x << endl;
++x;
} while (x < 5);
return 0;
}
출력:
조건 x < 5가 x가 5에 도달한 후 거짓이 되므로 1부터 4까지 출력됩니다.
예제 2: 0이 입력될 때까지 숫자 합계
#include <iostream>
using namespace std;
int main() {
int num, sum = 0;
do {
cout << "Enter a number: ";
cin >> num;
sum += num;
} while (num != 0);
cout << "Sum is " << sum;
return 0;
}
출력:
이 예제에서 루프는 사용자가 0을 입력할 때까지 계속되며, 최소 한 개의 숫자는 처리됨을 보장합니다.
중첩 do-while 루프
do-while 루프 안에 다른 do-while 루프를 배치하면 중첩 구조가 생성되며, 격자 출력이나 복합 계산 같은 다차원 반복에 유용합니다.
문법
do {
// 외부 본문
do {
// 내부 본문
} while (내부_조건);
} while (외부_조건);
작동 방식
실행 순서는 다음과 같습니다:
외부 변수 초기화
외부 루프 본문 진입
내부 루프 본문 진입
각 내부 반복 후 내부_조건 평가하여 내부 루프 지속 여부 결정
내부 루프 종료 후 외부 변수 업데이트 및 외부_조건 평가하여 외부 루프 반복 여부 결정
예제
#include <iostream>
using namespace std;
int main() {
int a = 1;
do {
int b = 1;
do {
cout << a << "\n";
++b;
} while (b <= 3);
++a;
} while (a <= 3);
return 0;
}