if문 (1)

source code

지금까지는 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문과 독립된 문장으로 보게 되어 조건과 상관없이 실행이됩니다.