언어 자료구조 알고리즘/C 언어 문법

21.제어문 - 선택문

언제나휴일 2009. 8. 19. 05:47
반응형
제어문 - 선택문

 다루는 내용

 - 선택문

 

 조건문의 경우는 특정 조건이 참이냐 거짓이냐에 따라 수행할 구문이 결정이 된다.  선택문의 경우는 연산결과가 특정 상수에 따라 수행할 위치가 결정이 되는 구문이다. 

 다음은 선택문의 포맷이다.

 포맷:

switch (연산결과가 상수가 되는 표현)

{

           case 상수A:

statement;     //선택된 값이 A일 경우에 여기서 부터수행하라.

[break;]        //switch블록을 빠져나가라.(필수 사항이 아님)

          case 상수B:

statement;     //선택된 값이 B일 경우에 여기서부터 수행하라. 

[break;]        //switch블록을 빠져나가라.(필수 사항이 아님)

           ...중략...

           default:

                     statement;     //나열되지 않은 경우에 수행하라.

}


if문에서는 영향 받는 구문이 하나의 statement여서 여러개의 statement를 하나의 블록으로 묶을 필요가 있을 때 블록({ })을 선택적으로 사용할 수가 있었다.  그러나, switch문에서는 필수적으로 블록을 사용해야 한다. 

 

또한, if문에서 ()안에 구문의 연산 결과는 참(0)이냐 거짓(0이외의 것)이냐에 따라 동작하였는데 switch문에서는 ()안에 구문의 연산 결과에 따라 각 case에 명시된 라벨로 분기하게 된다.  분기가 되고 나서 switch 블록을 빠져나갈 수 있게 break;문을 사용할 수가 있다.  java와 C#에서는 강한 신뢰성을 추구를 하고 있어 필수적으로 case 마다 break;문을 사용을 하게 되어 있지만 유연성을 중요시 하는 C언어의 경우는 개발자의 선택에 맞기고 있다.

 

그리고, case에 명시된 상수값이 아닐 경우에 처리를 하기 위한 default: 라벨을 제공하고 있다.

  Look & Feel & Think

다음은 switch문의 동작을 이해를 하기 위해 특정 case에만 break;문이 있다.  입력 매개변수로 들어오는 i에 따라 어떻게 동작하는지 생각해 보자.



숫자 9를 입력하였을 경우 case 9:라벨에서 시작하여 처음 발견되는 break;까지 수행함을 알 수 있다.

숫자 8을 입력하였을 경우 case 8:라벨에서 시작하여 처음 발견되는 break;까지 수행함을 알 수 있다.



숫자 2를 입력하였을 경우 일치하는 라벨이 없으므로 default:부분이 수행됨을 알 수 있다.


선택문은 여러개의 조건문을 가독성 있게 작성할 수 있는 장점이 있으며 경우에 따라서는 논리적인 비교를 할 수 없다는 단점도 갖고 있다.  각 상황에 맞게 적절히 사용할 수 있도록 많은 연습이 필요할 것이다.

 

아주 간단히 해결할 수가 있는 문제를 하나 제시해 볼테니 작성해 보라.

입력 매개변수로 들어온 점수가 0에서 100 사이임을 보장한다고 했을 때 90점 이상은 'A', 80점 이상은 'B', 70점 이상은 'C', 60점 이상은 'D',그 외에는 'F'를 출력하도록 작성해 보시오.

 

void PrintPoint(int score)

{

    //to do

}

반응형

'언어 자료구조 알고리즘 > C 언어 문법' 카테고리의 다른 글

24. 배열의 사용  (0) 2009.08.19
23.배열  (0) 2009.08.19
22. 제어문 - 반복문  (0) 2009.08.19
20. 제어문 - 조건문  (0) 2009.08.19
19. 기본입출력 - 입력  (0) 2009.08.19
18. 기본 입출력 - 출력  (0) 2009.08.19
17.기본 입출력 개요  (0) 2009.08.19
16. 지시/주소/인덱스/간접연산자  (0) 2009.08.19
15. 비트/ 쉬프트 연산자  (0) 2009.08.19
14. 비교/논리 연산자  (0) 2009.08.19