루프

루프 에서 C++

12개의 연습 문제

루프 소개

루프는 같은 로직을 반복해서 실행할 때 사용해요. 가장 흔한 두 가지 유형은 while loop(반복 횟수가 정해지지 않은 반복)와 for loop(횟수가 정해진, 즉 횟수를 세는 반복)이에요. 나중 개념에서 다룰 for each 루프도 있어요.

일반적인 문법

for loop는 헤더와, 중괄호로 감싼 루프 본문이 들어 있는 코드 블록으로 이루어져 있어요. 헤더는 세미콜론 ;으로 구분된 세 가지 요소, 즉 초기화 문, 조건, 그리고 또 하나의 표현식으로 구성돼요. 이 요소들은 각각 비워 둘 수도 있어요.

for (init-statement; condition; expression) {
  some_statement;
}
  • init 요소는 루프가 시작하기 전에 딱 한 번만 실행되는 코드예요.
  • condition 요소는 불리언으로 평가되는 표현식이어야 하고, 루프를 언제 멈출지 제어해요. 이 조건이 참으로 평가되는 동안에는 루프 안의 코드가 계속 실행돼요. 이 표현식이 거짓으로 평가되는 순간, 루프는 더 이상 반복되지 않아요.
  • expression 요소는 각 반복이 끝날 때 실행되는 코드예요.

while loop는 조건 검사가 참인 동안 본문을 실행해요. 아래 코드는 for문을 while문으로 바꾸는 방법을 보여줘요.

init-statement;
while(condition) {
    some_statement;
    expression;
}

잠깐 짚어보기: 증가와 감소

루프를 다루다 보면 카운터 변수에 1을 더하거나 1을 빼야 할 때가 자주 있어요. 이 연산이 워낙 흔해서 전용 연산자 ++와 --가 따로 있죠.

이 연산자에는 전위형과 후위형이 있어요. 전위형은 문에서 변수를 사용하기 전에 값을 바꾸고, 후위형은 사용한 뒤에 바꿔요. 아마 대부분의 경우 전위형을 쓰게 될 거예요.

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

for문 예제

init 요소는 보통 카운터 변수를 준비하고, condition은 루프를 계속할지 멈출지 검사하며, post 요소는 보통 매 반복이 끝날 때 카운터를 증가시켜요.

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

이 루프는 1부터 9까지(9 포함)의 수를 모두 더해요.

break와 continue

루프 본문 안에서 break 키워드를 사용하면 루프의 실행을 완전히 멈출 수 있어요.

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

반대로 continue 키워드는 현재 반복의 실행만 멈추고 다음 반복을 이어서 진행해요.

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (n%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12

참고: break와 continue의 사용을 최소화하거나 아예 피하면 루프의 로직을 이해하기가 보통 더 쉬워요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

루프 배우기

연습이 잠겨 있어요

루프 개념을 연습하려면 연습 문제 4개를 더 잠금 해제해요