#10. 분기분(1) - if문

2009. 8. 29. 18:20STUDY !/배워보자 C언어



  분기라는 것은 갈라진다는 뜻이다. ㅁㅁ분기점 이란 말을 자주 들어보았을 것이다. 분기문은 도로에서 차가 갈라져 나가듯이, 프로그램의 흐름을 바꾸어 주는 구문이다.
  분기문에는 if문, switch문, goto문 등이 있다.

  if문에 대해서 알아보자
  if문은 사용하기에 따라서 if, if else, if else if else 등으로 사용할 수 있다. else라는 것은 다른것, 나머지 라는 뜻이 므로, if문이 거짓일 경우에 를 실행하고, else if문은 또 if의 경우가 아니지만, if를 제외한 나머지 경우도 아닐 경우에 사용된다. 즉, 가위바위보를 하는데 if가 가위가 되었다. 그런데 나는 주먹의 경우를 말하고 싶을때, if를 제외한 경우가 주먹과 보 두가지의 경우가 있기 떄문에, 여기에 else if를 사용해야 한다.

[ 구  조 ]

if ( /* 조건 */ )
  { /* statement */ }
else if ( /* 조건 */ }
  { /* statement */ }
  else { /* statment */ }

/* else if와 else 모두 생략이 가능하다. */
[ 실행순서 ]
  만약 첫번째 조건이 참이면 statement를 실행하고 if문 전체를 건너뛰고 다음 문장을 실행한다.
  만약 첫번째 조건이 거짓이고 두번째 조건이 참이라면, 두번째 statement를 실행하고 if문 전체를 건너뛰어 다음 문장을 실행한다.
  만약 첫번째와 두번째 조건이 모두 거짓이면 else문의  statement를 실행하게 된다.

  간단한 예를 살펴보자

Ex_1)
{
1  double i = 0;
2  printf("5보다 큰 수를 입력하세요 >>");
3  scanf("%lf",&i);
4  if ( i > 5 )
5    { puts("참잘했어요"); }
6  else
7     { puts("한글공부 다시하셔야 겠네요 ㅋㅋㅋㅋ"); }
}

  위의 예제는 if~else문을 사용한 문장이다.
  이 예제를 실행시키면, printf에 입력한 문장이 제일 먼저 뜨고, 숫자 하나를 입력하면 거기에 맞춰서 if문이 실행된다. 3이라는 숫자를 입력했다면, if문은 3 > 5라는 조건을 갖게 되고, 조건이 거짓이므로 if문을 건너 뛰고 else의 statement인 puts("~") 가 실행된다.

 

다음은 else if문을 사용해보자.

Ex_2)
{
1  double i = 0;
2  printf("5보다 큰 수나, 0보다 작은 수를 입력하세요 >>");
3  scanf("%lf",&i);
4  if ( i > 5 )
5    { puts("5보다 큰 수를 입력하셨습니다. 참 잘했어요."); }
6  else if ( i < 0 )
7    { puts("0보다 작은 수 입니다. 참 잘하셨습니다."); }
8  else
9    { puts("국어공부부터 다시 하고 오세요"); }
}

  위의 예제는 1번예제에 0보다 작은 수를 입력했을 경우를 추가 한 것이다. 3이 입력되었다면, 3 > 5이므로 첫번째 조건은 거짓, 3 < 0 이므로 두번째 조건도 거짓이다. 따라서 else의 statement가 실행될 것이다. -3을 입력했다면 if문은 거짓이지만 else if 문이 참이 되므로 else if 문의 statement 가 실행된다.

if문은 중첩을 해서 사용할 수도 있다. 만약 A일경우에, B의 경우에는 Case1, B가 아니라면 Case2가 되고, A의 경우가 아니면 Case이가 된다고 하자. if문으로 표현하면,

if ( A )
 {
   if ( B )
     { Case1 }
   else
     { Case2 }
 }
else
 { Case3 }

이렇게 표시된다.


if문에 대해서도 다 배웠으니, 이것을 가지고, 가위바위보를 하는 프로그램을 만들어보아라.
한가지 팁을 주자면 가위, 바위, 보를 각각 1 2 3 으로 대체 할 수 있다.


'STUDY ! > 배워보자 C언어' 카테고리의 다른 글

숫자 야구게임  (0) 2010.02.25
#9. 반복문 - for문  (0) 2009.08.27
#8. 반복문 - do-while문  (2) 2009.08.26
#7. 반복문 - while문  (0) 2009.08.25
#6. 화면 입력함수  (0) 2009.08.24