핵심 아두이노 프로그래밍 12 - if 조건문
1. if
2. else
3. else if
어떠한 조건에 따라 원하는 작업을 실행하도록 만들기 위해서는 조건문을 사용해야합니다.
아두이노 프로그래밍에서 조건문은 크게 2 가지로 나뉩니다.
하나는 if 조건문이고, 다른 하나는 switch case 조건문입니다.
if 조건문은 조건을 판단해야할 보통의 경우에 많이 쓰이고, switch case 조건문은 여러 개의 조건들을 간편하게 판단할 때 쓰입니다.
상황에 따라 다르지만, 일단 조건문의 기본이 되는 if 조건문에 대해 먼저 알아보겠습니다.
1. if
if는 두 개의 값을 비교한 다음, 비교한 결과가 참이면 if 조건문 안에 있는 작업을 실행하게하고, 거짓이면 실행하지 않게 합니다.
먼저 if 조건문의 사용 방법부터 알아보겠습니다.
if ( 비교 대상1 == 비교 대상2) {
실행명령
}
쉽게 이해되도록 한 번 상상해봅시다.
“만약 비가 온다면, 우산을 챙겨야한다”라는 말은 if 조건문으로 만든다면 어떻게 해야 할까요?
if (날씨 == 비) {
우산을 챙기시오;
}
라고 하면 될 것입니다.
날씨와 비를 비교해서, 날씨가 비인 것이 참이라면 우산을 챙기고, 거짓이라면 우산을 챙기지 않게 될 것입니다.
이렇듯 if 조건문의 단계는 크게 두 단계로 나뉩니다.
1단계인 “만약 ~라면”과 2단계인 “~하시오”입니다.
여기서 사실 중요한 것은 1단계인 “만약 ~라면”입니다.
이 단계에서 필요한 것은 비교대상1, 비교 연산 기호, 비교대상2입니다.
비교하려는 두 대상은 비교 연산 기호로 서로 비교 한 다음, 그 결과가 참인지, 거짓인지 파악해야하기 때문입니다.
예를 들어 “만약 a가 10이면”은 “if(a == 10)”으로,
“만약 b가 50을 초과하면”은 “if(b > 50)”이라고 쓸 수 있습니다.
비교 연산 기호는
왼쪽과 오른쪽 모두 같을 경우, ==
왼쪽이 오른쪽 보다 클 경우, >
왼쪽이 오른쪽보다 작을 경우, <
왼쪽이 오른쪽보다 크거나 같을 경우, >=
왼쪽이 오른쪽보다 작거나 같은 경우, =<
를 사용합니다.
비교 연산 기호에 대해 더 자세히 알고 싶은 분들은 아래 포스트를 참고하세요.
이제 예제를 한 번 보겠습니다.
if (a > 100) digitalWrite(9, HIGH); // 만약 a가 100보다 크면, 9번 핀을 HIGH로 하시오.
if (b > 100) { // 만약 b가 100보다 크면
digitalWrite(10, HIGH); // 10번핀을 HIGH로 하시오.
}
if (c > 100) { // 만약 c가 100보다 크면,
digitalWrite(11, HIGH); // 11번 핀을 HIGH로 하고,
digitalWrite(12, LOW); // 12번 핀을 LOW로 하시오.
}
위에 적힌 if 조건문은 모두 올바르게 작동됩니다.
차이점은 무엇일까요?
한 마디로 실행 조건이 하나일 경우에는 { }를 사용하지 않아도 가능하다는 것입니다.
다른 말로하면 실행 명령이 2가지 이상일 경우에는 반드시 { }를 사용해야한다는 것입니다.
만약 실행 명령이 2가지 이상인데도 불구하고 { }를 사용하지 않으면, 가장 처음에 있는 실행명령 하나만 조건문에 따라 작동하게 됩니다.
헷갈리신다면, 그냥 if ( ) 뒤에는 무조건 { 실행명령 }라고 표현하면 됩니다.
2. else
if 조건문의 비교 결과가 거짓일 경우 다른 실행 명령을 실행하고 싶을 때 사용합니다.
사용 방법을 먼저 보겠습니다.
if ( 비교대상1 == 비교대상2) {
실행명령1
}
else {
실행명령2
}
이번에도 쉽게 이해가 되도록 상상을 해봅시다.
“만약 비가 온다면, 장화를 신고, 아니면, 운동화를 신는다.”를 if 조건문 형식으로 쓰면 어떻게 될까요?
if (날씨 == 비) {
장화를 신는다;
}
else {
운동화를 신는다;
}
날씨가 비가 오는지 비교한 다음, 참일 경우 장화를, 거짓일 경우 운동화를 신게 될 것입니다.
그럼 이제 실전 예제를 한 번 보겠습니다.
if(digitalRead(5) == HIGH) { // 5번 핀에 HIGH가 입력되면.
digitalWrite(7, HIGH); // 7번 핀에 HIGH를 출력하시오.
}
else { // 아니면,
digitalWrite(9, HIGH); // 9번 핀에 HIGH를 출력하시오.
}
3. else if
if 조건문에서 제시한 조건이 거짓일 경우, 다른 조건을 넣고 싶을 때 사용합니다.
예제를 먼저 보겠습니다.
if (a > 500) { // a가 500보다 크면,
digitalWrite(5, HIGH); // 5번 핀을 HIGH로 출력하시오.
}
else if (b > 500) { // a가 500보다 크지 않고, b가 500보다 크면
digitalWrite(7, HIGH); // 7번 핀을 HIGH로 출력하시오.
}
else { // a와 b 모두 500보다 크지 않으면,
digitalWrite(11, HIGH); // 9번 핀을 HIGH로 출력하시오.
}
else if는 상황에 따라 무한정으로 사용할 수 있습니다.
'아두이노 IDE > 핵심프로그래밍 언어' 카테고리의 다른 글
14. 시간 (0) | 2017.03.02 |
---|---|
13. switch case 조건문 (0) | 2017.02.23 |
11. 복합 연산 기호 (0) | 2017.02.23 |
10. 부울 연산 기호 (0) | 2017.02.23 |
9. 비교 연산 기호 (0) | 2017.02.23 |