전체 코드
#include <iostream>
using namespace std;
int main()
{
#pragma region while문
int count = 0;
while (count < 5)
{
cout << "while : Hello World" << endl;
count++;
}
#pragma endregion
#pragma region do-while문
count = 0;
do
{
cout << "do-while : Hello World" << endl;
count++;
} while (count < 5);
do
{
cout << "이건 딱 1번만 출력됩니다." << endl;
} while (false);
#pragma endregion
#pragma region for문
for (int i = 0; i < 5; i++)
{
cout << "FOR : Hello World" << endl;
}
#pragma endregion
#pragma region break 예제
int round = 1;
int hp = 100;
int damage = 10;
while (true)
{
hp -= damage;
if (hp < 0)
hp = 0;
cout << "Round : " << round << ", 몬스터 체력 : " << hp << endl;
if (hp == 0)
{
cout << "몬스터 처치 완료!" << endl;
break;
}
if (round == 5)
{
cout << "제한 라운드 종료" << endl;
break;
}
round++;
}
#pragma endregion
#pragma region continue 예제
for (int i = 1; i <= 10; i++)
{
bool isEven = ((i % 2) == 0);
if (isEven)
continue;
cout << "홀수 : " << i << endl;
}
#pragma endregion
return 0;
}
📚 반복문 핵심
🌱 반복문의 개념
- 조건을 만족하는 동안 동일한 작업을 반복 수행하는 제어 구조
- 종류:
while, do-while, for
🌱 while 문
기본 구조
while (조건식)
{
명령문;
제어식;
}
특징
- 진입 전 조건 검사
- 조건이 false면 한 번도 실행되지 않을 수 있음
- 반복 횟수가 명확하지 않은 경우 적합 (ex. 네트워크 연결 대기)
🌱 do-while 문
기본 구조
do
{
명령문;
} while (조건식);
특징
- 진입 후 조건 검사
- 조건이 false라도 최소 1회 실행 보장
- 실제 사용 빈도는 낮은 편
🌱 for 문
기본 구조
for (초기식; 조건식; 제어식)
{
명령문;
}
특징
- 반복 횟수 고정 시 유리
- while보다 깔끔한 형태 (초기, 조건, 제어가 한곳에)
🪛 흐름 제어 (break & continue)
| 키워드 | 설명 |
|---|
break | 현재 반복문 즉시 종료 |
continue | 현재 반복 중단 & 다음 반복 수행 |
🌱 break 사용 패턴
- 특정 조건에서 반복을 강제 종료할 때
- 게임 루프 종료, 비상 탈출 등에 사용
예제
while (true)
{
if (조건) break;
}
🌱 continue 사용 패턴
- 특정 조건에서는 현재 작업 스킵 후 다음 반복 수행
- 특정 데이터 필터링 등에 사용
예제
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0) continue;
cout << i << endl;
}
🧵 디스어셈블리 분석 (어셈과 연결)
| C++ 코드 | 어셈블리 대응 |
|---|
| while (조건) | cmp + jmp |
| for | 초기식 + cmp + jmp |
| break | jmp (반복 탈출 지점으로 강제 이동) |
| continue | jmp (현재 반복 건너뛰고 조건 검사 지점 이동) |
🛠️ 디스어셈블리 예시 (while)
mov eax, [count]
cmp eax, 5
jge 종료_라벨
...
inc eax
mov [count], eax
jmp 반복_시작
종료_라벨:
📦 반복문 총정리 표
| 종류 | 진입조건 | 최소 1회 보장 | 특징 |
|---|
| while | 선조건 검사 | X | 조건이 false면 1회도 실행 안 함 |
| do-while | 후조건 검사 | O | 무조건 1회 실행 |
| for | 선조건 검사 | X | 카운트 기반 반복에 특화 |
💡 팁과 주의점
| 항목 | 설명 |
|---|
| 무한 루프 | 조건 변화 누락 시 무한 루프 주의 |
| break 남발 | 남발하면 흐름 추적 어려워짐 |
| continue 주의 | continue 이후 코드가 실행되지 않음 |
| for 문 vs while 문 | 횟수 명확: for, 조건불명확: while |
🔥 결론
| 정리 |
|---|
| 반복문은 프로그램의 흐름을 제어하는 필수 도구 |
| while은 조건 기반 반복, for는 횟수 기반 반복 |
| break는 강제 탈출, continue는 현재 반복 스킵 |
디스어셈블리 보면 cmp, jmp, je 같은 명령어로 변환 |
| 반복문의 구조와 흐름을 정확히 이해하고 상황에 맞게 선택해야 함 |
🎁 보너스 퀴즈
| 문제 | 정답 |
|---|
| while과 do-while 차이? | 진입 검사 위치 (선조건 vs 후조건) |
| for문은 언제 유리? | 반복 횟수 고정 |
| break와 continue 차이? | break: 전체 탈출 / continue: 현재만 스킵 |
필요하시면 PDF 자료화, 퀴즈문제집도 만들어드릴 수 있어요!
다음으로 어떤 내용 정리할까요? 😊