들어가며
이번 글에서는 프로그래밍 기초 지식 중에 하나인 연산자에 대해 한번 알아보겠습니다. 변수를 사용하는 방법을 알았다면 변수를 불러와 비교하고 계산하는 과정이 기다리고 있습니다. 그럼 어떻게 이러한 과정을 수행할 수 있을까요?
연산자는 프로그래밍에서 변수나 값에 대한 다양한 연산을 수행하는 데 사용되는 기호입니다. Arduino 프로그래밍에서도 연산자는 필수적인 요소로, 산술, 비교, 논리, 할당, 증감 등 다양한 연산을 통해 프로그램의 논리적 흐름을 제어하고 데이터를 처리할 수 있습니다.
이 글을 통해 프로그래밍에서 사용되는 다양한 연산자의 개념과 사용법을 설명하고자 합니다. 연산자의 활용법을 배우면 센서 데이터 처리, 조건부 제어, 변수 값 갱신 등 다양한 기능을 구현하는데 활용할 수 있습니다. 이를 통해 사용자는 다양한 프로젝트에서 연산자를 활용하여 보다 복잡하고 유용한 프로그램을 작성하는데 한발 더 다가갈 수 있을거에요.
연산자에 대해 알아보기
연산자는 변수나 값에 대해 산술, 비교, 논리, 할당 등의 연산을 수행하는 데 사용되는 기호입니다. Arduino 프로그래밍에서 연산자를 이해하고 활용하면, 보다 복잡하고 유용한 프로그램을 작성하는데 도움이 될 겁니다. 아래에서 주요 연산자와 그 사용법을 설명하겠습니다.
산술 연산자
산술 연산자는 더하기, 빼기, 곱하기, 나누기 등 기본적인 수학 연산을 수행합니다.
| 연산자 | 설명 | 예제 |
|---|---|---|
+ | 더하기 | a + b |
- | 빼기 | a - b |
* | 곱하기 | a * b |
/ | 나누기 | a / b |
% | 나머지 | a % b |
예제:
int a = 10;
int b = 3;
int sum = a + b; // sum은 13
int difference = a - b; // difference는 7
int product = a * b; // product는 30
int quotient = a / b; // quotient는 3
int remainder = a % b; // remainder는 1
비교 연산자
비교 연산자는 두 값을 비교하고, 참(true) 또는 거짓(false)을 반환합니다. 이렇게 출력 되는 결과를 활용해 조건문 등에서 활용할 수 있습니다.
| 연산자 | 설명 | 예제 |
|---|---|---|
== | 같음 | a == b |
!= | 같지 않음 | a != b |
> | 큼 | a > b |
< | 작음 | a < b |
>= | 크거나 같음 | a >= b |
<= | 작거나 같음 | a <= b |
예제:
int a = 10;
int b = 3;
bool result;
result = (a == b); // result는 false
result = (a != b); // result는 true
result = (a > b); // result는 true
result = (a < b); // result는 false
result = (a >= b); // result는 true
result = (a <= b); // result는 false
논리 연산자
논리 연산자는 주로 조건문에서 여러 조건을 결합할 때 사용됩니다. 완전 초보라면 조건문에서 활용하는 방법을 함께 알아보는 것이 사용법을 익히기에 좋습니다. 아직 조건문을 접하지 않으신 분이라면, 이러한 연산자가 있음을 기억하고, 조건문에 대해 배울 때 다시 한번 방문해 확인 하시는 것이 좋을 듯 해요.
| 연산자 | 설명 | 예제 |
|---|---|---|
&& | 논리 AND (그리고) | a && b |
|| | 논리 OR (또는) | a || b |
! | 논리 NOT (~이 아닌) | !a |
예제:
bool a = true;
bool b = false;
bool result;
result = (a && b); // result는 false
result = (a || b); // result는 true
result = !a; // result는 false
할당 연산자
할당 연산자는 변수에 값을 할당하거나, 변수의 값을 갱신합니다.
| 연산자 | 설명 | 예제 |
|---|---|---|
= | 할당 | a = b |
+= | 더해서 할당 | a += b |
-= | 빼서 할당 | a -= b |
*= | 곱해서 할당 | a *= b |
/= | 나누어서 할당 | a /= b |
%= | 나머지를 할당 | a %= b |
예제:
// 아래는 연속해서 코드가 실행된다는 가정하에 작성된 결과값입니다. a가 변경되는 값을 기억하면서 연산을 해 보세요.
int a = 10;
int b = 3;
a += b; // a는 이제 13
a -= b; // a는 이제 10
a *= b; // a는 이제 30
a /= b; // a는 이제 10
a %= b; // a는 이제 1
증감 연산자
증감 연산자는 변수의 값을 1씩 증가시키거나 감소시킵니다. 이 연산자는 변수 뒤에 올수도, 앞에 위치할 수도 있는데요. 이 위치에 따라 연산 수행 시점이 달라집니다.
| 연산자 | 설명 | 예제 |
|---|---|---|
++ | 1 증가 | a++ 또는 ++a |
-- | 1 감소 | a-- 또는 --a |
예제:
이번 예제는 증감 연산자의 위치에 따른 수행 시점을 확인하기 위해 시리얼 모니터로 출력하는 예제를 들어 설명해 보겠습니다.
void setup() {
Serial.begin(9600); // 시리얼 통신 시작
}
void loop() {
// 반복 실행되는 코드 없음
delay(1000);
// 첫 번째 예제
int a = 5;
Serial.print("Initial value of a: ");
Serial.println(a); // a는 5
Serial.print("Value of a++: ");
Serial.println(a++); // a++는 5 (출력을 먼저 한 뒤 변수 값이 증가)
Serial.print("Value of a after a++: ");
Serial.println(a); // a는 6 (출력후 증가된 값을 출력)
// 두 번째 예제
a = 5;
Serial.print("Initial value of a: ");
Serial.println(a); // a는 5
Serial.print("Value of ++a: ");
Serial.println(++a); // ++a는 6 (값을 증가 시킨 후 출력)
Serial.print("Value of a after ++a: ");
Serial.println(a); // a는 6 (증가된 값을 그대로 출력)
}
코드 설명
- 첫 번째 예제 (
a++)
int a = 5;로a를 5로 초기화합니다.Serial.println(a);로 초기값 5를 출력합니다.Serial.println(a++);에서a++는a의 현재 값을 출력하고, 그 다음에a를 1 증가시킵니다. 따라서 출력되는 값은 5입니다.Serial.println(a);로a의 증가된 값을 출력합니다. 따라서 출력되는 값은 6입니다.
- 두 번째 예제 (
++a)
a를 다시 5로 초기화합니다.Serial.println(a);로 초기값 5를 출력합니다.Serial.println(++a);에서++a는a의 값을 먼저 1 증가시키고, 증가된 값을 출력합니다. 따라서 출력되는 값은 6입니다.Serial.println(a);로a의 값을 출력합니다. 따라서 출력되는 값은 6입니다.

a++는 현재 값을 사용하고 나서 증가시키고,++a는 먼저 증가시키고 나서 그 값을 사용한다.결론
연산자는 프로그래밍에서 변수나 값을 조작하고 제어하는데 사용됩니다. 산술 연산자, 비교 연산자, 논리 연산자, 할당 연산자, 증감 연산자를 이해하고 활용하면 보다 복잡하고 유용한 프로그램을 작성할 수 있습니다. 각 연산자의 사용법과 예제를 통해 연산자의 개념을 명확히 이해하고 실제 프로젝트에 적용해 보세요.