3.02.1. Практикум.md
Эти задачи помогут вам научиться использовать операторы языка C++
. Вы будете писать программы для реальных ситуаций, связанных с робототехникой и умным домом, таких как расчёт площади для робота или проверка температуры. Используйте операторы из параграфа, чтобы решить задачи, и проверяйте результаты через монитор порта. Подумайте, какие операторы лучше подойдут для каждой задачи, и попробуйте самостоятельно написать код!
Задача №1. Площадь поля для робота
Введение
Вы программируете робота на Рудироне
, который должен обработать прямоугольное поле размером 4 метра в ширину и 6 метров в длину. Чтобы рассчитать площадь поля и периметр для планирования маршрута, используйте арифметические операторы и выведите результаты через последовательный порт. Помогите роботу понять, сколько ему предстоит работать!
Задание
Напишите программу для Рудирона
, которая создаёт переменные width
типа int
со значением 4
и length
типа int
со значением 6
. Вычислите площадь (ширина × длина) и периметр (2 × (ширина + длина)) и сохраните их в переменные area
и perimeter
. Выведите значения area
и perimeter
в монитор порта.
Вопросы для размышления:
1. Почему для width
и length
использован тип int
, а не float
?
2. Что произойдёт, если изменить width
на 5
и перезагрузить программу?
3. Какие ещё арифметические операторы можно применить для планирования маршрута робота?
Задача №2. Площадь зоны покрытия датчика
Введение
Вы настраиваете датчик движения на Рудироне
для умного дома, который покрывает круговую зону радиусом 2.5 метра. Чтобы определить площадь покрытия, нужно вычислить её с использованием константы PI
и вывести результат через последовательный порт. Узнайте, какую территорию может «увидеть» ваш датчик!
Задание
Напишите программу для Рудирона
, которая создаёт переменную radius
типа float
со значением 2.5
. Вычислите площадь круга (PI
× радиус × радиус), используя PI = 3.14159
, и сохраните результат в переменную area
. Выведите значение area
в монитор порта.
Вопросы для размышления:
1. Почему важно использовать точное значение PI
, а не просто 3.14?
2. Что произойдёт, если изменить radius
на 3.0
и перезагрузить программу?
3. Как можно использовать эту программу для нескольких датчиков с разными радиусами?
Задача №3. Сравнение температур в умном доме
Введение
Ваш умный дом на Рудироне
измеряет температуру в двух комнатах: 25.5 °C в гостиной и 24.0 °C в спальне. Нужно сравнить их, чтобы определить, где теплее, и вывести сообщение через последовательный порт, например, «Гостиная теплее». Помогите Рудирону
выбрать, где включить кондиционер!
Задание
Напишите программу для Рудирона
, которая создаёт переменные tempLiving
и tempBedroom
со значениями 25.5
и 24.0
. Используйте операторы отношения и условный оператор, чтобы вывести в монитор порта одно из сообщений: «Гостиная теплее», «Спальня теплее» или «Температуры равны».
Вопросы для размышления:
1. Почему условный оператор удобен для сравнения двух температур?
2. Что произойдёт, если обе температуры будут равны, например, 25.0
?
3. Как изменить программу, чтобы она учитывала дополнительную комнату?
Задача №4. Управление освещением в умном доме
Введение
Вы создаёте систему умного дома на Рудироне
, которая проверяет, темно ли в комнате и сработал ли датчик движения, чтобы включить свет. Нужно использовать логические операторы, чтобы определить, можно ли включить лампу, и вывести сообщение через последовательный порт. Автоматизируйте уют в вашем доме!
Задание
Напишите программу для Рудирона
, которая создаёт переменные isDark
типа bool
со значением true
и motionDetected
типа bool
со значением false
. Используйте логические операторы, чтобы проверить, истинны ли оба условия, и выведите в монитор порта сообщение: «Свет включён» или «Свет выключен».
Вопросы для размышления:
1. Какой оператор (&&
или ||
) нужно использовать, чтобы свет включался, если выполнено хотя бы одно из условий?
2. Что произойдёт, если оба условия (isDark
и motionDetected
) станут true
?
3. Как добавить в логику третье условие, например, isNightTime
?
Задача №5. Счётчик нажатий кнопки
Введение
Вы разрабатываете устройство на Рудироне
, которое считает, сколько раз нажали кнопку. Нужно увеличить счётчик трижды, затем уменьшить его на единицу, и вывести все значения через последовательный порт. Попробуйте проследить за сигналами на входе!
Задание
Напишите программу для Рудирона
, которая создаёт переменную presses
типа int
со значением 0
. Трижды увеличьте presses
на 1, выводя каждое новое значение в монитор порта. Затем уменьшите presses
на 1 и выведите итоговое значение.
Вопросы для размышления:
1. Как работает оператор ++
в этой задаче?
2. Что произойдёт, если заменить presses--
на presses -= 2
?
3. Как использовать оператор +=
для увеличения счётчика на 2 за раз?
Отлично, вы закрепили знания об операторах, решая задачи для Рудирона
! Если не всё получилось, вы можете посмотреть решения в файле с ответами. Теперь переходите к следующему параграфу, чтобы узнать, как использовать структуры ветвления
- Страницы
- 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