[C++] 반복문

👻 반복문

특정 조건을 만족할 때까지 명령문을 실행하는 문을 뜻한다. 조건에 부합하면 계속 반복되고 조건에 부합하지 않으면 반복문을 빠져나오게 된다. while, for 문이 있다.

게임을 끌 때까지 계속 실행하라, 목적지에 도착할 때까지 계속 이동하라 등 여러 조건에 사용된다.


🌱 while문

while (조건문)
{
    명령문
    // 조건문을 컨트롤해주지 않으면 무한 loop에 빠지게 된다.
    제어식
}

// do ~ while문
do
{
    명령문
} while (조건문);

💡
일반적으로 while문은 조건을 먼저 판별한 후 명령문의 실행 유무가 정해지지만, do ~ while문은 do 안의 명령문이 무조건 한 번은 실행된 후 조건을 판별한다.
조건문에 false를 넣으면 일반적인 while문은 한 번도 명령문이 실행되지 않지만, do ~ while문은 명령문이 한 번 실행되고 종료된다.


🌱 for문

for (초기식; 조건식; 제어식)
{
    명령문
}

제어식을 괄호 안에 적으니 확실히 while문보다 실수를 할 일이 좀 더 적다. 성능적으로는 별 차이 없다.


👻 break와 continue

반복문을 실행하다가 중간에 빠져나오거나 코드를 스킵하고 싶을 때 사용하는 명령문이다. breakcontinue는 둘 다 반복문 안에서 사용하지만 의미가 살짝 다르다.


🌱 break

반복문 안에서 해당 문을 만나면 그 즉시 가장 가까이 있는 반복문 하나만 빠져나오게 된다.

// 해당 코드는 break를 만나면 조건식2 while문만 빠져나오게된다.
while (조건식1)
{
    while (조건식2)
    {
        // 반복문에서 빠져나가주세요
        break;
    }
}

🪐 예시로 개념 잡기

int round = 1;
int hp = 100;
int damage = 10;

// 무한 루프 : 전투 시작
while (true)
{
    hp -= damage;
    if (hp < 0)
        hp = 0;	// 음수 체력을 0으로 보정

    // 시스템 메시지
    cout << "Round : " << round << ", 몬스터 체력 : " << hp << endl;

    // 나갈 수 있는 조건 판별 위해
    if (hp == 0)
    {
        cout << "몬스터 처치!" << endl;
        // if문이 아닌 while문을 빠져나가라는 의미
        break;
    }

    if (round == 5)
    {
        cout << "제한 라운드 종료" << endl;
        break;
    }

    round++;
}

여기서 break문은 if문 안에 있지만 반복문을 빠져나가는 의미이므로 if문이 아닌 상위의 while문(무한loop)에서 빠져나가게 된다.


🌱 continue

반복문 안에서 해당 문을 만나면 아래 코드는 더 이상 실행하지 않고(스킵의 개념) 다시 반복문 안 첫 명령문을 실행하게 된다.

while (조건식)
{
    명령문1;
    // 명령문2는 스킵해주세요
    continue;
    명령문2;
}

위의 경우 명령문1 실행 👉 continue 👉 (명령문2 스킵) 제어식 👉 명령문1 실행 👉 ... 순으로 코드가 진행된다.


🪐 예시로 개념 잡기

// 1부터 10 사이의 홀수만 출력하기
// 1, 3, 5, 7, 9
for (int i = 1; i <= 10; i++)
{
    // 짝수 판단
    bool isEven = ((i % 2) == 0);

    if (isEven)
        // 아래 코드 skip
        continue;

    cout << i << endl;
}

여기서 continue문은 if문 안에 있지만 아래 코드를 스킵하고 제어식으로 가라는 의미이다.


👻 글을 마치며

이번 시간엔 반복문과 break, continue에 대해서 공부해보았다. 사실상 프로그래밍은 분기문과 반복문이 8할을 차지해서 이정도면 거의 모든 기능을 구현할 수 있게 되었다! 그리고 break와 continue가 동작하는 정확한 지점을 알게 되었다. 잘 활용한다면 좋은 코드를 만들어낼 수 있을 것 같다.


소스코드 보러가기


출처
인프런 Rookies님 강의

Categories:

Updated:

Leave a comment