컴퓨터/C
앞서 배운 if문들과 처럼 프로그램의 흐름을 제어할 수 있습니다. 하지만 사용하는 구조와 특징이 조금 다른 개념이 있고 각각에 장단점이 있기 때문에 알아보고 사용해 보도록 하겠습니다.
switch(변수) { case 1: 수행 식 break; case 2: ... case 3: ... default: 수행식 break; } |
switch문은 조금 더 구조를 확실하게 눈으로 볼수 있습니다. 즉, 구조의 파악을 하기에 조금더 효율적입니다. 하지만 C언어의 switch문에서는 각각의 case에 값만이 들어갈수 있어 조건식을 통한 표현이 없어 제한되는 부분이 있습니다. 그러면 소스코드를 통해 한번 switch문을 알아보도록 하겠습니다.
예제 1 ) 인터페이스 구조 만들어보기
#include <stdio.h>
int main()
{
int main_menu;
printf("플레이어 육성 게임\n");
printf("1.불러오기\n");
printf("2.새로하기\n");
printf("3.종료\n");
printf("원하는 메뉴를 선택 하세요 : ");
scanf_s("%d", &main_menu);
switch (main_menu)
{
case 1:
printf("1.정보 확인하기\n");
printf("2.사냥터로 이동\n");
printf("3.상점으로 이동\n");
printf("4.메인화면으로 이동\n");
printf("5.게임 종료하기\n");
break;
case 2:
printf("1.정보 확인하기\n");
printf("2.사냥터로 이동\n");
printf("3.상점으로 이동\n");
printf("4.메인화면으로 이동\n");
printf("5.게임 종료하기\n");
break;
case 3:
printf("게임을 종료 합니다.\n");
break;
}
}
결과 보기
다음과 같이 소스코드를 작성하며 if else문 보다 조금더 구조의 파악이 쉽게 소스코드를 작성할수 있습니다.
하지만 1번과 2번의 경우 중복된 경우에 두번다 작성을 했습니다.
if문의 경우 ||(or)수식을 통하여 작성하면 한번이면 작성할수 있는데 말이죠.
이런 문제를 극복하는 방법에 대하여 알아보도록 하겠습니다.
예제 2 ) case 1 과 case 2 합치기
#include <stdio.h>
int main()
{
int main_menu;
printf("플레이어 육성 게임\n");
printf("1.불러오기\n");
printf("2.새로하기\n");
printf("3.종료\n");
printf("원하는 메뉴를 선택 하세요 : ");
scanf_s("%d", &main_menu);
switch (main_menu)
{
case 1:
case 2:
printf("1.정보 확인하기\n");
printf("2.사냥터로 이동\n");
printf("3.상점으로 이동\n");
printf("4.메인화면으로 이동\n");
printf("5.게임 종료하기\n");
break;
case 3:
printf("게임을 종료 합니다.\n");
break;
}
}
결과 보기
결과는 동일하지만 소스코드는 더 간결해 졌습니다. case1과 case2는 동일한 동작을 합니다.
그래서 case1의 끝나는 지점인 break;를 표시를 하지 않는다면 case1과 case2는 합쳐지는 효과를 가지게 됩니다.
따라서 위와같이 간결하게 표현이 가능하게 됩니다.
예제 3 ) 인터페이스 구조 만들어 보기 2
#include <stdio.h>
int main()
{
int main_menu;
int sub_menu;
printf("플레이어 육성 게임\n");
printf("1.불러오기\n");
printf("2.새로하기\n");
printf("3.종료\n");
printf("원하는 메뉴를 선택 하세요 : ");
scanf_s("%d", &main_menu);
switch (main_menu)
{
case 1:
case 2:
printf("1.정보 확인하기\n");
printf("2.사냥터로 이동\n");
printf("3.상점으로 이동\n");
printf("4.메인화면으로 이동\n");
printf("5.게임 종료하기\n");
printf("원하는 메뉴를 선택 하세요 : ");
scanf_s("%d", &sub_menu);
switch (sub_menu) // 메뉴안의 메뉴 !
{
case 1:
printf("정보 확인메뉴에 들어왔습니다.\n");
break;
case 2:
printf("사냥터 이동메뉴에 들어왔습니다.\n");
break;
case 3:
printf("상점 이동 메뉴에 들어왔습니다.\n");
break;
case 4:
printf("메인 화면으로 이동 메뉴에 들어왔습니다.\n");
break;
case 5:
printf("게임 종료하기 메뉴에 들어왔습니다.\n");
break;
default:
printf("잘못된 값을 입력했습니다.\n");
break;
}
break;
case 3:
printf("게임을 종료 합니다.\n");
break;
default:
printf("잘못된 값을 입력했습니다.\n");
break;
}
}
결과 보기
이번에는 default를 추가하여 예외까지도 처리해 보았습니다.
또한 switch문을 중첩시키는 것도 확인을 해보았습니다.
이런식으로 다양한 활용으로 프로그램을 제어할수 있습니다.
자 이제 우리는 switch문을 이용해서 계절을 한번 알아보는 프로그램을 만들어 보도록 하겠습니다.
1. 하나의 정수를 입력 받습니다.
2. switch문을 사용하여 프로그램 흐름을 제어합니다.
3. 정수 입력에 따라 출력을 합니다.
12~2 : 겨울입니다
3~5 : 봄입니다
6~9 : 여름 입니다
10~11 : 가을 입니다.
한번 스스로 만들어 보세요.
결과 보기
#include <stdio.h>
int main()
{
int num;
printf("궁금한 월을 선택하세요 : ");
scanf_s("%d", &num);
switch (num)
{
case 12:
case 1:
case 2:
printf("겨울입니다\n");
break;
case 3:
case 4:
case 5:
printf("봄입니다\n");
break;
case 6:
case 7:
case 8:
case 9:
printf("여름 입니다\n");
break;
case 10:
case 11:
printf("가을입니다\n");
break;
default:
printf("정확한 월을 입력해 주세요\n");
break;
}
return 0;
}
어떠셨나요? 사실 어떻게 만들던 결과만 나오면 정답입니다 ! 수고하셨습니다.
C 언어 - 반복문 while (0) | 2021.06.04 |
---|---|
C 언어 - 중간 정리 (0) | 2021.06.02 |
C 언어 - 표준 입력 (0) | 2021.06.01 |
C 언어 - if ~ else if ~ else (0) | 2021.05.31 |
C 언어 - 조건문 if else (0) | 2021.05.30 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet