멋쟁이사자처럼 자바 백엔드 부트캠프를 수강하며 공부를 목적으로 작성한 게시물입니다.
틀린 정보가 있다면 아낌없는 지적 바랍니다.
if문이란, 특정 조건(값의 크기나 데이터 비교 등)이 충족될 경우 포함된 코드를 실행하는 명령어를 말한다.
구성은 이렇다.
if (조건) {
실행할 코드;
}
이를 실생활에 적용해보자.
지하철 무임승차를 위한 전용 승차권을 발급하는 프로그램을 만들어 보겠다.
현행법상 65세 이상 어르신들부터 무임승차 혜택을 누릴 수 있다.
먼저 논리구조를 세워보자.
나이 정보 확인 -> 기준에 해당되는지 검토 -> 결과 출력
당연하지만, 사람의 나이는 정수로 구현된다. 따라서 나이를 하나의 변수로 선언해보자. 30을 임의로 넣어 값을 초기화하였다.
이제 변수 '나이'의 값이 기준에 해당되는지 검토해줄 코드가 필요하다.
if문을 사용해 변수에서 선언한 연령이 무임승차를 할 수 있는지 출력하는 코드를 작성해보자.
선언된 나이는 30세. 무임승차를 하기에는 한참 모자란 나이다. 콘솔에도 아무것도 출력되지 않았다.
if문의 작동 방식을 도식화한 것이다. 먼저 선언된 변수를 읽어온 후, 주어진 조건에 맞는지 판단하여 코드 실행 여부를 결정하게 된다.
방금 만든 프로그램은 입력한 나이의 무임승차 가능 여부를 정확히 판단해준다. 주어진 일은 정말 잘 하는 셈이지만, 참 불친절하다.
무임승차 대상이 아닌 사람들에게도 친절히 그 대상이 아님을 알려주었으면 좋겠다.
방법은 매우 간단하다. 조건을 다르게 지정한 if문을 하나 더 추가하면 된다. 이번에는 65세 미만일 것을 조건으로 걸어두었다.
이렇게 2개 이상의 if문이 있는 경우, 논리의 흐름은 아래와 같다.
1번째 if문을 먼저 검토하고, 연이어 2번 if문을 검토하는 방식이다. 지금은 검토해야할 조건이 단 2개 뿐이니 괜찮다.
하지만 조건이 수십, 수백개로 늘어난다면 이렇게 모든 조건을 하나씩 따져보는 것은 너무나 비효율적인 방법이 될 것이다.
변수는 처음 선언된 그대로 유지되고 있는데 말이다.
이런 경우에는 else if 문을 활용할 수 있다.
else if문에 서술된 조건들은 앞선 행에서 제시된 조건이 충족된 경우에는 실행되지 않는다.
30살인 사람이 동시에 65세가 될 수는 없지 않는가?
else if문은 선행 조건이 충족되지 않은 경우에만 실행되어 코드의 효율성을 높여준다.
else if문을 시험하기 위해 먼저 조건의 개수를 늘려보자.
- 20~39세 청년들에게는 기후동행 카드를 홍보하는 문구가 출력된다.
- 19세 이하 청소년들에게는 "청소년입니다" 문구가 출력된다.
- 어디에도 해당되지 않는 시민들에게는 "삑!" 문구가 출력된다.
우선 기존의 if문에 규정되었던 '65세 미만일 경우 대상자 아님 출력' 조건을 삭제한 후,
65세 이상인 경우 무임승차 대상임을 알리는 조건만 남겨두었다.
그리고 효율적인 처리를 위해 2, 3번 조건에는 else if를, 어느 조건에도 해당되지 않는 경우는 else로 처리되도록 했다.
위 구조도와 같이 1번부터 차례대로 나아가며 앞선 조건문이 거짓일 경우에만 다음 조건문을 검토하게 된다.