지금까지는 if문을 고려하지 않고 작성한 순서대로 실행되는 프로그램(절차 지향 언어)을 중심으로 공부를 하였습니다.
그러나 , if문을 이용하면 프로그램의 진행을 정해진 순서 , 절차가 아닌 본인이 원하는 절차로 실행(선택적 실행)을 시킬 수 있습니다. 이른바 프로그램을 ‘분기’ 시킬 수 있게 됩니다.
if 문을 공부해 봅시다.
if문의 형식
if문의 종류에는 일반적으로 if문 , if ~else문 , if ~else if~else 문 등 3 가지로 나누어 집니다
- if문 if (조건) {실행문}
조건을 충족하여 참이 나오면 실행문이 실행됩니다. - if~else문 if (조건) {실행문 1} else{실행문 2}
조건을 만족하여 참이면 실행문 1이 실행됩니다.
거짓이면 실행문 2가 실행됩니다. - if~else if~else문 if(조건 1){실행문 1}else if (조건 2){실행문 2} else{실행문 3}
조건 1이 참이면 실행문 1이 실행 됩니다.
조건 2가 참이면 실행문 2가 실행 됩니다.
조건 1, 2 가 모두 거짓이면 실행문 3 이 실행됩니다.
기본 if문
단순 if문은 일반적으로 단 하나의 실행 여부 선택에 관한 고민입니다.
예컨대, number의 값이 7보다 큰 경우에만 result에 대입하길 원하는 경우는 다음과 같습니다.
if(number>7) //조건
{result = number;} // 실행문
또 다른 예제를 봅시다.
1.include <stdio.h>
2.
3.int main(void)
4.{
5. int number = 20;
6. int b = 0;
7.
8. if (number > 10) // number가 10보다 크므로 조건은 참
9.
10. {
11. b = number; // b = number 대입문 실행
12. }
13. printf("number : %d, b : %d\n", number, b);
14.
15. return 0;
16. }
실행 결과
number : 20 , b:20
5행의 number가 20으로 초기화 되었습니다. 따라서 8행의 조건을 만족하여 참이므로 11행의 실행문 b = number가 실행됩니다.
그러나 , 5행의 number가 8행의 조건을 만족 시키지 못하였다면 11행의 실행문을 이행하지 않습니다.
if문 들여쓰기 와 중괄호
if문은 아래와 같이 다양한 형식으로 작성할 수 있습니다.
if( i>j) // 1번 형식 , 앞 뒤를 들여 쓰기함
{
i=j ;
}
또는
if( i>j ){ // 2번 형식
i=j ;
}
또는
if ( i>j ) // 3번 형식
i=j ;
또는
if ( i>j ) i=j ; // 4번 형식
어떤 형식을 사용할 것인가는 개인의 취향입니다. 그러나, 가능하다면 조건식과 실행문이 잘 구별되게 사용하는 것이 좋습니다.
중괄호가 없는 3,4번 형식은 실행문이 1개일 경우만 사용이 가능합니다. 즉 실행할 문장이 2개 이상이라면 반드시 중괄호로 묶어 주어야 합니다.
다음 예제를 봅시다.
if ( a > 7)
{
b = a ;
printf("a와b는 동일한 값입니다.") ;
}
위 예제에서 실행문이 2개 이상입니다. 따라서 반드시 중괄호로 묶어 줍니다.
만약 중괄호로 묶지 않는다면 첫 번째 실행문인 b=a 만 실행문으로 보게 됩니다.
예컨대 , a 가 5라면 조건을 만족하지 못하여 거짓이 나오고 printf 함수를 실행합니다. 즉 아래 코드와 같이 인식을 합니다.
1.if ( a > 7)
2. b = a ;
3. printf("a와b는 동일한 값입니다.") ;
실행문이 2개 이상인데 중괄호를 사용하지 않는다면 2행까지만 if문의 실행문으로 간주하고 3행은 if문과 독립된 문장으로 보게 되어 조건과 상관없이 실행이됩니다.