바닥에서 시작하는 C++ (8) - 반복문

반복문(Iteration Statements)

반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문입니다.

프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 제어문 중 하나입니다.

C++에서 사용되는 대표적인 반복문의 형태는 다음과 같습니다.

  1. while 문
  2. do / while 문
  3. for 문
  4. 범위 기반의 for 문

while 문

while 문은 특정 조건을 만족하는 한 계속해서 주어진 명령문을 반복 실행합니다.

C++에서 while 문의 문법은 다음과 같습니다.

문법

while (조건식)

{

    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

}

do / while 문

while 문은 루프에 진입하기 전에 먼저 조건식부터 검사합니다.

하지만 do / while 문은 먼저 루프를 한 번 실행한 후에 조건식을 검사합니다.

즉, do / while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행합니다.

C++에서 do / while 문의 문법은 다음과 같습니다.

문법

do {

    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

} while (조건식);

for 문

while 문은 우선 조건식이 참(true)인지를 판단하여, 참이면 내부의 명령문을 실행합니다.

내부의 명령문을 전부 실행하고 나면, 다시 조건식으로 돌아와 또 한 번 참인지를 판단하게 됩니다.

for 문은 while 문과는 달리 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문입니다.

따라서 while 문보다는 좀 더 간결하게 반복문을 표현할 수 있습니다.

C++에서 for 문의 문법은 다음과 같습니다.

문법

for (초기식; 조건식; 증감식)

{

    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;

}

범위 기반의 for 문

C++11부터는 범위 기반의 for 문이라는 새로운 형태의 반복문이 추가되었습니다.

범위 기반의 for 문은 표현식 안에 포함되어 있는 모든 값에 대해 한 번씩 루프를 실행해 줍니다.

이러한 범위 기반의 for 문은 배열을 자동으로 인식하며, 컨테이너 클래스에서 많이 사용됩니다.

다음 예제는 범위 기반의 for 문을 사용하여 배열의 모든 값을 출력하는 예제입니다.

예제

int arr[5] = {1, 3, 5, 7, 9};

 

for (int element : arr)

{

    cout << element << " ";

}

// 1 3 5 7 9

루프 제어

일반적으로 조건식의 검사를 통해 루프로 진입하면, 다음 조건식을 검사하기 전까지 루프 안에 있는 모든 명령문을 실행합니다.

하지만 continue 문과 break 문은 이러한 일반적인 루프의 흐름을 사용자가 직접 제어할 수 있도록 도와줍니다.

continue 문

continue 문은 루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 해줍니다.

보통 반복문 내에서 특정 조건에 대한 예외 처리를 하고자 할 때 자주 사용됩니다.

다음 예제는 1부터 100까지의 정수 중에서 짝수를 제외하고 홀수만을 출력하는 예제입니다.

예제

int except_num = 2

 

for (int i = 0; i <= 100; i++)

{

    if (i % except_num == 0)

    {

        continue;

    }

    cout << i << " ";

}
// 1 3 5 7 9 ... 97 99

break 문

break 문은 루프 내에서 사용하여 해당 반복문을 완전히 종료시킨 뒤, 반복문 바로 다음에 위치한 명령문을 실행합니다.

즉 루프 내에서 조건식의 판단 결과와 상관없이 반복문을 완전히 빠져나가고 싶을 때 사용합니다.

다음 예제는 1부터 사용자가 입력한 정수까지의 합을 구하는 예제입니다.

예제

int num = 1, sum = 0;
int end_num = 10;

 

while (1) // 무한 루프

{

    sum += num;

    if (num == end_num)

    {

        break;

    }

    num++;

}

cout << "1부터 " << end_num << "까지 더한 값은 " << sum << "입니다.";

//1부터 10까지 더한 값은 55입니다.
© 2022 JunhoBaik, Built with Gatsby