3.03. Структуры ветвления.md
Теперь, когда вы умеете работать с переменными и операторами, пора научить вашу плату Рудирон
принимать решения! До сих пор наши программы были линейными, как прямой коридор. В этом параграфе мы познакомимся со структурами ветвления - инструментами C++
, которые создают в этом коридоре «развилки» и «двери», позволяя программе выбирать, по какому пути идти в зависимости от ситуации.
Представьте, что вы создаёте умный дом, если в комнате жарко, включается вентилятор, иначе он выключен. Или программируете робота - в случае, если нажата кнопка «1», он едет вперёд, а в случае кнопки «2» - поворачивает. Структуры ветвления, такие как
if
иswitch
, помогают реализовать именно такие сценарии.
Последовательность команд
Прежде чем создавать «развилки», давайте вспомним, как программа движется по «прямому коридору». Код в C++
- это список команд, которые микроконтроллер выполняет строго одну за другой, сверху вниз. Это называется последовательным выполнением.
Важная деталь в C++
- точка с запятой (;
). Она ставится в конце каждой команды и работает как точка в предложении - показывает, где одна инструкция заканчивается и начинается другая. Без неё компилятор не поймёт, где заканчиваются ваши мысли, и выдаст ошибку.
Пример:
int ledPin = 5; // 1. Объявить переменную
pinMode(ledPin, OUTPUT); // 2. Настроить пин
digitalWrite(ledPin, HIGH); // 3. Включить светодиод
В этом коде Рудирон
выполнит три команды строго по порядку.
Структура «если… то… иначе» (if-else
)
Это самая главная и часто используемая «развилка» в программировании. Структура if
(если) проверяет, истинно ли какое-то условие, и выполняет блок кода, только если это так. Её можно дополнить блоком else
(иначе), который выполнится, если условие было ложным.
Синтаксис if
:
if (условие) {
// Этот код выполнится, только если условие истинно
}
Синтаксис if-else
:
if (условие) {
// Код, если условие истинно
} else {
// Код, если условие ложно
}
условие
- это любое выражение, результатом которого являетсяtrue
илиfalse
. Здесь мы используем операторы сравнения (>
,<
,==
) и логические операторы (&&
,||
), которые изучили в прошлом параграфе.
Пример:
int temperature = 25;
if (temperature > 30) {
Serial.println("Слишком жарко! Включаем кондиционер.");
} else {
Serial.println("Температура комфортная.");
}
В этом коде Рудирон
проверяет переменную temperature
. Так как 25 > 30
- это false
, выполнится блок else
.
Структура «переключатель» (switch
)
Когда вам нужно выбрать одно действие из множества возможных вариантов, использовать длинную цепочку if-else if-else
может быть неудобно. Для таких случаев в C++
есть более изящная структура - switch
(переключатель).
switch
работает как меню в ресторане: вы смотрите на переменную (блюдо, которое заказали) и выбираете соответствующее действие (case
). Если ничего подходящего не нашлось, выполняется действие по умолчанию (default
).
Синтаксис switch
:
switch (переменная) {
case значение1:
// Код для случая, когда переменная == значение1
break;
case значение2:
// Код для случая, когда переменная == значение2
break;
default:
// Код, если ни один case не подошёл
}
переменная
- целочисленная переменная (int
,char
,byte
), которую мы проверяем.case
- один из возможных вариантов значения переменной.break
- очень важная команда! Она говорит: «Действие для этого случая выполнено, выходим изswitch
». Если забытьbreak
, программа «провалится» и начнёт выполнять код следующегоcase
!default
- необязательный блок, который выполняется, если значение переменной не совпало ни с одним изcase
.
Пример:
int mode = 2; // Режим работы робота
switch (mode) {
case 1:
Serial.println("Робот движется вперёд.");
break;
case 2:
Serial.println("Робот поворачивает.");
break;
case 3:
Serial.println("Робот остановлен.");
break;
default:
Serial.println("Неизвестный режим.");
}
В этом примере mode
равно 2
, поэтому выполнится второй case
, и в монитор порта выведется «Робот поворачивает.».
Зачем это нужно?
Структуры ветвления - это то, что делает программы «умными». Они позволяют вашему Рудирону
анализировать данные с датчиков или кнопок и реагировать на них по-разному. С помощью if-else
вы можете создать систему климат-контроля, а с помощью switch
- реализовать меню на дисплее или управлять режимами работы робота.
Вы освоили структуры ветвления, которые позволяют плате Рудирон
принимать решения. Теперь переходите к следующему параграфу, чтобы научиться использовать циклы и заставить плату выполнять действия многократно. А чтобы закрепить знания, попробуйте выполнить задания к этому параграфу.
- Страницы
- 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