다중 선택의 구현

갈래가 100개면 100번 견줘 봐야 할까?

방법 ① 다중 조건 분기

if를 줄줄이 이어 하나씩 견줍니다

다중 선택문을 컴퓨터가 실행하게 만드는 가장 단순한 방법입니다. if와 else if의 줄로 바꿔 놓고 위에서부터 조건을 하나씩 검사합니다. 이것이 다중 조건 분기입니다. 맞는 갈래가 아래에 있을수록 많이 견줍니다.

갈래는 4편에서 정한, case 하나에 딸린 코드입니다. x의 값과 코드는 예시입니다.

방법 ②, ③ 표를 쓴다

차례로 찾기와 바로 짚기

표에 case 값을 넣어 두고 차례로 찾으면 테이블 선형 탐색, case 값을 배열의 첨자로 써서 갈 곳을 한 번에 꺼내면 배열 인덱싱입니다. 배열 인덱싱은 case 수가 적고 값 범위의 절반 이상이 쓰일 때(예: 1~10 가운데 대부분) 알맞습니다.

첨자는 배열에서 몇 번째 칸인지 나타내는 번호(5강), L4는 case 4의 갈래가 시작하는 곳에 붙인 이름입니다. 범위와 값은 예시입니다.

방법 ④ 해시 테이블

case가 많으면 계산으로 칸을 찾습니다

case가 열 개 이상이면 해시 테이블(hash table)을 쓸 수 있습니다. 해시 함수는 값을 넣으면 표의 칸 번호를 계산해 주는 함수입니다. 하나씩 견주지 않고, 맞는 case가 든 칸을 바로 찾아갑니다.

case 값과 칸 번호는 예시입니다.

if로 만드는 다중 선택

else if를 이으면 다중 선택입니다

다중 선택문은 양방향 선택문을 늘려서도 만들 수 있습니다. Python의 elif는 else if를 줄인 말입니다. 앞 조건이 거짓일 때만 다음 조건을 검사하고, 처음 참이 된 곳의 문장만 실행합니다.

이 강의가 따르는 교재의 예제이고 count의 값은 예시입니다. 같은 동작을 4편에서 본 Ruby의 case로도 쓸 수 있습니다.

언제 무엇을

switch는 일치, else if는 조건

switch는 값 하나가 여러 상수 가운데 어느 것과 같은지 고를 때 알맞습니다. else if는 조건마다 불리언 식을 자유롭게 쓸 수 있어서, 범위 비교 같은 조건에 알맞습니다.

불리언 식은 참이나 거짓을 내는 식입니다(6강).

Scheme의 COND

술어와 식의 쌍을 늘어놓습니다

Scheme의 다중 선택은 COND입니다. 술어와 식의 쌍을 늘어놓으면, 위에서부터 술어를 검사해 처음 참이 된 쌍의 식 값이 COND 전체의 값이 됩니다. ELSE는 항상 참이라는 뜻이고, 없어도 됩니다.

술어(predicate)는 참이나 거짓을 내는 식입니다. Scheme은 연산자를 앞에 써서 (> x 0)이 x > 0입니다. x의 값은 예시입니다.

다음 편

고르는 문장은 여기까지입니다. 이제 같은 일을 되풀이하는 문장, 반복문으로 넘어갑니다

6편몇 번 돌지는 누가 셀까? 7강 목록