검수요청.png검수요청.png

스위치 (프로그래밍)

해시넷
이동: 둘러보기, 검색

스위치(switch) 문은 각종 프로그래밍 언어에서 다중 조건문이 있을 때 컴파일러 최적화를 하고 가독성을 높이기 위하여 if문 대신 사용하는 조건문이다.

switch ~ case문[편집]

if문이 프로그램의 흐름을 두 가지 상황으로 나누는 데 반해 switch문은 조건식을 먼저 평가한 뒤 그 식의 값이 case 상수와 일치하는 쪽으로 분기하여 해당 명령문을 수행한다.스위치를 움직이면 스위치가 가리키는 동작을 실행하는 기계 같은 역할을 하는 것이 바로 switch문이다.[1]

문법[편집]

기본적인 문법 형식은 다음과 같다.

switch(조건식)
{
 case 상숫값 1:
   명령문 블록 1
   break;
case 상숫값 2:
   명령문 블록 2
   break;
case 상숫값 3:
   명령문 블록 3
   break;
       .
       .
       .
default : 
  명령문 블록 n
  break;
}

switch문의 조건식의 결과 값과 case 상숫값이 일치하는지 검사한뒤 일치하는 값이 나오면 그 case문 아래의 명령문 블록을 실행한다. 그러나 여러 개의 case문 중에서 어느 하나라도 일치하는 값이 없으면 default 부분의 명령문 블록을 수행한다. default 부분은 switch문을 사용할 때 반드시 있어야 되는 코드는 아니지만 조건에 맞지 않을경우를 대비하여 만드는 것이 바람직하다.

명령문 중간의 break문은 해당하는 case의 명령문을 빠져나오는 데 필요하므로 빠뜨리지 않도록 주의해야 한다. 예시는 다음과 같다.

switch(num)
{
 case 1 :
   printf("1");
 
 csae 2 :
   printf("2");
}

이러한 경우에는 break문이 없기 때문에 1과 2가 동시에 출력되는 상황이 발생한다. 그러기 때문에 항상 case 뒤에 break문을 붙여야 한다.[1]

연산자[편집]

조건식에 조건을 만족하는지 검사하기 위해서 연산자를 사용한다. 대표적으로 사용하는 연산자는 다음과 같다.

  • 비교연산자
  • == : ~와 같다
  •  != : ~와 같지 않다
  • > : ~보다 크다
  • < : ~보다 작다
  • >= : 크거나 같다
  • <= : 작거나 같다
  • 논리연산자
  • && : 그리고
  • || : 또는
  •  ! : 참이면 거짓, 거짓이면 참[1]

예제[편집]

프로그래밍을 할때 우리는 어떤 표현식 또는 변수를 여러 값과 비교하는 코드를 짜는 경우가 많다. 예를 들자면 C언어]로 숫자에 따른 과목 분류 프로그램이 있다.

int num;
printf("숫자 입력: );
scanf("%d", &num);
if(num == 1) {
   printf("국어");
} else if(num == 2) {
   printf("수학");         
} else if(num == 3) {
   printf("영어");
} else if(num == 4) {
   printf("탐구 과목");
} else {
   printf("잘못된 값을 입력하셨습니다.");

이 코드를 switch문으로 변경하는 코드는 다음과 같다.

int grade;
printf("점수 입력: );
scanf("%d", &grade);
switch(grade)
{
 case 1 : 
    printf("국어");
    break;
 
 case 2 : 
    printf("수학");
    break;
 case 3 : 
    printf("영어");
    break;
 case 4 :
    printf("탐구 과목");
    break; 
 default :
     printf("잘못된 값을 입력하셨습니다.");
     break;
}

이 구문이 실행되면 num이 어떤 값인지를 검사하고 그에 맞는 값의 블록이 실행된다. 예를 들어 3을 입력하면 "영어"가 출력 되고 break문에 의해 switch 문이 종료된다. 확실히 if문과 비교하여 가독성이 높아진 것을 볼 수 있고 실행속도 또한 빠르다.

단점[편집]

switch문은 if문과 같이 조건 제어문에 속한다. 그러나 if문과 차이점은 if문은 조건식이 true 또는 false 일때 블록이 실행된다고 하면 switch문은 비교할 변수가 어떤값을 가지냐에 따라 실행문이 선택된다. 오직 ==만 비교할 수 있는셈이다. 그러므로 모든 switch문은 if문으로 바꿀 수 있지만 if문에서 부등식이 사용된 경우에는 switch문으로 치환할 수 없다.[2] 예를 들어 C언어로 점수에 따른 학점 분류 시스템 코드를 작성하였다.

int grade;
printf("점수 입력: ");
scanf("%d", &grade);

if(grade < 100 || grade >= 90) {
  printf("A학점");
} else if(grade < 90 || grade >= 80) {
  printf("B학점");
} else if(grade < 80 || grade >= 70) {
  printf("C학점");
} else if(grade < 70 || grade >= 60) {
  printf("D학점");
} else if(grade <60) {
  printf("F학점");
} else {
  printf("잘못된 값을 입력하셨습니다.");

만약 이 코드를 switch문으로 치환한다고 하면 switch문은 부등식을 사용할 수 없는 알고리즘이기 때문에 하드코딩을 통해서 엄청난 분량의 코드를 작성해야 할 것이다. 예를 들어 84점인 학생이 있다 치면 if문으로는 부등식을 통해 90에서 80사이인 것을 검사하여 그 블록을 실행시킬 수 있지만 switch문으로는 사이값들(ex) 89,88,87....)을 하나하나 하드코딩을 통해 작성해야 하기 때문에 이러한 경우에는 if문이나 for문을 통하여 코딩하는 것이 유리하다.

각주[편집]

  1. 1.0 1.1 1.2 문호석, 손명호, C로 시작하는 컴퓨터 프로그래밍, 《㈜한빛아카데미》
  2. , 〈(C언어) Switch문 사용법 & 예제 총정리〉, 《코딩팩토리》, 2019-07-22

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 스위치 (프로그래밍) 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.