중첩 if 문 (2)

if again if

중첩 if 문 장점

1.프로그램의 경제적 실행

중첩 if 문은 프로그램의 실행 흠을 제어하기 위한 목적으로 많이 사용합니다.
예컨대 , 변수 number가 1에서 6까지 숫자 중에서 어떤 것인지 알아보는 경우 두 가지 방법을 생각해 볼 수 있습니다.
첫째 , 1 부터 하나 하나 순차적으로 검사 하는 방법이 있습니다.
둘째, 중간 값을 정한 후에 그 값에 따라 범위를 둘로 나누어 검사 하는 방식이 있습니다.

순차적으로 1 부터 6까지 검사 하는 방법은 아래와 같습니다.

if (number == 1)
{
    printf( " 1 ") ;
}
else if (number == 2)
{
    printf( " 2 " ) ;
}
else if (number == 3 )
{
    printf( " 3 " ) ;
}
else if (number == 4)
{
    printf( " 4 " ) ;
}
else if (number == 5)
{
    printf( " 5 " ) ;
}
else
{
    printf( " 6 ");
}

범위를 분리하여 검사 하는 방식은 아래와 같습니다.

if (number <= 3)
{
    if (number == 1)
    {
       printf( " 1 ");
     }
    else if (number == 2)
    {
       printf( " 2 ");
     }
    else
    {
       printf( " 3 ");
     }
}
else
{
   if (number == 4)
    {
       printf( " 4 ");
     }
    else if (number == 5)
    {
       printf( " 5 ");
     }
    else
    {
       printf( " 6 ");
     }
}

예컨대 number 가 6 이라면 첫째 방법은 총 5 번을 조건 검사 해야 합니다.
그러나 , 두 번째 방식으로 검사한다면 number가 3보다 크기 때문에 2번 검사 만에 number 값이 6 임을 알아 낼 수 있습니다.

위 사례에서 만약 변수 number 가 100 또는 1000 , 혹은 그 것보다 훨씬 큰 숫자라면 순차적인 검사 방법과 중첩 if문을 활용한 검사 방법과의 효율성은 더 크게 차이가 나게 됩니다. 프로그램의 효율적인 실행을 위하여 어떤 if문을 사용하는 것이 더 좋은가 생각해 보고 코드를 작성하는 것을 추천합니다.

2. 중첩 if 문과 선행 조건 검사

if (number > 10)      //if문 안쪽에 if else문이 포함 되어 있습니다.
{
    if(a >=0)        //if else문 시작
    {
      a=1 ;
    }
    else
    {
       a= -1 ;
    }               //if else문 끝
}

위의 중첩 if문은 단순한 if문을 2번 사용하여 아래와 같이 바꿀 수 있습니다.

if ((number > 10) && (a >=0)
{
     a = 1 ;
}
if ((number > 10) && (a < 0)
{
    a = -1 ;
} 

위 두 코드는 동일한 결과를 산출합니다.
첫 번째 사례는 number > 10 이라는 조건을 선행 조건으로 하고 있습니다.
따라서 변수 number 가 10 보다 큰 숫자 인가의 참 거짓을 1번만 판단하면 됩니다.
그러나 , 두 번째 사례는 동일한 조건 검사를 두 번이나 해야 합니다.
따라서 동일한 조건식을 조사 해야 하는 경우에 그것을 선행 조건으로 하여 중첩 if문을 활용하면 보다 실행 효율이 좋은 프로그램을 작성할 수 있을 것입니다.

중첩 if else 문

if..else if…else문은 사실 2개의 if…else문이 결합된 것입니다.
즉 if…else문이 중첩된 구조 입니다. 아래 예제를 봅시다.

1.if (a >= 0)
2.{
3.   b=1 ;
4.}
5.else
6.{
7.   if(a < 0)
8.   {
9.     b=-1;
10.   }
11.   else
12.   {
13.     b=0 ;
14.   }
15.}

위의 예제는 if..else문의 else 블록에 if..else 가 중첩되어 있습니다.
6 행의 else 블록의 시작 중괄호와 15 행의 else 블록의 종료 중괄호는 생략이 가능합니다. 생략이 가능한 이유는 7~14 행의 if…else문을 1 개의 실행 문장으로 볼 수 있기 때문입니다.
중괄호가 생략된 위 예제의 구조는 아래와 같습니다.

1. if (a >= 0)
2. {
3.   b=1 ;
4. }
5. else
6.               //시작 중괄호 생략
7.   if(a < 0)
8.   {
9.     b=-1;
10.   }
11.   else
12.   {
13.     b=0 ;
14.   }
15.              //종료 중괄호 생략

중괄호가 생략된 위 예제에서 7 행의 if 를 5행의 else 옆으로 이동 시키면 아래 예제와 같은 구조가 됩니다.

1. if (a >= 0)
2. {
3.   b=1 ;
4. }
5. else if(a < 0)
6. {
7.     b=-1;
8.  }
9. else
10.   {
11.     b=0 ;
12.   }      

위 3 개의 예제를 통해서 if…else if…else문은 결국 if…else문이 중첩된 것임을 알 수 있습니다.