조건문???

조건문이라는 것은 C언어에서 빼놓을 수 없는 것 중 하나입니다.

'특수한 경우에 어떤 것을 실행할 것이다'라고 지정해주는 것이 조건문의 역할인데

조건문을 프로그램에서 자주 사용하기 때문에 중요합니다.

예를 들어 로봇청소기의 알고리즘을 보면 전방 센서에 물체가 인식되면 물체로부터 멀리 뒤로 이동한다던지, 우측에 있는 장애물을 왼쪽으로 피한다든지 하는 것들이 모두 조건문을 통해서 만들어내는 것들이라 볼 수 있습니다.

오늘 공부할 조건문은 if를 사용한 조건문인데요.

종류를 나눠서 if문, if - else문, if- else if - else문 이렇게 3가지로 분류하기는 하나 결국에 if문에서 파생된 것이라 보시면 됩니다.


IF문이란?

영어로 if는 가정법에서 사용하는 거 다 알고 계실겁니다.

뜻은 '만약 ~라면?'으로 대개 해석합니다.

C언어에서의 if문도 거의 동일한 의미로 해석이 됩니다.

 

if ( 식 ) 문

 

if문은 다음과 같이 해석을 합니다.

 

"식을 평가한 값이 0이 아니라면 문을 실행합니다."

 

식을 평가한다는 의미를 말하자면 "식 = A"에서 A에 해당하는 것이 평가한 값이라 생각하면 됩니다.

처음엔 이러한 표현이 낮설게 느껴질 수 있습니다만 예제를 보시면 이해가 쉽게 되실거라 생각합니다.

 

<예제1> 5로 나누어 떨어지는 수인가?

 

위 예제는 5로 나누어 떨어지는지 알아보는 프로그램입니다.

코드를 보시면 if문의 식에서 변수를 5로 나눈 나머지를 구하게 되는데

이때 식이 5로 나누어 떨어지지 않으면 0이 아닌 어떤 수(평가 값)가 나올 것입니다.

이때 5로 나누어 떨어지지 않는다는 것을 표시하는 것이 위 코드의 진행과정입니다.

만약에 5로 나누어진다면 아무것도 표시되지 않을 겁니다.


이미 if문의 단점이 뭔지 눈치채신 분이 계실지도 모르겠습니다.

if만으로는 식을 평가해서 0이 아닌 경우에 문을 실행하는 것은 가능하지만

"평가 값이 0일 경우에 어떤 것을 실행한다"라는 부분이 없다는 것입니다.

그래서 필요한 것이 if - else문입니다.

 

if ( 식 ) 문1 else ( 문2 )

 

else를 어학적으로 해석하면 '아니면'입니다.

즉 식을 평가한 후 0이 아니면 문1을 실행하고, 0이 아닌게 아니면(0이면) 문2를 실행하라는 겁니다.

 

Tip! 부정의 부정은 긍정!!

 

if else문의 해석은 if문에서 하나의 경우만 추가하면 됩니다.

 

"식을 평가한 값이 0이 아니라면 문1을 실행합니다.

그렇지 않은 경우라면 문2를 실행합니다"

 

<예제2> 홀짝 맞추기

 

위 프로그램은 입력한 수가 홀수인지 짝수인지 판별하는 것입니다.

2로 나누어 떨어지지 않으면 문1을 실행하고, 2로 떨어지면 문2를 실행하는 것으로

짝수, 홀수를 분별해서 알려줄 수 있습니다.


if- else if - else문

만약 세 가지 이상의 선택지를 만들기 위해서 사용하는 방법입니다.

사용하는 방법은 아래와 같습니다.

 

if ( 식1 ) 문1 else if ( 식2 ) 문2 else 문3

 

사실 이 조건문은 새로운 것이 아닙니다.

if문에 else를 붙여서 if - else문이 되었던 것처럼, if - else문을 두개를 붙이면 위와 같은 조건문을 만들 수 있게 되는 것입니다.

좀 더 이해하기 편하게 표시해보겠습니다.

 

if ( 식 ) 문1

else if ( 식 ) 문2

else 문3

 

초록색으로 표시한 부분이 첫 번째 if - else 문이고, 민트색으로 표시한 부분이 두 번째 if - else 문입니다.

아래 예제를 통해서 좀 더 알아보겠습니다.

 

<예제3> 양수 0 음수 판별

 

위 예제와 같이 3가지로 나누어서 판별하는 경우에는 if - else if - else문을 사용하게 됩니다.

첫 식에서 0인지를 판별하고 맞다면 0이라는 것을 출력하고 아니라면 밑의 else if로 가서 식2를 판별합니다.

두번째 판별 식에서는 0초과인지를 알아보게 되고 0 초과라면 양수임을 출력하며 그렇지 않고 0 미만이라면 음수임을 알려줍니다.

Tip!

 '==' 와 '>' 연산자는 성립할 때 평가 값이 1이 되며, 성립하지 않을 때 0이 평가된 값이 됩니다.

이러한 연산자에 대해서 다룬 내용은 다음 강의에서 보시면 됩니다.

 

사실 if - else문을 두 개를 연결해서 만든거기 때문에 선택지가 더 늘어난다면 더 이어붙일 수가 있습니다.

if - else if - else라는 어떤 형식이 정해져 있다고 생각하기 보다는 if문을 응용해서 사용하는 것이라 보시면 좋을 것 같습니다.


 

이번 강의는 여기서 마치고 다음 강의에서는 if문에서 사용되는 연산자들을 중심적으로 알아보겠습니다.