2 minute read

개념


반복문은 매우 기초적이면서 중요한 부분입니다.
반복문을 사용하지 않는다면 리스트나 벡터, 배열등의 값을 일일히 전부 타이핑해서 출력하거나 사용해야 하기 때문이지요.

int n{1};
std::cout << n++ << std::endl;
std::cout << n++ << std::endl;
std::cout << n++ << std::endl;

(설마… 위처럼 반복문을 안쓰고 위처럼 일일히 타이핑 하시는 분은 없겠죠?)

예제

for문


우선 for문은 아래와 같은 형태로 사용합니다.

for (초기화 ; 조건식; 증감식)
{
  반복할 처리
}

필요에 따라서는 증감식, 초기화식, 조건식의 생략이 가능합니다만 세미콜론은 반드시 필요합니다.

for (int i{}; i < 10;) // 증감식 생략
for (; sum != 20;)     // 초기화 식, 증감식 생략
for (;;)               // 모두 생략: 조건식이 생략되면 무한 반복이 됩니다.


for - each문 (for문 응용)

for - each문 또는 범위 기반 for문으로 불리며, 간단히 말해 for문을 살짝 응용한 사용법 입니다.

for (auto n : array)


여기에서 auto를 그대로 사용해도 되지만, 배열이나 vector, list로 바꾸어도 됩니다. 이렇게 하면 자동으로 array부분에서 값을 하나씩 읽으면서 변수 n에 넘겨줍니다.

#include <iostream>

int main()
{
    int input[10]{};
    int sum{};

    // 참조를 하므로 input의 값이 변경됩니다.
    for (auto &n : input)
    {
        std::cin >> n;
    }

    // 복사를 하므로 읽기 전용
    for (auto n : input)
    {
        sum += n;
    }

    std::cout << "합계: " << sum;
    return 0;
}


while문

for문이특정 범위의 값을 반복하기 위해 사용된다면 while문은 for문에서 초기화 식과 증감식이 빠진 형태 입니다.

for ( ; var > 0 && var < 25; )
while (var > 0 && var < 25)


아래와 같이 for문을 while문으로 나타낼 수도 있습니다.
(그 아래의 while문은 for문을 while문으로 나타낸 것입니다.)

for (int i{}; i < 10; i++) 
{
   std::cout << i;
}

 int i{};
   while (i < 10) 
   {
      std::cout << i;
      i++
   }


#include <iostream>

int main() 
{
    int sum{}, i{1};
    while (i <= 100) 
    {
        sum += i;
        i++;
    }
    std::cout << sum;      // 5050이 출력
    return 0;
}

do while문

루프의 한 가지 흥미로운 점은 루프 조건이 초기에 거짓인 경우에는 루프가 실행되지 않는다는점 입니다.
메뉴를 표시할 때와 같이 루프가 적어도 한번 실행되기를 원하는 경우를 위해 C++는 do while문을 제공합니다.

특징이 있다면 do while의 루프 문은 적어도 한번은 실행된다 라는 점 입니다.
실행된 후 do while의 루프는 조건을 검사하여 조건이 true 라면 do while 의 루프 맨위로 돌아가 다시 실행 합니다.

do
{
    // 한번은 무조건 실행되는 코드
} while (조건식);
#include <iostream>

int main()
{
    constexpr int right_num{ 5 };
    int input{};

    std::cout << "6미만의 숫자를 입력하세요!\n" << std::endl;
    do
    {
        std::cout << "숫자 입력: ";
        std::cin >> input;
    } while (input < 6);

    std::cout << "'6미만' 이라고....";
    return 0;
}


Top