본문 바로가기
프로그래밍언어/C언어

조건문을 만드는 방법 1 - 중첩 if~else 문과 else if 문

by J코딩 2022. 7. 21.
반응형

이번 절에서는 세 가지 이상의 선택이 사용될 경우 사용할 수 있는 중첩 if~else 문과 else if 문에 대하여 살펴보고 그들을 비교하여 일반적으로 어떤 것이 주로 사용되는지 함께 알아보겠습니다.

다음 예제 1, 2, 3을 비교해 봅시다.

예제 1

행에서 키보드로부터 숫자를 입력받아 변수 num에 저장하고 있습니다. 8행에서 변수 num의 값이 0보다 큰 경우를 비교합니다. 11행에서는 변수 num의 값이 0보다 크지 않은 그 밖의 경우를 비교하고 있습니다. 그 밖의 경우에는 0인 경우와 0보다 작은 경우가 있을 수 있지만, 그러한 경우들을 제어하지 않고 있습니다.

예제 2

14행과 17행에서 변수 num의 값이 0인 경우와 0보다 작은 경우를 제어하고 있습니다.

예제 3

예제 2와 3은 같은 코드입니다. 예제 2에서 13행의 중괄호와 19행의 중괄호를 제거하면 예제 3의 12행처럼 else if 코드가 됩니다.

이처럼 세 가지 이상의 선택 사항이 주어질 경우에는 예제 8-5처럼 if~else 문을 중첩해서 사용하는 것보다 예제 8-6처럼 else if를 사용하는 것이 코드의 구조상 유리할 수 있습니다. 다음 페이지에서 이유를 살펴보겠습니다.

if~else 문을 중첩해서 쓰는 것보다 else if를 사용하는 것이 좋은 이유를 예제 4와 5를 비교해 보겠습니다.

예제 4

전체 코드를 보면 else 안에 if~else 문이 중첩되어 있습니다. B 미만의 성적은 F학점을 주는 프로그램인데, 프로그램을 수정하다 보면 else 내에 if~else 문을 계속 중첩해야 하고 구조상가독성이 좋지 않다고 생각될 것입니다. 결론적으로, 예제 4의 11행, 15행, 19행, 23행, 24행, 25행의 중괄호를 삭제하기 바랍니다. 예제 5와 같이 가독성이 보다 좋은 형태로 구조화됩니다. 그리고 코드의 길이도 조금 짧아집니다.

예제 5

예제 6은 else if의 필요성을 느끼게 합니다. 예제 5와 6의 실행 결과를 비교해 바랍니다.

예제 6

예제 6의 실행 결과를 보면 90을 입력했는데 해당되는 하천이 A, B+, B라고 출력되고 있습니다. 분명 85점은 B+이어야 하는데 왜 이상하게 출력되는 길까요? 사전적으로 if'는 '만약라면이란 의미이고 else it'는 그 밖의 경우에서 만약~라면'이라는 의미이기 때문에 if 문과 else if 문의 차이는 실행 결과가 다릅니다. 12행, 15행, 18행의 주석 부분을 제거하여 대체 실행해 보면 원래의 결과가 출력됩니다. else if 문은 그 밖의 경우 중에서 참과 거짓을 구분할 수 있는 중요한 특징을 가지고 있습니다.

반응형

댓글