ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20140317 (break, continue, switch, debug)
    부산IT학원/스마트컨트롤러 2014. 3. 17. 17:53

    21일차

     

    ---------------------

    break, contine

    ---------------------

    - break

    반복문에서 빠져나가는 제어문

    - continue

    반복문을 계속 진행하는 제어문

    ex) 예제 소스

    #include <stdio.h>

    int main()
    {
      int iNum;
      
      // 30에서 50사이 값 입력
      while(1)
      {
        printf("30에서 50사이 값을 입력하세요 : ");
        scanf("%d"&iNum);

        if(30 > iNum)
        {
          continue;
        }

        if(50 < iNum)
        {
          continue;
        }

        break;
      }

      printf("입력하신 값은 %d입니다. \n", iNum);

      return 0;
    }

     

    예제 소스를 보면 continue가 실행되면

    그 밑에 명령은 실행하지 않고 바로 반복문 맨 위로 간다.

    break를 만나면 그 밑에 명령도 실행하지 않고

    반복문을 빠져나간다.

    for ( ; ; )
    {
      if( )
      {
        break;
        ++iNum;  //  절대 실행되지 못 할 코드
      }
      if( )
      {
        continue;
        ++iNum;  //  절대 실행되지 못 할 코드
      }
    }

     

    ---------------

    switch

    ---------------

     

    - if문과 유사하다

    switch ( 정수형 변수 )

    {

    case 상수형 정수:

    break;

    case 상수형 정수:

    break;

    default:

    break;

    }

    사용법은 위와 같다. 참고로 default에는 break;를 안 넣어 줘도 되지만

    왠만하면 보기 좋게? 넣으면 좋겠다.

    ex) 예제 소스

    #include <stdio.h>

    int main()
    {
      int iNum;

      printf("숫자를 입력하세요 : ");
      scanf("%d"&iNum);

      switch(iNum)
      {
        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("왜 %d를.... \n", iNum);
          break;
      }

      return 0;
    }

     

    if문과 비슷하다.

    허나 다른점이 있는데 아래 소스를 보자.

     

    #include <stdio.h>

    int main()
    {
      int iNum = 0;  //초기화를 꼭 해줘야 합니다.

      printf("문자를 입력하세요 : ");
      scanf("%c"&iNum);

      switch(iNum)
      {
        case 'A':
        case 'a':
          printf("A?!! \n");
          break;
        case 'B':
        case 'b':
          printf("B?!! \n");
          break;
        case 'C':
        case 'c':
          printf("C?!! \n");
          break;
        case 'D':
        case 'd':
        case 'E':
        case 'e':
        case 'F':
        case 'f':
          printf("DEF중에 하나 \n");
          break;
        default:
          printf("잘했어요! \n");
          break;
      }

      return 0;
    }

     

    위에서 보면 A를 입력시 그냥 case 'a'로 넘어가서

    A, a 중 아무거나 입력하면 같은 결과가 나온다!!

     

    또 이건 여담으로 int iNum0으로 초기화 해주지 않으면

    scanf("%c", &iNum); 에서 쓰래기값과 함께 겹쳐버린다는 것!!

    예를 들어 iNum에 처음 쓰래기값으로 20122359라는 정보가 저장 되어있었다면

    scanf("%c", &iNum); 로 문자하나 크기 (1byte) 만 입력 받기 때문에 A (65) 입력시

    20122365 로 나오기 때문에 초기화를 잊지 말아야 한다.

     

     

    - if 문과 switch 문 비교

    #include <stdio.h>

    int main()
    {
      int iScore;

      printf("점수를 0~100 중 입력하세요\n : ");
      scanf("%d"&iScore);

      switch(iScore/10)
      {
        case 10:
        case 9:
          printf("점수 : A \n");
          break;
        case 8:
          printf("점수 : B \n");
          break;
        case 7:
          printf("점수 : C \n");
          break;
        case 6:
          printf("점수 : D \n");
          break;
        default:
          printf("점수 : F \n");
          break;
        
      }
    /*
      if(90 <= iScore)
      {
        printf("점수 : A \n");
      }
      else if(80 <= iScore)
      {
        printf("점수 : B \n");
      }
      else if(70 <= iScore)
      {
        printf("점수 : C \n");
      }
      else if(60 <= iScore)
      {
        printf("점수 : D \n");
      }
      else
      {
        printf("점수 : F \n");
      }
    */

      
      return 0;
    }

    같은 결과가 나온다

    어떤 구간에 대한 ( 3 < x < 100 ) 것은 if 문이 좋고

    정확한 몇개의 값에 대한 ( 3, 4, 5, 6 )  것은 switch 문이 유리하다.

     

     

    ------------

    debug

    ------------

    컴파일에서 잡지 못하는 오류를 잡을때 쓴다.

     

     break point를 걸면 건 곳에서 프로그램이 멈춘다.

     그리고 디버깅을 시작.

     한 줄씩 실행이 가능하고 프로시저 단위로도 실행 가능하다.

     보시다 시피 변수의 값이 변하는 것을 추척할 수 있다.

    그리고 조사식1이 선택되어 있는데 지역을 보는 것을 추천한다.

    조사식은 내가 보고 싶은 것만 추척하여 볼 수 있다.

     

     

     

     

     

Designed by Tistory.