Ветвление в NXT-G
Кроме последовательного и циклического исполнения команд язык NXT-G предусматривает ветвление. Его можно осуществить при помощи оператора Switch, который проверяет логическое условие и пускает программу по одной из двух (или более) ветвей.
Самый первый блок Wait в этой программе позволяет запустить робот кнопкой Start на блоке.
В настройке блока Sound обратите внимание на флажок Wait for completion. Если он установлен, то вначале проигрывается заданный звук, и только потом управление переходит к следующему блоку. Если же флажок снять, то включается звук, после чего управление немедленно переходит к следующему блоку.
- Sensor - поведение робота зависит от логического условия, связанного с текущими значениями сенсора;
- Value - поведение робота зависит от результата сравнения числового, текстового или логического значения, поступившего извне, с заданным значением.

Пример 5.2. Робот говорит "No", если датчик касания не нажат, и "Yes" - если нажат. Обратите внимание на настройки блока Switch: в поле Condition можно поменять сравниваемое значение. В блоке Touch Sensor в поле Action выбрано Pressed.

Пример 5.3. На экране NXT последовательно сменяются пять изображений часов в зависимости от счётчика цикла. Для изображения часов использованы файлы Time00 - Time04. Дополнительные вкладки значений блока Switch можно добавить нажатием на кнопку "+" в полеCondition. Эта возможность доступна только при выключенном флажке Flat view. Вкладки, соответствующие различным значениям, имеют подписи (появляются при наведении на них указателя мыши). Если обрабатываемых значений больше пяти, то для того, чтобы увидеть все добавленные вкладки, нужно "растянуть" блок Switch. Для этого нужно навести указатель мыши на балку Lego внутри блока, прижать левую кнопку мыши и потянуть вправо.

При обработке сложных логических условий может возникнуть необходимость в использовании вложенных ветвлений.
Задание 5.1. Напишите программу управления роботом одной кнопкой (датчиком касания). При запуске программы машина должна ожидать нажатия на кнопку Start, после чего начать движение вперёд. При нажатии на датчик касания она должна двигаться назад, при отпускании опять двигаться вперёд.
Задание 5.2. Напишите программу управления роботом двумя кнопками (два датчика касания, служащие пультом управления). Машина должна ехать вперёд при нажатии на обе кнопки. Если нажата только правая кнопка, то машина поворачивает направо; если только левая налево. Если кнопки отпущены, то машина останавливается.
Задание 5.3. Используя блок Switch в качестве оператора выбора, напишите программу для исследовательского робота, который перемещается по разноцветному полю и произносит название цвета, над которым проезжает (только основные цвета, для которых в роботе имеется соответствующий звуковой файл). Робот должен остановиться, когда доберётся до красного цвета. Подсказка: вспомните, что все основные цвета закодированы числами 0-5 .
Задание 5.4. Напишите программу, которая позволяет роботу оставаться на заданном расстоянии от подвижной стены. Робот оснащён двумя моторами и датчиком ультразвука, направленным вперёд. Перед роботом размещается подвижная стена (журнал, книга, свёрнутый полигон). Робот должен, постоянно двигаясь, сохранять расстояние до стены ≈ 30 см. Подсказка: вспомните задание 4.4 и пример 4.1 .


