프로그래밍/C

3.3 Else-If

피노리코 2014. 10. 28. 22:05

if(수식)

    문장

else if(수식)

    문장

else if(수식)

    문장

else if(수식)

    문장

else

    문장


이런형태의 if문은 다중판단을 할 경우에 사용되는 전형적인 문장으로 자주 사용된다. 수식(expression)은 순서에 의해 계산 되며,만일 수식이 참일 경우 바로 그 밑에 있는 문장(statment)이 수행되고 그렇지 않을 경우 다음 수식으로 넘어가는 과정을 반복한다. 위에서 문장이라고 표현한 것은 한줄의 문장일수도 있고. 중괄호로 싸인 여러개의 문장일수도 있다.

마지막 else는 위쪽 수식이 참일 경우가 하나도 없을 떄 수행되는 문장을 포함하고 있는데 필요가 없으면 생략할수있다. 이 부분은 우발적인 실수를 검사하기 위해 사용되기도 한다.

삼중비교(three-way decision)를 예로 들기 위해 정렬된 배열 v에서 특정한 값가 있는지 알아보는 이분탐색 함수(binary search function)를 살펴보자 단 배열 v의 원소들은 오름차순으로 되어있고 이 함수는 배열 v안에서 x의 위치를 리턴시킨다고 하자 만약 x가 없으면 -1을 리턴시킨다


/* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */


int binsearch(int x,int v[],int n)

{

    int low,high,mid;

    

    low = 0;

    high = n-1;

    while(low <= high) {

        mid = (low+high)/2;

        if(x<v[mid])

            high = mid -1;

        else if(x>v[mid])

            low = mid + 1;

        else  /* found match */

            return mid;

    }

    return -1; /* no match */

}



이 프로그램에서 주 판탖은 각 스템에서 x가 배열 v의 중간 v[mid]보다 큰지 작은지 또는 같은지 여부를 검사한다. 이는 else-if 사용의 전형적인 예라고 하겠다.


예제 3-1 위의 프로그램에서 이분탐색 부분은 루프 내에서 두변의 비교를 수행한다 이 부분에서 한번만 비교하도록 프로그램을 수정하고 계산시간을 비교해보라