# 반복문
## 들어가며
---
이전 시간, 좋은 프로그래밍 스타일에 대해 알아보았습니다.

이번 시간에는 반복 코드를 단순화하는 법에 대해 알아보도록 하죠.
## 반복문의 필요성
---
아래와 같은 코드가 있습니다. 비슷한 내용을 반복 출력하고 있는데요.
```
public static void main(String args[]) {
System.out.println("Rule #1");
System.out.println("Rule #2");
System.out.println("Rule #3");
}
```
이제 위 코드를 Rule #1 부터 Rule #200 까지 출력하게 바꾸어볼까요?
```
public static void main(String args[]) {
System.out.println("Rule #1");
System.out.println("Rule #2");
...
System.out.println("Rule #200");
}
```
코드를 대략 10줄 정도 작성하다 보면, 이건 좀 아니다 싶을 겁니다. 200줄이나 되는 단순 반복 코드를 직접 작성하긴 쉽지 않을뿐더러 따분하기까지 합니다. 더 편리하게 해결할 수 없을까요? 있습니다. 어떻게요? 바로 반복문을 사용해서 말이죠.
## 반복문이란
---
반복문이란 *반복적인 코드를 단순화하는 문법*입니다. 이러한 반복문은 크게 두 종류로, while 문과 for 문이 있는데요. 이를 하나씩 알아보도록 하죠.

## while 문
---
먼저 while 문의 구조는 아래와 같습니다.
```
while (조건식) {
반복 내용
}
```
if 문과 비슷하게 생겼죠? 동작 방식 또한 비슷한데요. 조건이 참이면 반복 내용을 수행합니다. 언제까지요? 조건식이 거짓이 될 때까지 말이죠. 만약 조건식이 거짓이 되지 않는 다면, 끊임 없이 반복하게 되니 이를 주의하세요.
> 반복문이 끊임 없이 수행되는 것을 **무한 루프**라 합니다.
예를 통해 실행 흐름을 확인해 볼까요? 다음은 구구단 2단을 출력하는 코드입니다.
```
int n = 1;
while (n < 10) {
System.out.printf("2 x %d = %d\n", n, 2 * n);
n++; // n을 1 증가시킴
}
```
해당 코드의 n은 1부터 10까지 증가하게 되고, 조건식에 의해 총 9번의 반복이 수행됩니다. 이를 반복문이 아닌 코드로 풀어보면 어떻게 작성할 수 있을까요? 아래를 참조하세요.
```
int n = 1;
System.out.printf("2 x %d = %d\n", n, 2 * n); // 2 x 1 = 2
n++; // n = 2
System.out.printf("2 x %d = %d\n", n, 2 * n); // 2 x 2 = 4
...
n++; // n = 9
System.out.printf("2 x %d = %d\n", n, 2 * n); // 2 x 9 = 18
```
## for 문
---
다음으로 for 문에 대해 알아볼까요? for 문은 구조는 아래와 같습니다.
```
for (초기값; 조건식; 갱신) {
반복 내용
}
```
while 문의 구조와 비슷하죠? 차이가 있다면 초기값과 갱신 영역이 추가되었다는 것입니다. 동작 흐름 또한 비슷한데요. 먼저 for 문이 수행되면 1️⃣ *초기값 영역이 단 한 번 실행*됩니다. 다음으로 2️⃣ *조건식 확인*을 합니다. 참이라면 3️⃣ *반복 내용을 수행*하고, 계속해서 4️⃣ *갱신*까지 진행합니다. 그리고 이를(2️⃣ ~ 4️⃣) 반복하는거죠. 언제까지요? 조건식이 거짓이 될 때까지 말이죠. 조건식이 거짓이 되면 반복이 종료됩니다.
1. 초기값 실행
2. 참인 경우 반복 { 2️⃣ 조건식 확인 → 3️⃣ 반복 내용 → 4️⃣ 갱신 }
3. 거짓인 경우 종료
이를 통해 구구단 3단을 출력하려면 어떻게 해야 할까요? 아래와 같이 작성하면 되겠습니다.
```
for (int i = 1; i <= 9; i++) {
System.out.printf("3 x %d = %d\n", i, 3 * i);
}
```
그럼 위 코드의 실행 흐름을 분석해볼까요? 먼저 초기값에서 만든 변수 i는 1부터 10까지 증가하게 되고, 구구단 출력은 조건식에 의해 총 9번이 출력 되게 됩니다. 이를 반복문이 없는 코드로 풀면 아래와 같으니 참고하세요.
```
int i = 1;
System.out.printf("3 x %d = %d\n", i, 3 * i); // 3 x 1 = 3
i++; // i = 2
System.out.printf("3 x %d = %d\n", i, 3 * i); // 3 x 2 = 6
...
i++; // i = 9
System.out.printf("3 x %d = %d\n", i, 3 * i); // 3 x 9 = 27
```
여기까지 반복적인 코드를 단순화하는 방법에 대해 알아보았습니다. 계속해서 퀴즈와 실습을 통해, 반복문을 내 것으로 만들어봅시다.
> 반복 횟수가 명확한 경우 for 문을, 불명확하다면 while 문이 좋습니다.
## 요약
---
1. 반복문이란, 반복되는 코드를 단순화하는 문법이다.
2. 대표적인 반복문으로 while 문과 for 문이 있다.
3. 반복문 작성 시, 무한 루프를 주의해야 한다.
4. while 문의 구조는 아래와 같다.
```
while (조건식) {
반복 내용
}
```
5. for 문의 구조는 아래와 같다.
```
for (초기값; 조건식; 갱신) {
반복 내용
}
```
6. 반복 횟수가 명확성에 따라 반복문을 사용하면 좋다.
## 확인하기
---
<div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5cc3293a0b360e00146f88d3" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5cc3293a0b360e00146f88d3/q/1?method=iframe"></iframe></div></div>