양방향 선택문

if (x)에서 x가 5라면, 참일까 오류일까?

선택문

경로가 둘이냐 여럿이냐로 나눕니다

두 개 이상의 실행 경로 가운데 하나를 고르는 문장이 선택문(selection statement)입니다. 경로가 둘이면 양방향 선택문(two-way), 그보다 많으면 다중 선택문(multiple-way)입니다.

다중 선택문은 4편에서 봅니다.

일반 형태

식 하나가 두 절 가운데 하나를 고릅니다

if 뒤의 식이 제어 식(control expression)입니다. 제어 식을 계산해 참이면 then 절을, 거짓이면 else 절을 실행합니다. 절(clause)은 그때 실행되는 문장 덩어리입니다.

C 계열 언어(C, C++, Java 등)에는 then이라는 낱말이 없지만, if 바로 아래 부분을 then 절이라고 부릅니다.

설계에서 정할 것

언어마다 답이 다른 세 가지

양방향 선택문을 설계할 때 언어가 정해야 하는 것들입니다. 앞의 둘은 이번 편에서, 셋째는 다음 편에서 봅니다.

제어 식의 형태

괄호가 제어 식의 처음과 끝입니다

C 계열처럼 then 같은 표지가 없는 언어에서는 제어 식을 반드시 괄호 안에 넣습니다. 괄호가 없으면 제어 식이 어디서 끝나고 then 절이 어디서 시작하는지 알 수 없기 때문입니다.

==는 두 값이 같은지 견주는 연산자입니다. Ruby 코드는 3편에서 다시 봅니다.

제어 식의 타입

수를 넣어도 되는 언어, 안 되는 언어

C89, C99, C++, Python은 제어 식에 수를 계산하는 산술 식을 쓸 수 있습니다. 0이면 거짓, 0이 아니면 참입니다. 대부분의 다른 언어는 불리언 타입만 받습니다. 타입 오류는 막아 주지만 그만큼 유연성이 떨어집니다.

불리언은 참과 거짓 두 값뿐인 타입입니다(5강). C89와 C99는 C 언어 표준의 판 이름입니다. x의 값은 예시입니다.

절의 형태

절의 범위를 무엇으로 알릴까

절에는 문장 하나를 쓸 수도, 여러 문장을 묶은 복합문(compound statement)을 쓸 수도 있습니다. Perl은 문장이 하나여도 중괄호로 감싸야 하고, Python은 들여쓰기로 절의 범위를 정합니다.

Ruby는 절을 end로 닫습니다. 위쪽 코드는 예시입니다.

다음 편

if 안에 if가 또 들어가면, else가 누구의 짝인지 헷갈리기 시작합니다

3편이 else는 어느 if의 짝일까? 7강 목록