20140317 (break, continue, switch, debug)

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이 선택되어 있는데 지역을 보는 것을 추천한다.

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

 

 

 

 

 

설정

트랙백

댓글