If
if문은 If문은 조건식의 결과에 따라 중괄호 { } 로 묶어놓은 블록이 실행여부가 결정되는 조건문이다. 조건식에는 true 또는 false값을 산출할 수 있는 연산식이나 boolean변수가 올 수 있다. 조건식이 true면 블록을 실행하고 false면 블록을 실행하지 않는다. C언어에서 0은 false(거짓)로 0이 아닌 나머지 값은 모두 true(참)으로 인식한다.
if문의 필요성
예를 들어 "돈이 있으면 택시틀 타고, 돈이 없으면 걸어 간다." 이러한 예시는 우리 모두에게 일어날 수 있는 상황 중 하나이다. 프로그래밍도 사람이 하는 것이므로 위 문장처럼 주어진 조건을 판단한 후 그 상황에 맞게 처리해야 할 경우가 생긴다. 이렇듯 프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓰는 것이 바로 if문이다.[1]
문법
if(조건식){ 실행문.... }
만약 조건식이 true가 될때 실행해야 할 문장이 하나밖에 없다면 중괄호 {}를 아래와 같이 생략 할수도 있다.
if(1) printf("if문 예제")[2]
연산자
if문 조건에는 연산자를 사용해서 조건을 검사해야 한다. 대표적으로 사용하는 연산자는 다음과 같다.
관계 연산자
관계 연산자란 두 값을 비교하여 결과에 따라 참 또는 거짓을 반환한다.
- 연산자에 따른 데이터 타입
- == : 같다
- != : 같지 않다
- < : 미만
- > : 초과
- <= : 이하
- >= : 이상
논리 연산자
논리 연산자란 참과 거짓을 연산하여 다시 참 또는 거짓을 반환한다.
- 연산자에 따른 기능
- ! : 식이 참이면 거짓, 거짓이면 참(NOT)
- && : 두 식이 모두 참이면 결과는 참, 한 식이라도 거짓이면 결과는 거짓(AND)
- || : 한식이라도 참이면 결과는 참(OR)[3]
else if
보통 if문을 사용할때 조건을 더 추가해야 하는 상황이 생긴다. if문으로만 코드를 작성하게 될 경우 가독성이 매우 떨어지고 속도 또한 느려질 뿐 아니라 수정 또한 힘들어지는 상황이 생긴다. C언어 코드로 예시를 들자면 다음과 같다.
int a; printf("10부터 12까지 숫자를 입력해 주세요); scanf("%d",&a); if(int a = 10) { printf("10을 입력하셨습니다."); } if(int a = 11) { printf("11을 입력하셨습니다."); } if(int a = 12) { printf("12을 입력하셨습니다."); } else { printf("잘못된 값을 입력하셨습니다."); }
위 코드는 문제없이 작동하긴 한다. 하지만 조건이 많아져 if문을 많이 써야될 상황일때 위와 같이 if문만을 사용하여 코드를 작성한다면 이러한 간단한 코드가 아닐 경우에는 수정할 위치를 찾기 어려워지고, 처리속도 또한 느려지게 된다. 그렇다면 위의 예제를 else if문으로 바꾸는 코드는 다음과 같다.
int a; printf("10부터 12까지 숫자를 입력해 주세요); scanf("%d",&a); if(int a = 10) { printf("10을 입력하셨습니다."); } else if(int a = 11) { printf("11을 입력하셨습니다.); } else if(int a = 12) { printf("12을 입력하셨습니다.); } else { printf("잘못된 값을 입력하셨습니다.); }
이러한 식으로 else if문으로 복수 조건 처리를 하게 되면 가독성도 좋아질 뿐만 아니라 무엇보다 처리 속도 부분에서 훨씬 빠르고 메모리 용량도 덜 사용하게 된다. 그래서 if문에 조건을 더 추가하고 싶다면 else if문을 사용하는 것이 일반적이다.
예제
게임
예시로 게임으로 들어서 표현하자면 만약 사용자가 스페이스바를 눌렀다면 점프를 하게 하고 점프 중에는 점프가 되지 않게 해야된다고 가정했을때 코드는 다음과 같다. if(캐릭터가 점프 중이 아닐때) { 캐릭터 점프를 동작시킨다. }
게임을 제작하는 엔진이나 환경마다 다 다르기 때문에 전형적인 알고리즘을 구현한 코드이다. 이러한 알고리즘으로 대부분의 게임들이 if조건문을 사용하여 구현되는데 여기서 한발 더 나아가 예외처리도 해주어야 한다. 코드로 예시를 들자면 다음과 같다.
else(현재 점프 중일때) { 캐릭터 점프를 동작시키지 않는다. }
캐릭터가 점프 중이면 점프를 동작시키면 안되기 때문에 else if를 사용하여 동작을 차단시킨 코드이다. 이러한 식으로 else를 사용하여 예외처리가 가능하다.[4]
단점
if문의 단점은 다음과 같다.
- 변경,확장이 될 수록 코드가 복잡해져서 수정할 위치를 찾기가 어렵다.
- 실수로 추가하지 않고 누락하는 경우가 생긴다.
즉 유지보수가 점점 어려워진다.[5]
각주
- ↑ 〈03-1 if문 - 점프 투 파이썬〉, 《위키백과》
- ↑ 〈[C언어 If문 사용법 & 예제 총정리]〉, 《코딩팩토리》, 2019-07-21
- ↑ 이재윤, 〈C언어 1 - 관계와 논리 연산자 / if 조건문〉, 《네이버블로그》, 2017-03-26
- ↑ prosto, 〈if문(조건문) 이해 예제 - C언어〉, 《티스토리》, 2016-09-10
- ↑ dublin, 〈if-else의 문제점〉, 《티스토리》, 2019-12-28
참고자료
- 〈[C언어 If문 사용법 & 예제 총정리]〉, 《코딩팩토리》, 2019-07-21
- 이재윤, 〈C언어 1 - 관계와 논리 연산자 / if 조건문〉, 《네이버블로그》, 2017-03-26
- prosto, 〈if문(조건문) 이해 예제 - C언어〉, 《티스토리》, 2016-09-10
- dublin, 〈if-else의 문제점〉, 《티스토리》, 2019-12-28
- 〈03-1 if문 - 점프 투 파이썬〉, 《위키백과》
같이 보기