if
- IF를 찾는다면 해당 문서로.
1. 영어 단어
"만약~"과 같은 뜻. 조건문(conditional sentence)을 만들 때 많이 쓰인다. 반대되는 단어는 unless로, "만약 ~하지 않을 때"와 같은 뜻이 된다.
만약이라는 뜻 때문인지 주로 역사에 대한 토론이나 특정작품을 소재로 하는 2차 창작물에서 if 루트나 if 시나리오등으로 자주 쓰인다. 특정 조건을 만족시키면 원작의 비극적 결말을 희망적으로 바꾸거나, 주인공이 타락해서 안 좋은 의미로 깽판을 치는 등의 내용이 출연하게 되는 2차 창작물이 많다. 대표적으로 슈퍼로봇대전 Z시리즈나 진삼국무쌍7이 있다.
2. 프로그래밍 언어에서 제어문에 많이 쓰는 명령어
BASIC, C, PHP, Lua, Python 등등 대단히 많은 프로그래밍 언어에서 이 if는 제어문 명령어로 쓴다. 그 외에 while, for, switch 등도 있지만, if가 제일 대표적이다. IF문을 세계 최초로 사용한 사람은 해석기관을 담보로 프로그래밍을 창안한 에이다 러브레이스 백작부인. 사실상 에이다 러브레이스가 세계의 고급 프로그래밍 언어 구조 대부분을 설계했다. 어떻게 보면 에이다 러브레이스의 창안이 너무 충격적이라서 그 이후의 컴퓨터 시스템이 에이다의 방식대로 따라간 것일지도 모른다.
제어문은 프로그램 실행 시 조건이 맞을 경우에만 실행하는 부분을 표시하는 것으로, 언어마다 문법은 조금씩 다르지만 명령어로 if를 쓰는 것은 거의 전 언어 공통이라고 봐도 된다.
대표 문법은 if(조건식) then { 조건식이 참일 경우 } else { 조건식이 거짓일 경우 } 이며 then 은 언어의 문법에 따라 생략되는 경우(Python. 그냥 줄을 바꾸면 then으로 인식한다.)도 있다. 많은 프로그래밍 언어에서 else 문은 생략 가능한 문법이지만 일부 프로그래밍 언어는 문법의 모호함을 엄격하게 회피하기 위해 else 문을 강제하기도 한다.
if문의 조건식 부분에는 어떠한 식도 올 수 있으나 해당 식에는 반드시 반환값이 존재해야 하며 반환값의 타입은 TRUE/FALSE 만을 표현하는 boolean 값이어야 한다. C계열 언어는 이 검사가 느슨해서 integer값을 반환하는 식을 넣어도 정상적으로 동작한다. 이 경우 평가된 값이 0일 경우 거짓, 0이 아닐 경우(양수, 음수 모두) 참으로 판단한다. Java계열 언어는 조건식의 타입이 boolean 값이 아닐 경우 컴파일 에러가 난다. 참도 거짓도 아닌 '중간 상태'는 존재하지 않는다. 만약 전자회로에서 3-state 입력(플로팅 게이트)을 if문에 그냥 때려박을 경우 해당 if문은 CPU에서 평가될 때마다 참과 거짓이 랜덤으로 평가된다.[1]
if 문의 조건식 부분에 식(statement)이 아닌 문(expression)을 넣으면 컴파일 에러가 난다. 따라서 식 부분에 중괄호 문법은 사용할 수 없다.
if 문이 반환값을 갖는 경우와 갖지 않는 경우가 있다. if문이 반환값을 갖는 경우에는(이 경우 언어의 스펙 문서에 if '문'이 아닌 if '표현식'이라는 용어를 쓴다) 조건식을 검사하고 그것이 참일 경우 조건식이 참인 부분의 '문'을 평가한 결과(보통 문의 마지막 식을 평가한 결과값)를 반환하며 거짓일 경우에는 거짓 부분의 문을 평가한 값을 반환한다. 거짓 부분이 존재하지 않을 경우 nil을 반환한다. if 문이 반환값을 갖지 않는 경우에는 if문 좌변에 대입문을 사용할 경우 컴파일 에러가 난다. 이는 언어마다 다르며 보통 명령형 언어에서는 if문이 반환값이 없고 논리 프로그래밍 언어에서는 if문에 반환값이 있다.
보통 else와 세트를 이룬다. if에서 조건이 맞지 않을 경우에 실행되는 부분도 필요한 경우가 많기 때문이다. 그래서인지 else와 합체되는 경우도 있는데 else if나 elif 등으로 표현되기도 한다. 당연하지만 if를 여러 개 쓰는 것과 elif를 쓰는 것은 구별해야 한다. 예를 들어 if var == 0: var += 1 밑에 if var == 1: var += 1을 쓰면 두 제어문을 거쳐서 var 변수는 2가 될 것이지만, elif var == 1: var += 1이라고 쓰면 var가 0일 경우 elif 문은 작동을 안 할 것이다. 이것만으로는 의미가 없지만 while 문이 사용된다면 이야기는 달라진다.
3. 무한도전 특집
무한도전 if 문서로.
4. 니시노 카나의 11번째 싱글 〈if〉
if(니시노 카나) 문서로.
[1] 참과 거짓이 균일하게 랜덤으로 나오지도 않는다. 대부분의 경우 어느 한 쪽에 크게 치우친다.