조건문

섬네일|If-then-else 플로차트.
컴퓨터 과학에서 조건문(條件文, conditional)이란 어떤 조건이 주어질 때 어떤 동작을 수행하도록 하는, 즉 주어진 조건의 만족 여부에 따라 선택적으로 실행하고자 할 때 사용되는 문장이다. 조건이라고 하는 논리식(부울 표현식)의 값에 따라 계산이나 동작을 수행하거나 다른 값을 반환하는 프로그래밍 언어 구문이다.

 C 언어에서의 조건문 
C에서는 if를 사용하여 조건문을 만든다. if의 조건이 참이 아닐 때 수행할 동작은 else 문에서 지정 가능하며, if와 else 사이에 else if를 통해 새로운 조건을 넣을 수 있다. C의 영향을 받은 C++, 자바 등도 같은 형식을 따른다.

#include <stdio.h>

int main(void){
     int a = 2, c = 5;
     if(a == c){
          printf("a는 c와 같다.");
     }
     else {
          printf("a는 c와 다르다.");
     }
     return 0;
}

이 소스는 a라는 변수에 2를 저장하고 c라는 변수에 5를 저장한 뒤, a와 c가 같은지 확인하고 출력한다. 이 소스는 밑의 소스처럼 좀 더 줄일 수 있다.

#include <stdio.h>

int main(void){
     int a = 2, c = 5;
     a == c ? printf("a는 c와 같다.") : printf("a는 c와 다르다.");
     return 0;
}

위의 소스는 삼항 연산자를 사용해 if를 사용한 소스와 같은 동작을 수행하는 프로그램을 작성한 것이다. 그러나 이 소스는 else if처럼 다른 조건에서 동작하는 지의 여부를 알 수 없다.

#include <stdio.h>

int main(void){
     int a = 2, c = 5;
     if(a > c){
          printf("a는 c보다 크다.");
     } else if(a < c) {
          printf("a는 c보다 작다.");
     } else {
          printf("a는 c와 같다.");
     }
     return 0;
}

이 소스는 else if까지 추가시켜서 만든 조건문이다.

 case와 switch 문 

switch 문 (일부 언어의 경우 case 문이나 다방향 브랜치라고도 함)은 지정된 상수의 값을 비교한 다음, 일치하는 첫 상수에 따라 동작을 취한다.

 파스칼: C: 셸 스크립트:case someChar of
  'a': actionOnA;
  'x': actionOnX;
  'y','z':actionOnYandZ;
  else actionOnNoMatch;
end;switch (someChar) {
  case 'a': actionOnA; break;
  case 'x': actionOnX; break;
  case 'y':
  case 'z': actionOnYandZ; break;
  default: actionOnNoMatch;
}case $someChar in
   a)    actionOnA; ;;
   x)    actionOnX; ;;
   [yz]) actionOnYandZ; ;;
  *)     actionOnNoMatch  ;;
esac

 언어별 비교 참조 
 프로그래밍 언어 구조화된 if switch 선택 산술 if 패턴 일치 then else else–if 에이다       C, C++       C 샤프       코볼       에펠       F#       포트란 90       고       하스켈       자바    Java.sun.com, Java Language Specification, 3rd Edition.   ECMAScript (자바스크립트)    Ecma-international.org  ECMAScript Language Specification, 5th Edition.   메스메티카       오베론       펄       PHP       파스칼, 오브젝트 파스칼 (델파이)       파이썬       퀵베이직       루비       스칼라       SQL       비주얼 베이직, 클래식       비주얼 베이직 닷넷       윈도우 파워셸      

 같이 보기 
 브랜치 (컴퓨터 과학)
 동적 디스패치
 관계연산자
 Test (유닉스)
 요다 조건
 각주 
 내용주
  This refers to pattern matching as a distinct conditional construct in the programming language – as opposed to mere string pattern matching support, such as regular expression support.
     The often-encountered else if in the C family of languages, and in COBOL and Haskell, is not a language feature but a set of nested and independent if then else statements combined with a particular source code layout. However, this also means that a distinct else–if construct is not really needed in these languages.
   In Haskell and F#, a separate constant choice construct is unneeded, because the same task can be done with pattern matching.
  In a Ruby case construct, regular expression matching is among the conditional flow-control alternatives available. For an example, see this Stack Overflow question.
  SQL has two similar constructs that fulfill both roles, both introduced in SQL-92. A "searched CASE" expression CASE WHEN cond1 THEN expr1 WHEN cond2 THEN expr2 [...] ELSE exprDflt END works like if ... else if ... else, whereas a "simple CASE" expression: CASE expr WHEN val1 THEN expr1 [...] ELSE exprDflt END works like a switch statement. For details and examples see Case (SQL).
 참조주

 외부 링크 
  IF NOT (ActionScript 3.0)  video


분류:프로그래밍 구성체