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