// 1부터 5까지 출력하는 C++ 프로그램
#include <iostream>
using namespace std;
int main() {
int i = 1;
// 1부터 5까지 while 루프
while (i <= 5) {
cout << i << " ";
++i;
}
return 0;
}
실행 결과
1 2 3 4 5
단계별 실행 분석:
반복
변수
i <= 5
동작
1번째
i = 1
true
1 출력, i → 2
2번째
i = 2
true
2 출력, i → 3
3번째
i = 3
true
3 출력, i → 4
4번째
i = 4
true
4 출력, i → 5
5번째
i = 5
true
5 출력, i → 6
6번째
i = 6
false
루프 종료
예제 2: 양수의 합만 구하기
// 양수의 합 구하기 프로그램
// 음수 입력 시 루프 종료, 음수는 합에 포함 안 함
#include <iostream>
using namespace std;
int main() {
int number;
int sum = 0;
// 사용자 입력 받기
cout << "Enter a number: ";
cin >> number;
while (number >= 0) {
// 양수 누적
sum += number;
// 양수면 다시 입력 받기
cout << "Enter a number: ";
cin >> number;
}
// 합 출력
cout << "\nThe sum is " << sum << endl;
return 0;
}
실행 결과
Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2
The sum is 25
사용자에게 계속 숫자 입력받음. 0 이상이면 sum에 누적. 음수 입력 시 루프 종료 후 최종 합 출력.
C++ do…while 루프
do…while 루프는 while과 달리 **본문을 최소 한 번 실행한 후** 조건을 평가합니다. 루프 본문이 먼저 실행되어야 종료 조건을 확인할 수 있을 때 유용합니다.
문법:
do {
// 루프 본문
} while (condition);
실행 흐름:
본문 실행
조건 평가
true면 본문 반복
false가 될 때까지 계속
do…while 루프 플로차트
예제 3: 1부터 5까지 숫자 출력
// 1부터 5까지 출력하는 C++ 프로그램
#include <iostream>
using namespace std;
int main() {
int i = 1;
// 1부터 5까지 do...while 루프
do {
cout << i << " ";
++i;
} while (i <= 5);
return 0;
}
실행 결과
1 2 3 4 5
실행 단계:
반복
변수
i <= 5
동작
초기
i = 1
아직 검사 안 함
1 출력, i → 2
1번째
i = 2
true
2 출력, i → 3
2번째
i = 3
true
3 출력, i → 4
3번째
i = 4
true
4 출력, i → 5
4번째
i = 5
true
5 출력, i → 6
5번째
i = 6
false
루프 종료
예제 4: 양수의 합만 구하기 (do-while 버전)
// 양수의 합 구하기 (do-while 버전)
// 음수 입력 시 루프 종료, 음수는 합에 포함 안 함
#include <iostream>
using namespace std;
int main() {
int number = 0;
int sum = 0;
do {
sum += number;
// 사용자 입력 받기
cout << "Enter a number: ";
cin >> number;
} while (number >= 0);
// 합 출력
cout << "\nThe sum is " << sum << endl;
return 0;
}
출력 1
Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2
The sum is 25
출력 2
Enter a number: -6
The sum is 0.
첫 입력이 음수면 루프가 한 번 실행되고 바로 종료되어 sum은 0 그대로.
무한 루프
루프 조건이 절대 false가 되지 않으면 무한 루프가 됩니다. 의도적(서버 등)일 수도, 실수(로직 오류)일 수도 있습니다.
// 무한 while 루프
while (true) {
// 루프 본문
}
do…while도 무한 루프 가능:
int count = 1;
do {
// 본문
} while (count == 1);
이런 루프는 프로그램이 종료되거나 메모리 고갈 전까지 자원을 소모합니다.
for vs while 루프
for 루프는 반복 횟수를 미리 알 때 가장 적합:
// 5번 반복
for (int i = 1; i <= 5; ++i) {
// 본문
}
반면 while, do…while은 반복 횟수가 런타임 데이터(사용자 입력, 복잡한 조건 결과)에 의존할 때 이상적입니다.