본문 바로가기
쿤즈 Dev/C

[C언어] 조건문을 사용해서 분기시켜보자(1) - if 조건문!

by :)Koon 2020. 8. 10.

프로그래밍을 하는 프로그래머는 여러가지 조건을 만들 수 있습니다. 그리고 코드들이 실행하던도중 조건문을 만나면 조건에 맞는지 판단을 하게 됩니다. 그리고 그에 해당하는 조건을 찾아서 다시 다음 코드들이 실행됩니다. 조건에 맞지 않는 답도 있을까요? 있을 수 있지만 프로그래밍을 할때에는 그 점까지 고려해서 프로그램을 만듭니다.

 

 

조건문에 종류에는 두 가지가 있습니다. if, switch 입니다. 이번 포스팅에서는 if 조건문이라는 것을 사용해보고 조건에 맞는 값으로 분기(판단하여 이동) 시키는 방법을 알아보도록 하겠습니다.


조건문 if 구문을 알아보자!

if 조건문은 단어 그대로 '만약 ~ 라면' 라는 의미로 생각하시면 됩니다. 따라서 if 조건문을 만나면 뒤에 조건식을 사용하여 분기처리를 할 수 있게 만들 수 있습니다. if 조건문도 여러가지 추가 사용방법이 있는데, 이는 다음과 같습니다.

 

  • if 구문
  • if ... else 구문
  • if ... else if ... else 구문
  • if ... else 중첩 구문

if 구문을 단독적으로 사용 할 수 있습니다. if 뒤에는 반드시 조건식이 나와야 합니다. 이 조건식은 0일때와 0이 아닐때로 나눌 수 있습니다. 0이면 False 라는 뜻으로 if 조건문 내부를 실행하지 않겠다는 의미입니다. 반대로 0이 아니면 True 의 의미로 if 조건문 내부를 실행하겠다는 의입니다.

그렇다면 실제 프로그래밍에서 조건문을 어떻게 사용하는지 한번 알아보도록 하겠습니다.


소스코드1 if.c

#include <stdio.h>
 
int main(int argc, const char* argv[]) {
    int num;
    
    printf("정수를 입력하세요 : ");
    scanf("%d", &num);
    
    if (num > 0) {
        printf("if 내부를 실행합니다.");
    }
    
    printf("if 다음 코드 입니다.\n");
    
    return 0;
}

결과1

정수를 입력하세요 : 10
if 내부를 실행합니다.
if 다음 코드 입니다.

앞서 알아본 표준입력과 표준출력을 이용해서 정수를 입력받아 정수형 데이터 변수인 num 에 저장합니다. 표준입력과 표준출력을 사용하는 방법은 아래 포스팅에 있습니다.

 

2020/08/04 - [쿤즈 Dev/C] - [C언어] 데이터 타입(Data Types) 과 함께 변수 선언하기

 

변수 num에 저장된 값은 if 조건문을 만나고 판단할 수 있는 조건식을 만나게 됩니다. 이때 num > 0 라는 조건을 만납니다. 현재 num 에 저장된 정수 값은 10입니다. 따라서 10 > 0 이기 때문에 값은 true 가 됩니다. 조건식이 true 일경우는 if 문 내부로 이동해서 표준 출력함수인 printf() 함수를 실행하게 됩니다.

 

만약 입력하는 값을 음수인 -4 를 입력했다고 가정하면 num > 0 조건식에서 false 가 나오기 때문에 조건값에 맞지 않습니다. 따라서 if 문 내부를 실행하지 않고 뛰어넘은 뒤 마지막 printf() 함수를 실행하게 됩니다.


조건문 if ... else ... 를 알아보자!

조건문 if ... else ... 문법은 if 문법의 조건식을 만족시키지 않았을경우 else 구문을 실행하는 문법입니다. 흔히 우리가 이것 아니면 저것을 선택한다 라는 프로그래밍 코드를 이 구문을 이용해서 만들 수 있습니다. 그래서 보통 홀수, 짝수를 판별하던지 아니면 정확히 둘로 나뉜 조건 중 하나를 선택하도록 하는 식입니다.

 

코드를 통해서 다시 한번 알아보도록 하겠습니다.

 

소스코드2 ifelse.c

#include <stdio.h>
 
int main(int argc, const char* argv[]) {
    int num;
    
    printf("정수를 입력하세요 : ");
    scanf("%d", &num);
    
    if (num % 2 == 0) {
        printf("입력한 %d 는 짝수입니다.\n", num);
    } else {
        printf("입력한 %d 는 홀수입니다.\n", num);
    }
    
    printf("if else 다음 코드입니다.\n");
    
    return 0;
}

결과2

정수를 입력하세요 : 5
입력한 5 는 홀수입니다.
if else 다음 코드입니다.

소스코드2는 위 소스코드1과 형태는 동일합니다. 여기서 중점적으로 봐야 할 부분은 num % 2 == 0 이라는 부분입니다. num 은 사용자로부터 받는 값입니다. 이 정수값을 % 나누기를 하여 나머지를 확입니다. 즉, 2로 나눈 나머지가 1이면 홀수, 0이면 짝수라고 판단할 수 있기 때문입니다.

 

또 나머지가 0인지 아닌지 판단하기 위해서 == 연산자를 사용해서 비교합니다. num % 2 == 0 의 조건식이 true 또는 false 로 나타나게 되는 것입니다.

 

그럼 두가지가 아닌 여러가지 조건을 판단할 경우는 어떻게 해야 할까요? 이 경우는 else if 구문을 사용합니다.


조건문 if ... else if ... else 구문을 알아보자!

조건문 else if 구문은 기존 if ... else ... 구문 사이에 들어가는 구문입니다. 2가지 이상의 조건이 나올때 이 구문을 사용하여 여러가지 조건의 비교를 하고 이후 소스를 실행할 수 있습니다. 예를들면 입력받은 숫자가 양수인지, 0인지, 음수이지를 판단해야 한다면 이 구문을 이용 할 수 있습니다. else if 구문은 조건이 많다면 무한히 늘어날 수 있습니다. 이것은 프로그래머가 개발하기 나름입니다.

 

그럼 소스코드를 통해서 다시 알아보도록 하겠습니다.

 

소스코드3 elseif.c

#include <stdio.h>
 
int main(int argc, const char* argv[]) {
    int num;
    
    printf("정수를 입력하세요 : ");
    scanf("%d", &num);
    
    if (num > 0) {
        printf("입력한 %d 는 양수입니다.\n", num);
    } else if (num == 0) {
        printf("입력한 %d 는 0 입니다.\n", num);
    } else {
        printf("입력한 %d 는 음수입니다.\n", num);
    }
    
    printf("if else 다음 코드입니다.\n");
    
    return 0;
}

결과3

정수를 입력하세요 : -1
입력한 -1 는 음수입니다.
if else 다음 코드입니다.

기본 틀은 소스코드1, 2와 동일합니다. 여기서 중점적으로 보아야 할 부분은 else if 구문입니다. 예제에서 입력받은 num 의 값은 -1 입니다. 이 값은 첫 번째 if 를 만나 조건식을 판별합니다. 조건식 -1 > 0 은 false 값이 나오기 때문에 내부 구문은 실행하지 않습니다.

 

두 번째 else if 문의 조건을 보면 num == 0 이기 때문에 -1 == 0 을 비교합니다. 두 값은 같지 않기 때문에 역시 내부 구문은 실행하지 않습니다.

 

마지막으로 else 구문은 비교 없이 마지막 조건이므로 내부를 실행합니다. 여기서 마지막이 꼭 else 로 끝나지 않아도 됩니다. else if 로 다시 조건을 만들어도 상관 없습니다. 다만 그 외 별도의 조건이 추가적으로 없어야 하며 다른 값이 등장하지 말아야 합니다. 그렇지 않으면 소스코드의 버그(오작동할 수 있는 코드)가 발생할 수 있습니다.

 


조건문 if ... else 중첩 구문을 알아보자!

중첩구문은 C언어에서 나오는 대부분의 구문에서 사용 가능한 구문입니다. 조건문 if 구문에서 조건문 내부에 다시 새로운 조건문을 만들어서 중첩으로 조건을 판단하는 것입니다. 만약 2개의 갈림길이 나오고 하나를 선택했을경우, 다시 또 3개의 갈림길이 나올 수 있게 프로그래밍이 하는 것이 중첩구문입니다. 이 역시 소스코드를 통해서 더 자세히 살펴보도록 하겠습니다.

 

소스코드4 nestedIf.c

#include <stdio.h>
 
int main(int argc, const char * argv[]) {
    int num;
    
    printf("정수를 입력하세요 : ");
    scanf("%d", &num);
    
    if (num >= 0) {
        if(num % 2 == 0) {
            printf("입력한 %d 는 양수이며, 짝수입니다.\n", num);
        } else {
            printf("입력한 %d 는 양수이며, 홀수입니다.\n", num);
        }
    } else {
        printf("입력한 %d 는 음수입니다.\n", num);
    }
    
    printf("if else 다음 코드입니다.\n");
    
    return 0;
}

결과4

정수를 입력하세요 : 3
입력한 3 는 양수이며, 홀수입니다.
if else 다음 코드입니다.

위 소스는 중첩 if 조건문 소스코드입니다. 첫번째 조건문에서 입력받아 저장되어 있는 변수 num 의값을 비교합니다. 예제에서는 3을 입력했습니다. 3 >= 0 은 조건식이 true 이므로 if 조건문 내부로 들어가게 됩니다. 그리고 다시 조건문을 만나면서 홀수, 짝수 여부를 검사하게 됩니다.


이번 포스팅에서는 조건문에 대해서 알아보았습니다. 조건문은 다양한 조건식을 만들고 그 조건식에 맞을 경우 내부 소스코드를 실행하게 만드는 문법입니다. 조건문은 매우 다양하게 많은 곳에서 활용하고 있습니다. 어떤 프로그램을 만들때 많은 조건들이 필요한 경우 이 조건문을 잘 사용하여 효율적인 프로그래밍을 할 수 있습니다.

 

조건문은 C언어 뿐만 아니라 Java, Python, 기타 등등에서도 등장합니다. 하나를 잘 알아두면 나머지 언어를 공부하실 때에도 편하실 겁니다.

댓글