C 언어에서 반복문은 효율적인 프로그램 개발의 핵심 요소입니다. while
과 do-while
반복문은 유사해 보이지만, 조건 평가와 실행 흐름에서 중요한 차이가 있습니다. 본 기사는 이 두 반복문의 기본 구조와 동작 원리를 이해하고, 적절한 상황에서 올바르게 활용하는 방법을 제시합니다. 또한, 반복문 선택 시의 주요 고려사항과 실제 코드 예제를 통해 실질적인 활용법을 익힐 수 있습니다.
while 반복문의 기본 개념
while
반복문은 조건을 먼저 평가한 후 블록을 실행하는 제어 구조입니다. 반복문의 실행 조건이 참(true
)일 때만 블록 내부의 코드가 실행됩니다. 조건이 처음부터 거짓(false
)인 경우, 블록은 단 한 번도 실행되지 않습니다.
while 반복문의 기본 구조
다음은 while
반복문의 기본 구문입니다.
while (조건식) {
// 반복 실행될 코드
}
while 반복문의 동작 방식
- 조건식을 평가합니다.
- 조건식이 참이면 블록 내부의 코드를 실행합니다.
- 조건식이 거짓이 될 때까지 1번과 2번 과정을 반복합니다.
while 반복문의 예제
#include <stdio.h>
int main() {
int count = 0;
while (count < 5) {
printf("Count: %d\n", count);
count++;
}
return 0;
}
이 예제에서는 count
가 5보다 작은 동안 “Count”와 해당 값을 출력하며 반복 실행됩니다. count
가 5에 도달하면 반복이 종료됩니다.
do-while 반복문의 기본 개념
do-while
반복문은 조건을 평가하기 전에 블록을 최소 한 번 실행하는 제어 구조입니다. 조건식이 거짓이더라도 블록이 한 번은 반드시 실행되기 때문에, 사용자 입력 또는 초기값 검증이 필요한 상황에서 유용하게 사용됩니다.
do-while 반복문의 기본 구조
다음은 do-while
반복문의 기본 구문입니다.
do {
// 반복 실행될 코드
} while (조건식);
do-while 반복문의 동작 방식
- 블록 내부의 코드를 실행합니다.
- 조건식을 평가합니다.
- 조건식이 참이면 블록 내부의 코드를 다시 실행하며, 거짓이면 반복을 종료합니다.
do-while 반복문의 예제
#include <stdio.h>
int main() {
int count = 0;
do {
printf("Count: %d\n", count);
count++;
} while (count < 5);
return 0;
}
이 예제에서는 do
블록 안의 코드가 처음 한 번 실행된 후, count
가 5보다 작은 동안 계속 반복됩니다. 조건이 참일 경우 반복이 지속되고, 조건이 거짓이 되면 종료됩니다.
do-while 반복문의 특징
- 조건이 거짓이더라도 코드 블록은 최소 한 번 실행됩니다.
- 사용자 입력 확인과 같은 초기 실행이 필요한 상황에 적합합니다.
while과 do-while의 주요 차이점
조건 평가 순서
- while 반복문: 조건식을 먼저 평가한 후, 참일 경우에만 블록이 실행됩니다.
- do-while 반복문: 블록을 먼저 실행한 후 조건식을 평가합니다.
최소 실행 여부
- while 반복문: 조건이 처음부터 거짓이라면 블록이 한 번도 실행되지 않습니다.
- do-while 반복문: 조건이 거짓이더라도 블록이 최소 한 번은 실행됩니다.
코드 흐름 비교
아래 예제를 통해 while
과 do-while
의 동작 차이를 확인할 수 있습니다.
#include <stdio.h>
int main() {
int condition = 0;
printf("Using while loop:\n");
while (condition) {
printf("This will not print because condition is false.\n");
}
printf("Using do-while loop:\n");
do {
printf("This will print at least once, even if condition is false.\n");
} while (condition);
return 0;
}
결론
- while 반복문은 반복 조건을 엄격히 제어하고 싶을 때 사용합니다.
- do-while 반복문은 최소 한 번 실행이 보장되어야 할 때 적합합니다.
조건 평가 방식과 실행 보장 여부를 이해하면, 상황에 맞는 반복문을 선택할 수 있습니다.
적합한 활용 상황
while 반복문의 적합한 상황
while
반복문은 조건이 참인 동안만 실행되므로, 반복 여부를 실행 전에 확인해야 하는 경우 적합합니다.
- 파일 처리: 파일이 끝에 도달하지 않았는지 확인하며 읽기 작업을 반복.
- 무한 루프 구현: 조건을 특정 값에 기반해 동적으로 설정하여 무한 루프를 제어.
- 조건 기반 종료: 초기 상태에서 조건이 명확한 반복 작업.
#include <stdio.h>
int main() {
int num = 0;
printf("Enter a positive number: ");
scanf("%d", &num);
while (num > 0) {
printf("Number: %d\n", num);
num--;
}
return 0;
}
do-while 반복문의 적합한 상황
do-while
반복문은 블록을 최소 한 번 실행해야 하는 경우 유용합니다.
- 사용자 입력 검증: 최소 한 번 입력을 받고, 조건에 따라 반복 요구.
- 메뉴 기반 시스템: 사용자가 메뉴 옵션을 선택한 후 계속 여부를 묻는 작업.
- 초기 실행이 필요한 작업: 사전 조건 없이 반드시 실행해야 하는 코드.
#include <stdio.h>
int main() {
char choice;
do {
printf("Do you want to continue? (y/n): ");
scanf(" %c", &choice);
} while (choice == 'y');
return 0;
}
반복문 선택의 기준
- 조건 평가 우선: 실행 전에 조건을 반드시 확인해야 한다면
while
. - 초기 실행 필요: 블록을 최소 한 번 실행해야 한다면
do-while
.
상황과 요구사항에 따라 적절한 반복문을 선택하면 코드의 가독성과 효율성을 높일 수 있습니다.
코드 예제: while과 do-while 비교
다음 예제는 while
과 do-while
반복문의 동작 차이를 명확히 보여줍니다.
예제 코드
#include <stdio.h>
int main() {
int num = 0;
// while 반복문
printf("Using while loop:\n");
while (num > 0) {
printf("Number: %d\n", num);
num--;
}
// do-while 반복문
printf("\nUsing do-while loop:\n");
do {
printf("Number: %d\n", num);
num--;
} while (num > 0);
return 0;
}
출력 결과
Using while loop:
(no output)
Using do-while loop:
Number: 0
결과 분석
- while 반복문:
num
이 0인 상태로 시작하여 조건이 처음부터 거짓이므로 블록이 실행되지 않습니다. - do-while 반복문: 블록이 먼저 실행되기 때문에 조건에 상관없이 한 번 실행됩니다.
활용 정리
- while 반복문: 조건이 처음부터 참일 때만 실행되어야 하는 작업에 적합합니다.
- do-while 반복문: 조건과 상관없이 최소 한 번 실행이 필요한 작업에 적합합니다.
이와 같은 차이를 이해하면 반복문을 상황에 맞게 효과적으로 사용할 수 있습니다.
반복문 선택 시 주의점
작업의 성격과 반복 조건
반복문의 선택은 작업의 특성과 조건 평가 시점에 따라 결정됩니다. 아래의 기준을 참고하세요.
- while 반복문: 반복 여부를 실행 전에 결정해야 하는 경우.
- do-while 반복문: 최소 한 번은 반드시 실행해야 하는 작업.
가독성과 코드 유지보수
반복문은 명확성과 가독성을 고려하여 작성해야 합니다. 복잡한 조건이나 중첩된 구조는 피하고, 적절한 주석을 추가해 코드의 의도를 명확히 표현합니다.
무한 루프 방지
반복문 사용 시 무한 루프에 빠지지 않도록 조건식과 블록 내 변수를 주의 깊게 작성해야 합니다.
- while 반복문: 조건식이 항상 참이 되는 경우를 방지.
- do-while 반복문: 조건식이 항상 참이 되는 경우에도 종료 조건을 명시.
예제: 반복문 선택 체크리스트
- 조건을 사전에 평가해야 하나요? →
while
선택. - 블록을 최소 한 번 실행해야 하나요? →
do-while
선택. - 조건식이 명확하고 단순한가요? → 적합.
- 조건식과 블록 내 코드가 복잡한가요? → 재설계 고려.
잘못된 반복문의 예시
#include <stdio.h>
int main() {
int count = 0;
// 무한 루프 예시
while (count < 10) {
printf("Count: %d\n", count);
// 조건식에 영향을 주는 코드가 누락되어 무한 루프 발생
}
return 0;
}
개선된 코드
#include <stdio.h>
int main() {
int count = 0;
while (count < 10) {
printf("Count: %d\n", count);
count++; // 조건식에 영향을 주는 코드 추가
}
return 0;
}
결론
적절한 반복문을 선택하고, 조건식을 주의 깊게 작성하며, 무한 루프를 방지하면 안정적이고 가독성 높은 코드를 작성할 수 있습니다. 반복문 사용 전 작업의 성격과 조건 평가 방식을 고려하는 것이 필수입니다.
요약
while
과 do-while
반복문은 C 언어에서 반복 작업을 수행하는 기본적인 제어 구조입니다.
- while 반복문: 조건식을 먼저 평가하고, 참일 때만 블록을 실행합니다.
- do-while 반복문: 블록을 최소 한 번 실행한 후 조건식을 평가합니다.
두 반복문의 차이점은 조건 평가 순서와 실행 보장 여부에 있으며, 상황에 따라 적합한 반복문을 선택해야 합니다. 조건을 미리 확인해야 하는 작업에는 while
, 최소 한 번 실행이 보장되어야 하는 경우에는 do-while
을 사용합니다.
반복문 작성 시 작업의 성격, 조건 평가 시점, 코드 가독성을 고려하면 보다 안정적이고 효율적인 코드를 작성할 수 있습니다.