전체 코드

#include <iostream>
using namespace std;

int main()
{
    // 🪐 1️⃣ while 문 기본 (조건 기반 반복문)
#pragma region while문
    int count = 0;  // 반복 제어 변수

    // 조건을 만족하는 동안 반복 수행
    while (count < 5)
    {
        cout << "while : Hello World" << endl;
        count++;  // 조건을 변화시키는 제어식 반드시 필요
    }

    // ❗ 무한 루프 예제 (count++ 빠지면 아래처럼 무한 루프 발생)
    /*
    while (count < 5)
    {
        cout << "Hello World" << endl;
        // count++; 없으면 무한 루프
    }
    */
#pragma endregion

    // 🪐 2️⃣ do ~ while 문 기본 (최소 1회 실행 보장)
#pragma region do-while문
    count = 0;  // 초기화

    do
    {
        cout << "do-while : Hello World" << endl;
        count++;
    } while (count < 5);

    // 조건이 false여도 최소 1회 실행되는 특징 확인
    do
    {
        cout << "이건 딱 1번만 출력됩니다." << endl;
    } while (false);
#pragma endregion

    // 🪐 3️⃣ for 문 기본 (카운트 기반 반복문)
#pragma region for문
    for (int i = 0; i < 5; i++)
    {
        cout << "FOR : Hello World" << endl;
    }
#pragma endregion

    // 🪐 4️⃣ break 개념 이해 (즉시 반복 종료)
#pragma region break 예제
    int round = 1;
    int hp = 100;
    int damage = 10;

    // 무한 루프 (break 조건 만족 시 탈출)
    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

    // 🪐 5️⃣ continue 개념 이해 (현재 반복 스킵)
#pragma region continue 예제
    // 1부터 10까지의 홀수만 출력하는 예제
    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
breakjmp (반복 탈출 지점으로 강제 이동)
continuejmp (현재 반복 건너뛰고 조건 검사 지점 이동)

🛠️ 디스어셈블리 예시 (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 자료화, 퀴즈문제집도 만들어드릴 수 있어요!
다음으로 어떤 내용 정리할까요? 😊

profile
李家네_공부방

0개의 댓글