다음 제어 구조는 선택 구조이다. 자바와 C 언어에서 선택 구조를 따르는 문장으로는 if 문장과 switch 문장이 있다. if 문장은 참을 의미하는 true와 거짓을 의미하는 false의 논리값을 기준으로 처리 모듈을 결정한다. switch 문장은 다양한 표현식 평가값을 기준으로 처리 모듈을 결정한다. 다음은 자바와 C 언어에서 제공하는 if 문의 문장 구조이다.
//if (expression) statement;
if (expression)
statement;
자바에서 위의 구문은 expression의 결과값이 true이면 statement를 실행하고, false이면 statement를 실행하지 않는다. 그러므로 expression은 반드시 자료 유형 boolean을 반환하는 연산식이어야 하며, 연산식을 둘러싸는 괄호 ( )는 반드시 필요하다. C 언어는 true와 false 상수는 없으므로 expression의 결과값이 0이나 NULL을 의미하는 것은 false이고 그렇지 않은 것은 true로 간주하는 것이 자바와 다르다.
[ 그림 7.32 ]
조건문 if와 유사한 문장인 switch는 변수나 표현식 expression의 결과값에 따라 원하는 문장을 실행하는 구문으로 다음과 같은 문장 구조를 갖는다.
switch (expression) {
case value1:
statements1;
statements2;
...
break;
case value2:
statements3;
statements4;
...
break;
...
case valueN:
...
...
default:
statements;
...
break;
}
위 switch 구문은 expression의 값이 value1이면 statement1과 statement2를 실행하고, value2면 statement3과 statement4를 실행하며 키워드 case 다음에 나오는 어느 valueN과도 동일한 값이 없는 경우는 키워드 default 아래에 있는 문장 statements를 실행하는 모듈이다. default 절은 선택적으로 기술하지 않을 수 있다. switch 문의 실행 순서를 정리하면 다음과 같다.
① switch 문의 표현식을 평가한다.
② 위 표현식에서 계산된 값과 일치하는 상수값을 갖는 case의 값을 위에서부터 찾는다. 일치된 case 값을 만나면 case 내부의 문장을 실행한다.
③ break를 만나면 switch 문을 종료한다. 또는 swtich 몸체의 마지막 문장을 수행하면 switch 문을 종료한다.
④ 일치된 case 값을 만나지 못하여 default를 만나면 default 내부의 문장을 실행한다.
[ 그림 7.34 ]는 switch 구문의 실행 순서를 순서도로 표현한 것이다.
[ 그림 7.34 ]