Составные операторы в Ардуино

Составные операторы в Ардуино

В этой статье мы узнаем о составных операторах и о том, как их использовать в программировании 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
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Анатолий
Анатолий
11 месяцев назад

здравствуйте.
Помогите совсем начинающему ардуинщику!
Мне нужно определить четность параметра,
if если четный {сюда}
если нечетный дальше…
Кажется понятно сформулировал своё желание, а как записать не знаю…

Анатолий
Анатолий
Ответить на  RxTx
11 месяцев назад

Спасибо большое. Я понимал, что если проверить остаток от деления числа на 2: и число делиться без остатка,т но я не знал, как это записать в скетч. Теперь знаю, благодаря Вам.