다음: 사전 참 조건 반복문, 이전: 홑분기문, 상위 문서: 명령문 [차례][찾아보기]
변수 하나의 값에 기반하여 여러 행동을 취할 일은 매우 흔합니다. if문으로도 아래처럼 구현할 수 있습니다.
if (X == 1) do_something (); elseif (X == 2) do_something_else (); else do_something_completely_different (); endif
이런 종류의 부호는 만들고 보수하기에 번거롭습니다. 이 문제를 해결하기 위하여 옥타브에는 switch문이 있습니다. switch문을
사용하면, 위 예시를 아래처럼 만들 수 있습니다.
switch (X)
case 1
do_something ();
case 2
do_something_else ();
otherwise
do_something_completely_different ();
endswitch
이 부호로 반복 구조를 더욱 명확하게 하고, 부호를 읽기 좋게 하고, 보수하기 쉽게 합니다. 또한, 변수 X가
이름을 바꾸어도 조건식마다 이름을 바꾸어야 하는 if문에 비해 한 줄만 이름을 바꾸면 됩니다.
switch문의 일반적인 형식입니다.
switch (표현식)
case 보람
명령_목록
case 보람
명령_목록
…
otherwise
명령_목록
endswitch
보람에는 아무 표현식이나 가능합니다. 그러나 보람을 겹쳐도 효과가 없으며, 처음으로 일치한 보람의
명령_목록만 실행합니다.
switch문이 의미가 있으려면, 적어도
case 보람 명령_목록 항목이 한 개 있어야 하며, otherwise
명령_목록은 선택 사항입니다.
보람이 낱칸 배열이고, 낱칸 배열의 아무 원소나 표현식에 맞기만 한다면, 딸린 명령_목록을 실행합니다. 예를 들어, 아래 풀그림은 ‘Variable is either 6 or 7’을 출력합니다.
A = 7;
switch (A)
case { 6, 7 }
printf ("variable is either 6 or 7\n");
otherwise
printf ("variable is neither 6 nor 7\n");
endswitch
다른 모든 전용 end 예약어처럼, endswitch도 end로
대신할 수 있지만, 전용 예약을 사용하여야 더 명확한 구분이 가능합니다.
if문과 비교하여 switch문 사용의 한 이점은 보람에 문자열을 넣을 수
있다는 것입니다.
if문은 조건식에 문자열을 넣지 못하는 반면
if (X == "a string") # 올바르지 않음
X와 문자열간의 문자 단위 비교 덕분에 문자열로도 비교할 수 있습니다. switch문의
특별한 경우이며 아래처럼 풀그림을 짜도 됩니다.
switch (X)
case "a string"
do_something
…
endswitch
| • C 풀그림사용 안내: |
다음: 사전 참 조건 반복문, 이전: 홑분기문, 상위 문서: 명령문 [차례][찾아보기]