В этой статье мы узнаем о составных операторах и о том, как их использовать в программировании Arduino. Составные операторы — это сокращенный способ выполнения простых математических операций с переменными. Их полезно знать, потому что они сделают ваш код более эффективным, и вы обязательно увидите их в других скетчах.
Типы составных операторов
Есть шесть составных операторов, которые мы можем использовать с Arduino:
- Оператор инкремента
- Оператор декремента
- Составной оператор сложения
- Составной оператор вычитания
- Составной оператор умножения
- Составной оператор деления
В этой статье мы пройдемся по списку и рассмотрим каждый тип оператора и способы его использования.
Оператор инкремента в Ардуино
Допустим, у вас есть переменная с именем x, и вы хотите увеличить ее значение на единицу. Длинный способ написания кода выглядит следующим образом:
x = x+1
Вместо этого вы можете использовать оператор инкремента следующим образом:
x++
++ — это оператор инкремента. Когда оператор инкремента помещается после переменной, как указано выше, x увеличивается на единицу уже после того, как будет вычислено выражение.
Когда ++ помещается перед переменной следующим образом:
++x
x увеличивается на единицу, и новое значение x сразу сохраняется в x.
Чтобы лучше понять это, взгляните на этот код:
void setup() { Serial.begin(9600); int x = 0; int y = 1 + (x++); Serial.print("y = "); Serial.println(y); Serial.print("x = "); Serial.print(x); } void loop() {}
У нас есть переменная int
с именем x, которая установлена равной нулю. Затем у нас есть еще одна переменная int
с именем y, которая установлена равной 1 + (x++)
. Затем мы выводим значение, хранящееся в y, в монитор последовательного порта с помощью функции Serial.print()
.
Если вы запустите этот скетч, то в порт будет выведена цифра один. Это связано с тем, что вычисление y = 1 + (x++)
выполняется до увеличения x. Изначально x равен нулю, поэтому 1 + 0 = 1
.
Если вы измените x++
на ++x
, тогда цифра два будет выведена в serial-порт. В этом случае сложение выполняется после увеличения x. Итак, теперь, когда x равен единице, 1 + 1 = 2
.
Оператор декремента в Ардуино
Вы также можете вычесть единицу из переменной с помощью оператора декремента. Обычный код для уменьшения переменной такой:
x = x-1;
Оператор декремента делает то же самое:
x--
Так же, как и в операторе инкремента, когда после переменной ставится —, вычисление происходит до того, как переменная будет уменьшена. Например, взгляните на тот же скетч, используя оператор декремента:
void setup() { Serial.begin(9600); int x = 0; int y = 1 + (x--); Serial.print("y = "); Serial.println(y); Serial.print("x = "); Serial.print(x); } void loop() {}
Здесь x установлен равным нулю, поэтому y будет равен единице, поскольку 1 + 0 = 1
. Вычисление выполняется до увеличения переменной.
В отличие от этого, когда оператор уменьшения используется как --x
, математические вычисления выполняются после уменьшения переменной.
Использование --x
в скетче выше делает y равным нулю. Поскольку x уменьшается до выполнения математической операции, формула принимает вид y = 1 + (-1)
, что равно нулю.
С операторами инкремента и декремента можно использовать только типы данных int
и long
. Переменные с плавающей точкой, байтовые и символьные переменные не будут работать. Но для остальных составных операторов, о которых мы будем говорить, вы можете использовать любой тип данных.
Составной оператор сложения
Другим полезным составным оператором является составной оператор сложения. Записывается со знаком += так:
x += y;
Оператор составного сложения принимает переменную и добавляет к ней другую переменную, затем сохраняет результат в первой переменной. Например, запись x += y
— это то же самое, что запись x = x + y
. Взгляните на этот код, например:
void setup() { Serial.begin(9600); int x = 2; int y = 4; x += y; Serial.print(x); } void loop() {}
В приведенном выше коде x устанавливается равным двум, а y устанавливается равным четырем. Затем мы используем оператор сложения x += y
, чтобы добавить переменную y к переменной x. Значение, сохраненное в x, затем выводится на последовательный монитор с помощью функции Serial.print()
. Если вы запустите этот код, то на последовательный монитор должно быть выведено число шесть, поскольку 2 + 4 = 6
.
Составной оператор вычитания
Также существует составной оператор вычитания, который выполняет то же самое, что и при написании этого:
x = x - y;
Составное вычитание принимает переменную и вычитает из нее другую переменную. Результат сохраняется в первой переменной. Составное вычитание записывается с помощью -= следующим образом:
x -= y;
Использование x -= y
в приведенном выше коде выведет значение -2 на последовательный монитор. Поскольку x равно двум, а y равно четырем, 2-4 = -2
.
Составной оператор умножения
Оператор составного умножения записывается со звездочкой и знаком равенства:
x *= y;
Оператор составного умножения принимает переменную и умножает ее на другую переменную, затем сохраняет результат в первой переменной. Это то же самое, что написать это:
x = x * y;
Если вы используете x *= y
в приведенном выше скетче, на последовательный монитор будет выведено число восемь, поскольку 2 * 4 = 8
.
Составной оператор деления
Составной оператор деления записывается с косой чертой и знаком равенства:
x /= y;
Это эквивалентно написанию:
x = x / y;
Составной оператор деления принимает переменную, делит ее на другую переменную, затем сохраняет результат в первой переменной.
Таким образом, если вы используете x /= y
как в приведенном выше скетче, результат будет равен 0.5, поскольку 2/4 = 0.5
. Но 0.5 — это не целое число, а значение с плавающей точкой. Поэтому вам нужно будет изменить тип переменные x и y с int
(целых чисел) на float
(значения с плавающей точкой), чтобы код работал.
void setup() { Serial.begin(9600); float x = 2; float y = 4; x /= y; Serial.print(x); // Выведет 0.50 } void loop() {}
Надеюсь, это облегчит вам использование составных операторов при программировании Arduino. В следующей статье разберем тему логических операторов в Ардуино. Оставляйте комментарии, если что-то где-то не понятно.
Документация
Компоненты
- Arduino NANO
- Arduino UNO
- Arduino MEGA
здравствуйте.
Помогите совсем начинающему ардуинщику!
Мне нужно определить четность параметра,
if если четный {сюда}
если нечетный дальше…
Кажется понятно сформулировал своё желание, а как записать не знаю…
Здравствуйте. Вам нужно проверить остаток от деления числа на 2: если число делиться без остатка (то есть остаток 0), значит оно четное. Иначе — оно нечетное.
if(number % 2 == 0) {
// число четное
}
else {
// число нечетное
}
Спасибо большое. Я понимал, что если проверить остаток от деления числа на 2: и число делиться без остатка,т но я не знал, как это записать в скетч. Теперь знаю, благодаря Вам.