C Language/Programming Course

3장 조건문(3부 switch~case문) 첫번째 시간

행복하면 2009. 7. 6. 01:25

3장 조건문
3부 switch~case문

    이번시간에는 또다른 조건문인 switch~case문을 배워 보겠습니다.
    switch~case문도 조건을 줘서 조건에 맞는 형태의 값을 출력하기 위한 문법입니다.

    if 문과 비슷한데 일단 switch~case문은 같다라는 조건에서만
    성립을 합니다.
    즉, 예를 들어서 설명을 하면 if문에서는 조건을 if(a > 10)
    이런 조건을 쓸수 있지만 switch~case문에서는 a > 10라는 조건을 쓸 수 없고
    값을 딱 정해줘서 a == 10이라는 뜻의 조건에서만 사용을 할 수 있습니다.

    그럼 왜 if문을 사용하지 switch~case문을 사용하느냐 라는 것의 답변은
    switch문이 더 필요할 때가 있을 수가 있습니다. 
    if문은 전체적으로 표현을 다 할 수 있지만
    switch문은 어떤 조건의 같다라는 조건에서만 성립하는 것만을 나타내기 때문에
    이 부분에 대해서는 더욱 보기가 쉽게 만들어 진 것이죠
    그래서 switch문이 있습니다. 

    switch~case문의 형태를 보겠습니다.

    switch(변수 명)
    {
        case 변수 값:
            필요 행동
            break;
        case 변수 값:
            필요 행동
            break;
        case 변수 값:
            필요 행동
            break;
        case 변수 값:
            필요 행동
            break;
        default:
            필요 행동
            break;
    }


    이런 형태로 사용 할 수 있습니다.
    그럼 저번시간에 한 if문과 비교를 하여 switch~case문으로 다시 만들어 보겠습니다. 

 
                                    if문                                       switch문 
 if(count == 1)
    {
        printf("count == 1");
    }
    else if(count == 2)
    {
        printf("count == 2");
    }
    else if(count == 3)
    {
        printf("count == 3");
    }
    else
    {
        printf("count == 기타");
    }
 switch(count)
    {
        case 1:
        {
            printf("count == 1");
            break;   
        }
        case 2:
        {
            printf("count == 2");
            break;   
        }
        case 3:
        {
            printf("count == 3");
            break;   
        }
        default:
        {
            printf("count == 기타");
            break;   
        }
           
    }


      
    이렇게 if문을 switch~case문으로 바꿔 보았습니다.

    이것보고 대충 이해가 가실 것이라 생각이 듭니다.

    해석을 해 보면 count값에 따라 그 값에 맞는 case 문에 들어가서
    행동을하고, 원하는 count값이 없으면, default로 들어가서
    행동하고, 그럼 여기에서
break문은 무슨 뜻이냐 하면
   case문이나 default문 중에서 어디서 들어가서 그 행동을 하면
   switch문을 빠져 나오라는 뜻
입니다. 왜냐 하면 break문을 쓰지 않으면,
    만약 count에 1이라는 값이 있다고 가정하고, case 1문에는  break가
    없다고 가정을 하겠습니다. 그러면 결과는
    count == 1 count == 2
    이렇게 나오게 됩니다. 즉, case 1의 행동을 하고  case2의 행동도 하고
    case2문에는 break문이 있기에 종료 하게 됩니다.
    그래서 break문은 꼭 써주셔야 됩니다.

   
그리고 꼭 순서를
    case 1:
    case 2:
    case 3:

    이렇게 안해도 됩니다.
    case 3:
    case 1:
    case 2:


    이렇게 하셔도 됩니다. 그 이유는 단지 count의 값을 찾아 가는 것이기 때문에
    순서를 신경을 안쓴다는 거죠
    그리고 case문 안에 보시면 {  }가 되어 있죠?!
    이 괄호는 꼭 안해도 된답니다.
    그리고
default는 안써도 상관이 없답니다.
    if문에서 else문을 안써도 되듯이~
    하지만 if문에서도 이야기 했듯이 기본형태이기 때문에
    왠만하면 지켜 주면 좋을 것이라 생각이 됩니다.


    이정도만 알고 있으면, switch문을 다 쓰실수 볼수 있을 껍니다.


switch~case문 예제
===========================================   
    #include <stdio.h>
   
    int main()
    {
        int count = 0;

        printf(1~5사이의 숫자를 눌러 주세요 : ");
        scanf("%d", &count);

        switch(count)
        {
            case 1:
            {
                printf("숫자 1를 눌렀습니다.\n")
                break;   
            }
            case 2:
            {
                printf("숫자 2를 눌렀습니다.\n")
                break;   
            }
            case 3:
            {
                printf("숫자 3를 눌렀습니다.\n")
                break;   
            }
            case 4:
            {
                printf("숫자 4를 눌렀습니다.\n")
                break;   
            }
            case 5:
            {
                printf("숫자 5를 눌렀습니다.\n")
                break;   
            }
            default:
            {
                printf("count == 기타");
                break;   
            }
           
        }


        return 0;
    }
===========================================   

문제 : 저번시간에 if문으로 만든 프로그램에서 그 if문을

    변수 count에
    90점 이상 이면 1
    80점 이상 이면 2
    70점 이상 이면 3
    60점 이상 이면 4
    59점 이하 이면 5

    를 가지게 바꾸고
    그 count값을 switch문으로 만들어

    1이면 " 수입니다"
    2이면 " 우입니다"
    3이면 " 미입니다"
    4이면 " 양입니다"
    1이면 " 가입니다"   

    출력하는 문장을 만드시오~