본문 바로가기

아두이노(arduino)

아두이노 기본 문법 if()문을 배워봅시다.

if() 문이란?

영어에서도 알 수 있듯이(?) 만약이라는 뜻입니다. 

 

만약에 배가 고프다면?

나는 밥을 먹을 것이다.

 

또 아니면 배가 아프다면?

화장실을 갈 것이다.

 

이것을  c언어 문법을 표현하면 이렇게 됩니다.

 

 

if (  배가 고프다면 )

{

 

밥을 먹는다.

 

}

 

else if ( 배가 아프다면 )

{

 

화장실을 간다.)

 

}

 

 

가장 흔하게 사용하는 문법이 if()문이며 보시는바와 같이 크게 어렵지 않은 걸 알 수 있습니다. 근데 위 문법을 보면 조금 이상한것이 있습니다. if()문을 배우고 사용하는것이 아니었나요?  else if()는 뭔가요?

 

if()는 만약에, else if()는 아니면 만약으로 표현을 합니다. 그러면 이렇게 또 반문 하실 수 있습니다. 그냥 다  if()문 사용하면 안되나요? 대답은 물론 가능합니다. 다만 if()문만 사용했을때 기계로 가정했을때 의도치 않은 행동을 할 수 있기때문입니다.

 

 

 

일단 위의 코드와 if()문만 사용한 코드를 비교해보겠습니다.

< if  와 else if를 같이 사용할 경우 > < if 만 사용할 경우 >

if( 배가 고프다면)   밥을 먹는다.

else if (배가 아프다면) 화장실을 간다.
if(배가 고프다면) 밥을 먹는다.

if(배가 아프다면)  화장실을 간다.
배가 고프면 밥을 먹고 그렇지 않고 배가 아프다면 
화장실을 간다.

(행동이 동시에 겹치지 않습니다.)

둘중 맞는 조건이 있으면 하나만 실행한다는 사실입니다.

배가 고프면 밥을 먹고 배가 아프면 화장실을 간다.

(즉, 두 행동을 동시에 할 수 있습니다.)

표현을 하면 이렇습니다. 밥도 먹으면서 화장실을 간다는 이야기가 되겠죠?

 

 

 

때로는 if()만 사용해야할 경우도 있으며 위와 같은 예시에서 알 수 있듯이 동시에 일어나면 이상해지거나 혹은 절대 안되는것들도 존재합니다. 

 

 

하나더 확실한 예를들어볼까요?

 

제가 rc카 장난감을 하나 샀다고 가정해보겠습니다. 동봉된 물품을 살펴보면 rc카와 rc카를 조종할 리모컨이 들어 있습니다.

 

 

 

그러면 저는 이렇게 하겠지요?

 

if ( 조종기 전진버튼을 누른다면)

{

전진한다.

}

 

하나더 해보겠습니다.

 

if ( 조종기 후진버튼을 누른다면)

{

후진한다.

}

 

어때요? 아무이상없죠? 실제로도 아무이상 없이 움직일겁니다.그렇다면 두개의 조건을 하나로 합쳐보겠습니다. 전진버튼도 누르고 후진버튼을 눌렀습니다.

 

rc카는 어떠한 행동을 할까요??     정답은??

 

움직이지 않습니다. 두가지 조건이 다 맞기 때문이 앞으로도 가려고 하고 뒤로도 가려고 하니 모터입장으로 참 난감한 일이겠지만 모터는 본인의무를 충실히 하고 있는것입니다. 앞으로 가면서 뒤로 움직이려 합니다.

 

이렇듯 동시에 존재할 수 없거나, 존재해서 안되는 상황에서는

 

if(   조건  )

{

행동

}

else if( 조건  )

{

행동

}

 

이렇게 사용해야 옳습니다.

 

 


 

 

if(), else if (), else 확실히 구분하기

 

else 문이 있습니다.

 

if ( 동전을 던져서 앞면일 경우 )

{

내가 저녁을 산다.

}

 

else if( 동전을 던져서 뒷면일 경우)

{

상대방이 저녁을 산다.

}

 

이렇게 해도 맞는 표현입니다. 이번엔 if()와 else를 이용해 표현해보겠습니다.

 

if ( 동전을 던져서 앞면일 경우 )

{

내가 저녁을 산다.

}

else

{

상대방이 저녁을 산다.

}

 

위와 비교해보면 else라는 곳에는 조건이 보이질 않습니다. ??   

 

그렇습니다 else문에는 조건이 필요가 없습니다.

 

동전을 던져서 나올 수 있는 경우의 수는 바로 2가지 입니다. 앞면이거나? 혹은 뒷면이거나 .

 

설마.. 동전이 앞뒤도 아닌 세워질 수 도있을까요? ( ㄷㄷㄷㄷㄷ)

 

아무튼 이러한 경우 if나 else if를 생략 해서 표현할 수 있습니다.  홀이나 짝 등과같이요

 

그렇다면 3가지를 다쓰면 어떻게 될까요?

 

 

 

if (  배가 고프면

{

밥을 먹는다.

}

else if ( 배가 아프면 )

{

화장실을 간다.

}

else

{

운동을 한다.

}

 

배가 고프면 밥을 먹고, 배가 아프면 화장실을 갑니다. (두 조건은 동시에 일어날 수 없습니다. 위 설명 참고)

만약에 위 두 조건(배고픔, 배아픔)에 해당하지 않으면  무조건 운동을 한다가 됩니다. 이럴때 else를 사용하게 됩니다.

 

 


 

실수 하지 말 것

 

else if()문이나 else는 if()문이 제일 처음 존재하지 않는다면 절대 사용할 수 없습니다.

 

예 : 

가능 불가능
       if()                              // 제일처음 if문이 존재

       else if()

       else
       else if()                       // 제일 처음 if()이 없어서 에러

       else if()

       else

   

 

 

 

버튼으로 led켜기 회로도

회로도는 이렇습니다. 

 

 

 

 

 

 

 

 

 

if() 조건문을 이용해 led 켜보기

버튼이 눌러졌다면 led가 켜지고 그렇지 않을 경우 led가 꺼지는 코드를 작성해볼께요.

 

 

void setup()
{
  pinMode(7, INPUT);   // 버튼을 7번 핀 입력으로 설정
  pinMode(8, OUTPUT);  // led를 8번 핀 출력으로 설정
}

void loop()
{
  if (digitalRead(7) == HIGH) {     // 만약 버튼이 눌러졌다면
    digitalWrite(8, HIGH);            // led를 켜라
  } 

 

else {                                         // 그렇지 않은 경우
    digitalWrite(8, LOW);            // led를 꺼라
  }

}

 

영상을 보시면 버튼을 누르면 led가 켜지고 누르지 않을경우 else에 해당하겠죠? 그럴경우 led가 꺼집니다.