본문 바로가기
C언어

야메 C언어 강좌: 8. switch문

by 케찹이 2020. 5. 2.
반응형

이번 시간에는 저저번 시간에 배웠던 if문의 연장선이라고 보시면 되겠습니다. if문과 switch문이 하는 일은 굉장히 비슷합니다. 다만 주어진 상황에 따라 if문을 사용할지 switch문을 사용할지를 코드의 작성자가 선택할 수 있죠. 

 

#include<stdio.h>

int main(){
	int choose;
	printf("뽑기를 진행합니다 아무 숫자 하나를 입력해주세요 : ");
	scanf("%d",&choose);
	
	if(choose == 1){
		printf("축하합니다, 명품백 당첨입니다!");
	}
	else if(choose == 2){
		printf("축하합니다, 아이패드 당첨입니다!");
	}
	else if(choose == 3){
		printf("축하합니다, 제주도여행 항공권 당첨입니다!");
	}
	else if(choose == 4){
		printf("축하합니다, 스쿠터 당첨입니다!");
	}
	else{
		printf("꽝이네요~");
	}
	
	return 0;
}

해당 코드는 선물 뽑기를 하는 코드인데요. 코드의 흐름은 저번에 배웠던 if문과 else if를 사용한 코드이며 choose에 어떤 수를 입력하는 가에 따라서 엄청난 선물들이 당첨되고 꽝이 될수도 있는 코드입니다. 그런데 이곳에서 준비한 당첨 선물은 4개 밖에 없습니다. 하지만 사람들이 굉장히 많이 와서 준비한 선물들이 굉장히 많으면 어떻게 될까요. 만약에 준비한 당첨 선물이 100개나 있으면 어떻하죠? if와 else if를 굉장히 많이 사용해야 겠죠. 이때 우리에게 조금이라도 도움이 되는개 switch문이라고 생각이 되네요. 

#include<stdio.h>

int main(){
	int choose;
	printf("뽑기를 진행합니다 아무 숫자 하나를 입력해주세요 : ");
	scanf("%d",&choose);
	
    //여기서부터 보면 되겠죠?
	switch(choose){
	case 1:
		printf("축하합니다, 명품백 당첨입니다!");
		break; 
	case 2:
		printf("축하합니다, 아이패드 당첨입니다!");
		break;
	case 3:
		printf("축하합니다, 제주도여행 항공권 당첨입니다!");
		break; 
	case 4:
		printf("축하합니다, 스쿠터 당첨입니다!");
		break;
	default:
		printf("꽝이네요~");
		break; 
	} 
	return 0;
}

switch문은 위와 같은 방식으로 작성이 가능한데요. 참고로 결과값은 위의 if문과 똑같이 나오게 됩니다. 

switch(변수){
	case 값1 :
    	명령어
        break;
   	case 값2:
    	명령어
        break;
    case ...
    .....
    .....
}

이렇게 switch문에는 판단할 변수를 switch의 괄호안에 줍니다. 그럼 case뒤의 값은 그 값이 특정 값일때 밑의 명령들을 읽어들이겠죠. case가 하는 일이 바로 if문에서는 if(choose == '값') 역활을 하게 되는 것이죠. 그리고 case의 명령어의 마지막에는 반드시 break가 들어가야 되는데요. 그이유는 직접 해보셔도 아시겠지만 break문을 쓰지 않게 되면 그 밑 다른 case의 명령들도 줄줄줄 적용하게 됩니다. 그럼 switch case문을 사용한 이유가 없겠죠??

 

//굉장히 잘못된 switch 문
#include<stdio.h>

int main(){
	int choose;
	printf("뽑기를 진행합니다 아무 숫자 하나를 입력해주세요 : ");
	scanf("%d",&choose);
	
	switch(choose){
	case 1:
		printf("축하합니다, 명품백 당첨입니다!");
	 
	case 2:
		printf("축하합니다, 아이패드 당첨입니다!");
	
	case 3:
		printf("축하합니다, 제주도여행 항공권 당첨입니다!");

	case 4:
		printf("축하합니다, 스쿠터 당첨입니다!");
	
	default:
		printf("꽝이네요~");
	 
	} 
	return 0;
}

자 이런 식으로 switch문 case안에 break을 사용하지 않으면 예를 들어 choose가 2를 저장하고 있으면 case 2로 가게 되어 printf를 출력하고 return이 아닌 밑의 case 3, case 4 그리고 default까지 명령어들을 모두 출력하게 됩니다. 그래서 이러한 부분들을 모두 조심해야겠고요. 

마지막으로 default는 무엇이냐. default는 이제 평상시에 고정값이라고 많이 사용되죠. 그 뜻 그대로 고정값, case에 주어진 값이 아닐때 이제 사용되는 명령어들을 담고 있습니다. 굳이 필요가 없다면 쓰지 않아도 됩니다. 

 

이렇게 switch문을 배우게 되었는데 아마 이미 if문에 굉장히 익숙해져있기에 굳이 배워야 하나 생각이 드실 수도 있는데 확실히 switch문이 직관적으로 이해가 빠르고 활용하기 편할때가 꽤 있습니다. 그러므로 여러분들도 switch문 꼭 기억하고 있으시길 바라겠습니다. 

여러분들이 하나의 문법은 하나의 무기라고 생각하시면 됩니다. 컴퓨터언어의 대부분 강좌는 초반에 가르키는 것들이 제일 중요하고 쉽고 제일 주로 사용하는 문법들입니다. 그리고 극 후반부에 갈수록 어렵지만 덜 사용하는 문법들이기에 꾸준히 저의 강좌를 따라와 주시길 바랍니다. 지금까지 배운것들은 정말 기초적이고 간단한 부분들의 내용입니다. 그러니 여러분들이 거르지 않고 모든 지식들을 배워가고 있길 바랍니다. 어느 한 순간 어렵고 조금 덜 중요한 개념들을 가르킬 경우 제가 꼭 강좌를 시작할 때 언급하겠습니다. 지금까지 그리고 앞으로 5강좌 정도는 정말 기초적인 지식이므로 여러분들이 꼭 배우시고 잘 활용했으면 좋겠습니다. 

그럼 오늘도 여러분들이 배운 내용을 자신의 코드로 작성하여 활용하여 주시길 바랍니다. 감사합니다!

반응형

댓글