# 조건문(conditionals)
<div class="embed-responsive embed-responsive-16by9">
<iframe src="https://www.youtube.com/embed/0vWXXoFlT8k" frameborder="0" allowfullscreen></iframe>
</div>
## 들어가며
---
이전 시간, **메소드**의 정의와 호출에 대해 알아보았습니다. 이번 시간에는 상황에 따라 다른 동작을 하는 방법. 이를 알아보도록 하죠.

## 조건문이란
---
조건문이란, *상황에 따라 동작을 달리하는 문법*입니다. 이를 통해 프로그램의 다양한 동작을 만들 수 있죠. 예를 들어 버스카드 요금을 나이를 기준으로 정한다거나, 시험 점수에 따라 등급을 나누는 등의 동작을 만들 수 있습니다.

이러한 조건문은 여러가지 종류가 있는데요. 가장 기본이 되는 if 그리고 if-else, 마지막 else-if 까지. 이를 차례로 알아보겠습니다.
## if 문
---
if 문을 사용하면 조건에 따른 동작 여부를 달리할 수 있습니다. 아래는 if 문의 구조인데요. 소괄호 안의 조건식이 참이면, 중괄호의 내용이 수행됩니다.
```
if (조건식) {
// 조건식이 참이면 수행할 내용
}
```
이를 약식 코드로 다음과 같이 작성할 수 있겠네요. 해당 코드는 춥다면 보일러를 틀고 자고, 아니면 그냥 잠을 자는 코드가 되겠습니다.
```
if (춥다면?) {
보일러를 튼다
}
잠을 잔다
```

## if-else 문
---
다음으로 if-else 문입니다. 아래 코드를 보시면, 기존 if 문에 else 영역이 추가된 볼 수 있는데요. 조건식이 참이면 A 영역을, 거짓이라면 B 영역을 수행합니다. 간단하죠?
```
if (조건식) {
// A - 조건식이 참이면 수행할 내용
} else {
// B - 조건식이 거짓이면 수행할 내용
}
```
약식 코드를 통해 이해를 도와봅시다. 뭔가를 먹고 겜방에 갈 건데요. 뭐를 먹어야 할까요? 치킨이 땡긴다면 치킨을! 아니면 그냥 밥을 먹고 겜방을 가게 되겠습니다.
```
if (치킨땡김?) {
치킨을 시켜먹는다
} else {
그냥 밥 먹는다
}
겜방을 간다
```

## else-if 문
---
마지막으로 else-if 문 입니다. 기존 if-else문을 양자택일(둘 중 하나를 고름) 이라 한다면, else-if문은 *삼자택일 또는 그 이상*의 선택지를 만들 수 있습니다. 그럼 그 구조를 확인해보도록 보죠. (~~자세한 설명은 생략한다~~)
```
if (조건식 A) {
// 조건식 A가 참이면 수행할 영역
} else if (조건식 B) {
// 조건식 B가 참이면 수행할 영역
} else {
// 모두 다 거짓인 경우 수행할 영역
}
```
아래는 약식 코드의 예입니다. 중국집에서 뭘 먹고 싶은지 메뉴를 고르고, 마지막 탕수육으로 주문을 마무리하는 시나리오입니다.
```
if (얼큰한거 땡김?) {
짬뽕을 시킨다.
} else if (밥 땡김?) {
볶음밥을 시킨다.
} else {
짜장면을 시킨다.
}
탕수육을 시킨다.
```

여기까지 가장 기본이 되는 조건문에 대해 알아봤는데요, 이와 더불어 자주 사용되는 연산자를 알아둘 필요가 있습니다. 바로 비교 연산자와 논리 연산자입니다.

## 비교 연산자
---
비교 연산자란, *좌우 값의 크기를 비교하여 참/거짓을 반환*합니다. 이를 사용하면 '7은 4보다 큰가?' 또는 '10은 3의 배수인가?'와 같은 다양한 조건식을 만들 수 있습니다.
```
System.out.println(7 > 4); // true
System.out.println(10 % 3 == 0); // false
```
이러한 비교연산자의 종류는 아래와 같습니다. 혹시 종류가 많아서 부담되나요? 겁먹지 마세요. 그때그때 사용하다 보면 저절로 익숙해질겁니다.

이를 사용하여 학점 평가 코드를 작성해볼까요? 아래 코드의 실행결과! 어떻게 나올 것 같습니까? 맞습니다. 3번째 조건식에서 참을 만족하죠? 따라서 학점은 B+가 되겠습니다.
```
int score = 88;
String grade = "F";
if (score >= 95) { // 95점 이상
grade = "A+";
} else if (score >= 90) { // 90점 이상
grade = "A0";
} else if (score >= 80) { // 80점 이상
grade = "B+";
} else {
grade = "B0";
}
System.out.printf("당신의 학점은 %s입니다.\n", grade);
```
그럼 마지막으로, 논리 연산자에 대한 내용을 분석해 보도록 하죠.
## 논리 연산자
---
논리 연산자란, 논리 값을 통해 새로운 참/거짓을 반환합니다. 그 종류는 아래와 같습니다.

그럼 먼저 AND 연산자부터 볼까요? `&&` 연산자는 양쪽 값이 모두 참인 경우 참! 그외의 모든 경우는 거짓을 반환합니다.
```
System.out.println(true && true); // true
System.out.println(true && false); // false
System.out.println(false && true); // false
System.out.println(false && false); // false
```
다음으로 OR 연산자입니다. `||` 연산자는 하나라도 참이면 참! 그 외의 모든 경우, 거짓을 반환하죠.
```
System.out.println(true || true); // true
System.out.println(true || false); // true
System.out.println(false || true); // true
System.out.println(false || false); // false
```
마지막 NOT 연산자(`!`)는요, 기존 값을 반대로 변경합니다.
```
System.out.println(!true); // false
System.out.println(!false); // true
```
논리 연산자 간 우선순위는 `!` > `&&` > `||` 임을 주의하세요.
```
System.out.println(true || !true && false);
# NOT 연산 => true || false && false
# AND 연산=> true || false
# OR 연산 => true
```
이러한 논리 연산자를 사용하면, 더 풍부한 조건식을 만들 수 있습니다.
## 요약
---
#### 조건문이란
- 조건문이란, 상황에 따라 동작을 달리하는 문법이다.
- if, else-if, else 구문을 사용하면, 여러 조건 중 한 가지를 선택하여 코드를 수행할 수 있다.
#### 비교 및 논리 연산자
- 비교 연산자는, 좌우 값을 비교하여 참/거짓을 반환한다.
- 논리 연산자는, 논리값을 통해 새로운 참/거짓을 반환한다.
- 비교 연산자와 논리 연산자를 사용하면, 더욱 풍부한 조건식 작성이 가능하다.
## 확인하기
---
<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="interactApp5cb9d63a6949da0014f86c5a" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5cb9d63a6949da0014f86c5a/q/1?method=iframe"></iframe></div></div>