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;
}
'프로그래밍 > C' 카테고리의 다른 글
제 11장 C언어의 핵심 함수 - 1 (0) | 2010.07.10 |
---|---|
제 10장 조건에 따른 흐름의 분기 - 2 (0) | 2010.07.08 |
제 8장 여러형태의 반복문 (0) | 2010.07.08 |
제 7장 비트단위 연산과 상수, 기본자료형 (0) | 2010.07.08 |
제 6장 scanf함수와 데이타 표현방식의 이해 (0) | 2010.07.08 |