2010. 7. 8. 18:41
9장, 조건에 따른 흐름의 분기


// 강의에 앞서, 이제는 논리가 필요해요, 조건을 유심히 보면서, 참과 거짓을 
// 판별할 수 있는 눈이 필요해요

● 흐름의 분기가 필요한 이유

 - 사용자에 따라서 필요한 연산을 선택실행 할 수 있게 하기 위하여

 - 짜여진 각본이 아닌, 프로그램이 유연성을 갖게 끔 한다.



● if문에 의한 조건적 실행

 - 조건이 만족되는 경우에 한해서 실행

 ex) if(실행의 조건)
     {
        실행하고자 하는 내용
     }  // tip : 한문장이면 { } 를 생략가능

    ; 실행의 조건이 만족이 되면
      실행하고자 하는 내용을 실행한다.


예제) ====================================

// if(조건) : 만약에 (조건)이 이면 실행된다

#include <stdio.h>

int main()
{
int val;
printf("정수를 하나 입력하세요 : ");
scanf("%d", &val);

if(val < 0) // val값이 0보다 작을때 (조건이 참이면 밑을 실행한다.)
printf("입력값은 0보다 작다 \n");

if(val > 0) // val값이 0보다 큰 조건이 참이면
printf("입력값은 0보다 크다 \n");

if(val == 0) // val값이 0과 같으면
printf("입력값은 0이다 \n");

return 0;
}
// 조건검사를 3번한다.

예제) ====================================

#include <stdio.h>

int main()
{
int input;
float num1, num2;
float result;

puts("1. 덧셈  2. 뺄셈  3. 곱셈  4. 나눗셈");
printf("선택하여 입력 : ");   scanf("%d", &input);

printf("두개의 실수 입력 : ");
scanf("%f %f", &num1, &num2); // scanf 입력수를 복수이상 입력 가능
// tip : 정수 입력시, space키나  enter키로  구분하여 입력한다

if(input==1) // 만약 input이 1이면 실행
{
result = num1 + num2;
printf("결과 : %f \n", result);
}

if(input==2) // 만약 input이 2이면 실행
{
result = num1 - num2;
printf("결과 : %f ", result);
}

if(input==3) // 만약 input이 3이면
{
result = num1 * num2;
printf("결과 : %f \n", result);
}

if(input==4) // 만약 input이 4이면
{
result = num1 / num2;
printf("결과 : %f \n", result);
}
return 0;
}

// printf("결과 : %f \n", result); 값이 공통적으로 중복된다.
  ↓↓↓↓
보완한 결과) ====================================
#include <stdio.h>

int main()
{
int input;
float num1, num2;
float result;

puts("1. 덧셈  2. 뺄셈  3. 곱셈  4. 나눗셈 ");
printf("선택하여 입력 : ");
scanf("%d", &input);

printf("두개의 실수 입력 : ");
scanf("%f %f", &num1, &num2);

if(input==1) 
result = num1 + num2;

if(input==2) 
result = num1 - num2;

if(input==3)
result = num1 * num2;

if(input==4)
result = num1 / num2;

printf("결과 : %f \n", result);

return 0;
}
    중복된 코드를 좀더 수정해서 
==> 코드가 좀더 간결해졌다.

응용예제)==========================================

// 반복문(for문) 안에도 if가 올수 있다.

#include <stdio.h>

int main()
{
int loop;
for(loop=1; loop<100; loop++)
     // loop가 1부터 1씩증가해서 99가 될때까지 반복한다.
{
if(loop%3==0 && loop%4==0)
               // tip : (&&) : AND연산자 ( a조건 && b조건) ; 둘다 참이여야 실행
{
              // 만약에 loop 가 3으로 나누어 떨어지고, 4로도 나누어 떨어지면
printf("3의 배수이자 4의 배수");
printf("3, 4로 동시에 나눠어 떨어지는 수 : %d \n", loop);
}// tip : 문장이 한개인경우 '{}' 생략가능

}

return 0;
}

====================================================

※ 근데 여기서 잠깐!!
  >> if문만 쓰게 된다면 일일이 if문이 나올경우
      불필요한 연산을 다 하게 된다.
    
   else문을 더해서 if문의 조건이 맞지 않을경우 실행하게 분기를 둔다.

if(조건)
{
조건이 만족시 실행
}
else
{
if의 조건의 맞지 않을때
이 문장이 실행된다
}

예제)================================================

#include <stdio.h>

int main()
{
int val;

printf("정수를 한개만 입력하세요 : ");
scanf("%d", &val);

if(val < 0) // val 값이 0보다 작으면 밑에 printf문이 실행
printf("입력값은 0보다 작습니다 \n");
else      // if문의 조건이 거짓이면, 무조건 else 문이 실행된다.
printf("입력값은 0이거나 그보다 크다\n");

return 0;
}

=====================================================

else if() : if문의 조건이 아닌경우 다른 조건을 만족시키고 싶을때
설명보다는 예를 들어 설명하는 편이 훨씬 쉬울듯하네요

if(조건 1)
{
조건 1 만족시 실행
}

else if(조건 2)
{
조건 1이 만족되지 않고
조건 2가 만족되면 실행
}

else if(조건 3)
{
조건 1, 2이 만족되지 않고
조건 3이 만족되면 실행
}

else if(조건 4)
{
조건 1, 2, 3이 만족되지 않고
조건 4가 만족되면 실행
}

else
{
모든 조건(1, 2, 3, 4)가 만족되지 않으면
else 가 무조건 실행된다

// 만약에 조건 2을 만족하는 조건이라면
// if(조건1)을 검사한뒤
// else if(조건 2)를 실행하고, else if(조건3) else을 건너뛴 뒤
// 프로그램이 종료된다.

예제)================================================

tip1 : else if는 얼마든지 갯수를 많이해서 사용할수 있다.

tip2 : else if 사용시 무조건 if가 있어야 쓸수있다


#include <stdio.h>

int main()
{
int input;
float num1, num2;
float result;

puts("1. 덧셈  2. 뺄셈  3. 곱셈  4. 나눗셈 ");
printf("선택하여 입력 : ");
scanf("%d", &input);

printf("두개의 실수 입력 : ");
scanf("%f %f", &num1, &num2);

if(input==1) // 만약 input이 1이면 밑에 프로그램이 실행
{
result = num1 + num2;
printf("결과 : %f \n", result);

}

else if(input==2) // input가 1이 아니고 2라면 실행
{
result = num1 - num2;
printf("결과 : %f ", result);
}

else if(input==3) // input값이 1, 2가 아니고, 3일때 실행
{
result = num1 * num2;
printf("결과 : %f \n", result);

}

else if(input==4) // input값이 1, 2, 3이 아니고 4일때 실행
{
result = num1 / num2;
printf("결과 : %f \n", result);
}

else // 모든 경우가 거짓일때 실행한다.
printf("적절한 값의 입력이 아닙니다 \n");

return 0;


===================================================

  @ if ~ else 문은 하나의 문장이다.
  @ if ~ else 문은 중첩사용가능하다.

예제)==============================================

#include <stdio.h>

int main(void)
{
int val;
printf("정수를 하나 입력하세요 : ");
scanf("%d", &val);

if(val < 0) // val 값이 0보다 작다면 
printf("입력한 수는 0보다 작습니다 \n");

else
{              // vall값이 0보다 작지 않다면(0보다 크거나, 0과 같다는 조건이 남게된다)
if(val > 0) // val값이 0보다 크면
printf("입력한 수는 0보다 큽니다 \n");

else // 그게 아니라면 (즉, val값이 0과 같다면이라는 조건이 남게된다)
printf("입력한 수는 0입니다 \n");
}
return 0;
}

Posted by 토실토실천재