루프는 같은 로직을 반복해서 실행할 때 사용해요.
가장 흔한 두 가지 유형은 while loop(반복 횟수가 정해지지 않은 반복)와 for loop(횟수가 정해진, 즉 횟수를 세는 반복)이에요.
나중 개념에서 다룰 for each 루프도 있어요.
for loop는 헤더와, 중괄호로 감싼 루프 본문이 들어 있는 코드 블록으로 이루어져 있어요.
헤더는 세미콜론 ;으로 구분된 세 가지 요소, 즉 초기화 문, 조건, 그리고 또 하나의 표현식으로 구성돼요.
이 요소들은 각각 비워 둘 수도 있어요.
for (init-statement; condition; expression) {
some_statement;
}
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 키워드를 사용하면 루프의 실행을 완전히 멈출 수 있어요.
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의 사용을 최소화하거나 아예 피하면 루프의 로직을 이해하기가 보통 더 쉬워요.