Switch?
Switch는 조건 분기문으로, if와 else if의 연속을 보다 보기 쉽게, 편리하게 만들어놨다고 생각하시면 좋습니다.
switch는 혼자 쓰이는게 아니라 항상 case와 default와 함께 쓰입니다.
보통 메뉴를 고르거나, 특정 선택지가 주어졌을 때에 그 대답에 따라 실행하는 코드가 다를 때에 주로 사용됩니다.
사용 문법은 다음과 같습니다.
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 1: case 2: case 4: printf("틀렸습니다!"); break; default: printf("1~4 중에 하나를 입력해주세요!"); } | cs |
위와 같은 코드가 나오게 됩니다.
1번처럼 switch(기준이 되는 변수) 를 부르고 중괄호를 엽니다.
중괄호 내부에는 각각의 case 에 해당하는 코드를 작성해줍니다.
case가 3일 경우는 case 3 : 이라는 코드로 표현합니다.
1이거나, 2거나, 4일 경우는 5번과 같이 case 1: case 2: case 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 프로그램을 코딩해 봅시다 !