그 놀라운 이야기들...

살아 숨쉬는 코드들을 만들어 봅니다. 조심하세요. 날아갈 수도 있으니...

삶이 어떻게 더... 완벽해~

카테고리 없음

[C언어:초급-014] 제어문 - if, else

신코더 2022. 3. 17. 01:43
반응형

프로그래밍 언어에서 제어문이란 프로그램의 흐름을 제어하기 위해 사용되어지는 특별한 기능의 키워드를 이용한 명령문을 말한다. 지금까지는 데이터 자체를 다루기 위해 타입과 저장소(변수)등을 다루는 법을 배웠다면 이제 부터는 이 데이터들을 어떤 흐름과 조건에 맞춰 처리할 것인지에 대해서 배울 차례다.

 

1. if, else

if와 else 는 조건문을 다루기 위한 키워드로서 if 다음에 오는 조건문이 참이면 다음에 오는 코드라인이나 코드블럭을 실행하고, 조건문이 거짓이면 else 다음에 오는 코드라인이나 코드 블럭을 실행한다.

 

    if ( <조건식> ) 

        코드 부분1

    [else 

        코드 부분2]

 

조건식은 주로 비교 연산자나 논리 연산자의 조합등이 주로 쓰이나 그 외 논리적인 정수값을 리턴하는 함수등도 사용 가능하다.

코드 부분은 1라인의 코드라인이나 1개의 코드 블럭이 와야한다. 그 외의 경우에 나타나는 코드들은 조건문 범주를 벗어난 것으로 처리된다. else 이하 부분은 사용하지 않을 수도 있다.

 

    if(weather == GOOD)

        play_football();

    else 

        play_video_game();

    take_shower();

 

다음과 같이 사용하면 오류가 난다.

 

    if(weather == GOOD)

        play_football();

        play_baseball();     // Error : else 가 와야 할 곳에 else가 없다.

    else 

        play_video_game();

    take_shower();

 

             

위와 같이 조건문 내 코드 라인을 2줄 이상 쓰고 싶다면 다음과 같이 코드블럭을 사용한다.

 

    if(weather == GOOD) 

    {

        play_football();

        play_baseball();     

    }

    else 

     {

        play_video_game();

    }

    take_shower();

 

앞으로 우리는 조건문 내 코드들은 무조건 코드블럭으로 사용할 것이다. 왜냐하면 그게 훨씬 가독성이 높기 때문이다. 

코드 라인수가 너무 늘어나는게 불만이면 다음과 같이 해도 된다. 

 

 

    if(weather == GOOD)  {

        play_football();

        play_baseball();     

    } else {

        play_video_game();

    }

    take_shower();

 

조건문은 그 전체를 하나의 코드라인으로 간주된다. 따라서 다음과 같이 조건문 내 조건문의 경우에는 라인수가 여럿이더라도 에러가 나지 않는다.

 

    if(weather == GOOD)

            if(time < 18) 

                    play_football();

            else 

                    play_baseball();

    else 

            play_video_game();

    take_shower();

 

 

2. else if

C에는 ‘else if’라는 키워드는 없다. 그냥 else 뒤에 또다른 조건문 if를 붙여서 쓰는 것 뿐이다.

 

    if(weather != GOOD)

        play_video_game();

    else

        if(time < 18) 

            play_football();

        else 

            play_baseball();

    take_shower();

 

원래는 위와 같은 형태인데, 두번째 if문을 위로 붙여 올리면…

 

    if(weather != GOOD)

        play_video_game();

    else if(time < 18) 

            play_football();

        else 

            play_baseball();

    take_shower();

 

이렇게 붙여쓴 모양새가 된다. 이를 다시 정리하면 아래와 같은 모양새가 될 수도 있다.

 

    if(weather != GOOD)

        play_video_game();

    else if(time < 18) 

        play_football();

    else 

        play_baseball();

    take_shower();

 

다음의 예제를 코딩하고 결과를 확인해 보자

#include <stdio.h>

void play_football(){
    printf("play football \n");
}

void play_baseball(){
    printf("play football \n");
}

void play_video_game(){
    printf("play video_game \n");	
}

void take_shower(){
    printf("take shower \n");
}

#define BAD   0
#define GOOD  1

int main()
{
    int weather = BAD;
    int time = 15;
	
    if(weather != GOOD)
        play_video_game();
    else if(time < 18) 
        play_football();
    else 
        play_baseball();
    take_shower();
}