중첩 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문이 중첩된 것임을 알 수 있습니다.