-
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 iNum을 0으로 초기화 해주지 않으면
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이 선택되어 있는데 지역을 보는 것을 추천한다.
조사식은 내가 보고 싶은 것만 추척하여 볼 수 있다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140319 (포인터, little endian, big endian, 포인터 연산) (0) 2014.03.19 20140318 (포인터, &, *, (int *) ) (1) 2014.03.18 20140314 (for, if, 삼항연산자) (0) 2014.03.14 20140313 (while, do while, 중첩 while) (0) 2014.03.13 20140312 (리터럴 상수, 접미사, 아스키코드, 캐스팅, 서식문자, 특수문자) (0) 2014.03.12