Programming/C Basic

6. C 언어 조건 분기문 - Switch문

양디 2016. 1. 14. 00:15
반응형



Switch?

Switch는 조건 분기문으로, if와 else if의 연속을 보다 보기 쉽게, 편리하게 만들어놨다고 생각하시면 좋습니다.


switch는 혼자 쓰이는게 아니라 항상 casedefault와 함께 쓰입니다.


보통 메뉴를 고르거나, 특정 선택지가 주어졌을 때에 그 대답에 따라 실행하는 코드가 다를 때에 주로 사용됩니다.


사용 문법은 다음과 같습니다.


3 + 7은 몇인가요 ? 


1번 : 6

2번 : 8

3번 : 10

4번 : 12


라는 질문에 대한 대답을 switch 문으로 처리한다고 해봅시다.

정답의 번호를 받는 변수를 ans 라고 가정해보겠습니다.


1
2
3
4
5
6
7
8
9
10
switch(ans){
    case 3
        printf("정답입니다!");
        break;
    case 1case 2case 4:
        printf("틀렸습니다!");
        break;
    default:
        printf("1~4 중에 하나를 입력해주세요!");
}
cs


위와 같은 코드가 나오게 됩니다.


1번처럼 switch(기준이 되는 변수) 를 부르고 중괄호를 엽니다.

중괄호 내부에는 각각의 case 에 해당하는 코드를 작성해줍니다.

case가 3일 경우는 case 3 : 이라는 코드로 표현합니다.

1이거나, 2거나, 4일 경우는 5번과 같이  case 1case 2case 4: 로 표현해줍니다.


중요한 점은, case가 끝나면 break 키워드를 사용해 주어야 합니다.

그러지 않을 경우, 케이스에 해당하는 코드를 실행하고 다른 케이스의 코드까지 실행하는 불상사가 생길 수도 있습니다.


마지막으로 8번 줄의 default는 , ans에 들어 있는 값이 1도 2도 3도 4도 아닐 경우에 실행됩니다.


switch문은 결국 if/else 문으로 바꿔서 쓸 수도 있습니다.


1
2
3
4
5
6
if(ans==3)
    printf("정답입니다!");
else if(ans == 1||ans == 2 || ans == 4)
    printf("틀렸습니다!");
else
    printf("1~4 중에 하나를 입력해주세요!");
cs


위와 같이 말이죠. 


처음으로 3번에서 || 표시가 나왔네요.


C에서는 and와 or 표시가 각각 && 와 || 로 표현됩니다.


And는 둘 다 참일 경우 참이 되는 것이고, Or는 둘 중에 하나가 참이면 참이 되는 것입니다.


|| 표시는 Shift + \ 를 누르면 사용 할 수 있습니다.


따라서 3번의 else if 문의 내용은, ans가 1이거나, 2이거나, 4일 경우 라는 뜻이 되겠지요.


이번 코딩에서는 코드가 if문이 더 짧았지만, 일반적인 경우는 switch 문이 더 간결하게 만들 수 있습니다.


또한 보기에도 훨씬 깔끔하니, 다양한 선택지에 코드가 달라질 경우 switch 문을 사용하는 것이 바람직합니다.

(보기에 깔끔하다는 것은 코딩에 있어서 매우 중요한 영역입니다.)


문제

혹시 옛날에 한창 유명했던, 숫자송 기억하시나요 ?


1 일초라도 안보이면
2 이렇게 초조한데
3 삼초는어떻게 기다려 이야이야이야
4 사랑해 널 사랑해
5 오늘은 말할꺼야
6 육십억 지구에서 널만난건
7 럭키야
(사랑해 요기조기 한눈팔지말고 나를봐
좋아해 나를향해 웃는미소 매일매일 보여줘)
8 팔딱팔딱 뛰는가슴 
9 구해줘 오내마음
10 십년이가도 너를사랑해~


네, 설마가 그 설마입니다.


숫자를 하나 입력 받고, 그 숫자에 해당하는 우측의 가사를 출력하는 C 프로그램을 코딩해 봅시다 !




반응형
댓글