3.02. Операторы в C++.md
Теперь, когда вы умеете создавать переменные и хранить в них данные, пора научиться с этими данными работать! Для этого в C++ существуют операторы — специальные символы, которые выполняют различные действия: складывают числа, сравнивают значения или объединяют логические условия. В этом параграфе вы узнаете, как использовать основные операторы, чтобы заставить Рудирон выполнять осмысленные действия: считать шаги робота, проверять показания датчика или принимать решения. Давайте разберёмся, как это работает!
Оператор присваивания (=)
Это самый первый и самый важный оператор, с которым вы столкнётесь. Он позволяет положить значение в «коробку»-переменную. В C++ для этого используется знак =.
Оператор присваивания работает справа налево - он берёт значение справа от знака
=и помещает его в переменную, указанную слева.
Пример:
int ledBrightness = 100; // В переменную ledBrightness помещается значение 100
В этом примере переменной ledBrightness присваивается значение 100, которое позже можно будет использовать, например, для управления яркостью светодиода.
Арифметические операторы
Эти операторы нужны для выполнения математических вычислений, как на уроке математики. С их помощью ваш Рудирон сможет считать, сколько шагов прошёл робот или сколько энергии осталось в батарее.
-
Сложение (
+). Складывает два числа. Пример:int steps = 10; int moreSteps = 5; int totalSteps = steps + moreSteps; // totalSteps теперь равно 15 -
Вычитание (
-). Вычитает одно число из другого. Пример:int batteryLevel = 100; int energyUsed = 30; int remaining = batteryLevel - energyUsed; // remaining теперь равно 70 -
Умножение (
*). Умножает числа. Пример:int speed = 5; // метров в секунду int time = 3; // секунды int distance = speed * time; // distance теперь равно 15 метрам -
Деление (
/). Делит одно число на другое. Пример:int totalPizzaSlices = 8; int friends = 4; int slicesPerFriend = totalPizzaSlices / friends; // slicesPerFriend равно 2 -
Остаток от деления (
%). Возвращает остаток, который получается после целочисленного деления. Очень полезен, например, для проверки, является ли число чётным. Пример:int items = 7; int remainder = items % 2; // 7 разделить на 2 будет 3 с остатком 1. remainder равно 1. // Если остаток от деления на 2 равен 0, число чётное.
Операторы сравнения (отношения)
Эти операторы позволяют сравнивать значения и получать в ответ логический результат: true (истина) или false (ложь). Это как задать Рудирону вопрос - «Температура уже выше 30 градусов?». Ответ на этот вопрос поможет программе принять решение.
-
Равно (
==). Проверяет, равны ли два значения. Не путайте с=! Пример:int targetTemp = 25; int currentTemp = 25; bool areEqual = (targetTemp == currentTemp); // areEqual будет true -
Не равно (
!=). Проверяет, что значения не равны. Пример:int levelA = 10; int levelB = 20; bool areDifferent = (levelA != levelB); // areDifferent будет true -
Больше (
>) и Меньше (<). Проверяют, больше или меньше одно значение другого. Пример:int sensorValue = 50; int threshold = 30; bool isHigh = (sensorValue > threshold); // isHigh будет true -
Больше или равно (
>=) и Меньше или равно (<=). Пример:int speed = 60; int speedLimit = 60; bool isLegal = (speed <= speedLimit); // isLegal будет trueЭти операторы - основа для принятия решений в программах. Например, «если
температура >= 28, включить вентилятор».
Логические операторы
Логические операторы позволяют объединять несколько условий сравнения в одно сложное. Они работают со значениями true и false, как союзы «и», «или», «не» в русском языке.
-
Логическое И (
&&). Возвращаетtrue, только если оба условия истинны. Пример:// Включить свет, если темно И есть движение bool isDark = true; bool motionDetected = false; bool turnOnLight = isDark && motionDetected; // turnOnLight будет false -
Логическое ИЛИ (
||). Возвращаетtrue, если хотя бы одно из условий истинно. Пример:// Запустить систему, если есть питание от батареи ИЛИ от солнечной панели bool hasBattery = true; bool hasSolar = false; bool canRun = hasBattery || hasSolar; // canRun будет true -
Логическое НЕ (
!). Инвертирует (меняет на противоположное) логическое значение. Пример:bool isDoorClosed = false; bool isDoorOpen = !isDoorClosed; // isDoorOpen будет true
Комбинированные операторы присваивания
Эти операторы - удобный способ сократить запись. Они позволяют выполнить арифметическую операцию с переменной и сразу же записать результат обратно в неё.
| Оператор | Пример | Эквивалентно |
+= |
x += 5; |
x = x + 5; |
-= |
x -= 3; |
x = x - 3; |
*= |
x *= 2; |
x = x * 2; |
/= |
x /= 4; |
x = x / 4; |
Пример:
int brightness = 50;
brightness += 10; // Теперь brightness равно 60
Эти операторы часто используются в циклах для постепенного изменения значения, например, для плавной регулировки яркости светодиода.
Операторы инкремента и декремента
Это ещё более короткий способ увеличить или уменьшить значение переменной ровно на единицу. Они незаменимы при работе со счётчиками.
-
Инкремент (
++). Увеличивает значение на 1. Пример:int clicks = 5; clicks++; // Теперь clicks равно 6 -
Декремент (
--). Уменьшает значение на 1. Пример:int retriesLeft = 3; retriesLeft--; // Теперь retriesLeft равно 2
Условный (тернарный) оператор (? :)
Это самый компактный способ сделать выбор из двух вариантов. Он работает по принципу «условие ? значение_если_истина : значение_если_ложь».
Аналогия из жизни. «На улице дождь? (условие) Возьми зонт (значение_если_истина), иначе возьми солнечные очки (значение_если_ложь)».
Пример:
int temperature = 30;
// Если температура > 25, скорость вентилятора будет 100, иначе 0.
int fanSpeed = (temperature > 25) ? 100 : 0;
Этот оператор очень удобен для коротких и ясных присваиваний по условию.
Преобразование типов
Иногда в программах для Рудирона нужно преобразовать данные из одного типа в другой. Например, вы получили с датчика температуру 23.7 (тип float), а на целочисленный дисплей нужно вывести 23 (тип int).
- Неявное преобразование. Происходит автоматически, когда
C++считает это безопасным. - Явное преобразование. Вы сами даёте команду на преобразование, указывая нужный тип в скобках.
Пример (деление int с получением float):
int total = 10;
int count = 4;
// Если просто поделить 10 / 4, результат будет 2 (целочисленное деление).
// Чтобы получить 2.5, нужно явно преобразовать одно из чисел в float.
float average = (float)total / count; // average теперь равно 2.5
Пример (отбрасывание дробной части):
float sensorTemp = 23.7;
int displayTemp = (int)sensorTemp; // displayTemp теперь равно 23
Преобразование типов — важный инструмент при работе с данными от датчиков и при выполнении точных вычислений.
Приоритет операторов
Когда в одном выражении используется несколько операторов, C++ выполняет их в строгом порядке, который определяется приоритетом. Это как в математике, где умножение выполняется раньше сложения.
| Приоритет (выше - раньше) |
Операторы |
| 1 | () |
| 2 | !, ++, -- |
| 3 | *, /, % |
| 4 | +, - |
| 5 | <, <=, >, >= |
| 6 | ==, != |
| 7 | && |
| 8 | || |
| 9 | ?: |
| 10 | =, +=, -= и др. |
Если вы не уверены в порядке выполнения или хотите его изменить, всегда используйте скобки
(). Код со скобками не только работает предсказуемо, но и гораздо легче читается.
Пример:
int result1 = 2 + 3 * 4; // Сначала 3*4=12, потом 2+12=14
int result2 = (2 + 3) * 4; // Сначала 2+3=5 в скобках, потом 5*4=20

Зачем это нужно?
Операторы — это «глаголы» языка C++. Они позволяют программе выполнять действия: считать, сравнивать, комбинировать условия и присваивать значения. Без них наши переменные были бы просто мёртвыми данными. Освоив операторы, вы сможете писать программы, которые анализируют информацию с датчиков, реагируют на команды и управляют устройствами именно так, как вы задумали.
Вы изучили операторы, которые позволяют вашей плате Рудирон выполнять вычисления, сравнения и принимать решения. Теперь переходите к следующему параграфу, чтобы научиться использовать структуры ветвления и заставить плату реагировать на разные ситуации. А чтобы попрактиковаться, выполните задания к этому параграфу
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home