Контроль#

Введение#

Блоки управления в VEXcode VR управляют потоком выполнения проекта, обрабатывая циклы, условия и задерживая выполнение блоков.

Цикл — это когда компьютер повторяет один и тот же шаг или группу шагов снова и снова, пока ему не будет дано указание остановиться. Условие — это правило, которое компьютер проверяет, чтобы решить, что делать дальше. Например, робот может двигаться вперед, если датчик обнаружит объект.

Ниже приведён список доступных блоков:

  • wait – Приостанавливает выполнение блоков на определенный период времени.

  • ждать до – Приостанавливает выполнение блоков до тех пор, пока не будет выполнено указанное условие.

  • повтор – Повторяет набор блоков определенное количество раз.

  • навсегда – Повторяет набор блоков бесконечно.

  • повторять до – Повторяет набор блоков до тех пор, пока не будет выполнено условие.

  • while – Повторяет набор блоков, пока условие остается истинным.

  • if – Выполняет набор блоков, если условие истинно.

  • if / else – Выполняет один набор блоков, если условие истинно, в противном случае выполняет другой.

  • if / else if / else – Запускает разные наборы блоков в зависимости от нескольких условий.

  • break – Немедленно выходит из цикла repeat, forever, repeat until или while.

  • остановить проект – Завершает проект.

ждать#

Блок wait в стеке приостанавливает выполнение блоков на определенное время, прежде чем перейти к следующему блоку.

блок ожидания стека#
ждать (1) секунд

Параметры

Описание

время

Время ожидания, выраженное в секундах в виде положительного целого числа или десятичной дроби.

Пример

После запуска двигатель движется вперед в течение одной секунды, затем полностью останавливается.#
при запуске :: hat events
[Move forward for one second, then stop.]
движение [вперёд v]
ждать (1) секунд
остановить движение

подождите, пока#

Блок wait until в стеке приостанавливает выполнение блоков до тех пор, пока не будет выполнено указанное условие, после чего переходит к следующему блоку.

дождаться завершения работы стека#
ждать пока <>

Параметры

Описание

состояние

Условие, которое должно быть выполнено, прежде чем перейти к следующему блоку.

Пример

При запуске движение продолжается до нажатия на экран, после чего прекращается.#
при запуске :: hat events
[Move forward until a button is pressed, then stop.]
движение [вперёд v]
ждать пока <[LeftBumper v] нажат?>
остановить движение

повторить#

Блок repeat C выполняет блоки внутри себя заданное количество раз.

повторить блок c#
повторить [10]
конец

Параметры

Описание

времена

Целое число, определяющее, сколько раз будет выполняться блок повторов.

Пример

при запуске :: hat events
[Move in a square path.]
повторить [4]
движение [вперёд v] на [150] [мм v] ▶
поворот [вправо v] на [90] градусов ▶
конец

навсегда#

Блок C, работающий бесконечно, продолжает запускать находящиеся внутри него блоки снова и снова без остановки.

навсегда блок С#
вечно
конец

Параметры

Описание

Этот блок не имеет параметров.

Пример

В начале движения устройство непрерывно перемещается по квадратной траектории, продвигаясь вперед на 50 мм и поворачиваясь вправо на 90 градусов в бесконечном цикле.#
при запуске :: hat events
[Move in a square path forever.]
вечно
движение [вперёд v] на [150] [мм v] ▶
поворот [вправо v] на [90] градусов ▶
конец

повторять до тех пор, пока#

Блок C repeat until многократно запускает находящиеся в нем блоки до тех пор, пока не будет выполнено указанное условие.

повторять до тех пор, пока не образуется блок#
повторять пока <>
конец

Параметры

Описание

состояние

Выражение или переменная, которая проверяется перед каждым циклом. Если она ложная, блоки продолжают повторяться. Если она истинная, цикл останавливается.

Пример

При запуске все светодиоды остаются красными до нажатия на экран, после чего выключаются.#
при запуске :: hat events
[Move the pen until the bumper is pressed.]
движение [вперёд v]
повторять пока <[LeftBumper v] нажат?>
переместить перо [вниз v]
ждать (0.5) секунд
переместить перо [вверх v]
ждать (0.5) секунд
конец
ждать (0.5) секунд
остановить движение

пока#

Блок while на языке C многократно выполняет находящиеся внутри него блоки, пока выполняется указанное условие.

пока блок c#
пока <>
конец

Параметры

Описание

состояние

Выражение или переменная, которая проверяется перед каждым циклом. Если она истинна, блоки продолжают повторяться. Если она ложна, цикл останавливается.

Пример

При запуске устройство перемещается вперед на 200 мм, при этом все светодиоды остаются зелеными. Светодиоды гаснут после остановки движения.#
при запуске :: hat events
[Display a message while moving.]
движение [вперёд v] на [300] [мм v] ◀ и не ждать
пока <движение активно?>
вывести [Moving...] ▶
ждать (0.1) секунд
очистить все строки
конец
вывести [Done!] ▶

если#

Блок if на языке C запускает блоки внутри, если условие истинно.

блок если#
если <> то
конец

Параметры

Описание

состояние

Выражение или переменная, которая проверяется при выполнении оператора. Если она истинна, блоки внутри блока if будут выполнены. Если она ложна, блоки пропускаются.

Пример

При запуске робот постоянно проверяет, нажата ли кнопка на экране. Если нажата, робот с силой пинает объект.#
при запуске :: hat events
[Turn in a circle if the bumper is pressed.]
движение [вперёд v]
вечно
если <[LeftBumper v] нажат?> то
движение [назад v] на (200) [мм v] ▶
поворот [вправо v] на (360) градусов ▶
конец
остановить движение
конец

если / иначе#

Блок if / else в языке C определяет, какой набор блоков будет выполняться в зависимости от того, является ли условие истинным или ложным.

если тогда иначе блок#
если <> то
иначе
конец

Параметры

Описание

состояние

Выражение или переменная, которая проверяется при выполнении оператора. Если она истинна, будут выполнены блоки внутри блока if. Если она ложна, будут выполнены блоки внутри блока else.

Пример

При запуске постоянно проверяется, нажата ли кнопка на экране. Если нажата, отображается эмодзи с восторженным взглядом, смотрящим вперед; в противном случае — эмодзи со скучающим взглядом, смотрящим вперед.#
при запуске :: hat events
[If bumper pressed, reverse and turn right.]
вечно
если <[LeftBumper v] нажат?> то
движение [назад v] на (100) [мм v] ▶
поворот [вправо v] на (90) градусов ▶
иначе
движение [вперёд v]
конец

если / иначе если / иначе#

Расширяемый блок C if / else if / else выбирает, какой набор блоков будет выполняться в зависимости от условий:

  • Функция if выполняет свой блок кода, если условие оценивается как True.

  • Оператор else if проверяет дополнительные условия только в том случае, если все предыдущие условия были оценены как ложные. Можно использовать несколько операторов else if.

  • В противном случае блок кода выполняется только в том случае, если ни одно из предыдущих условий не было оценено как истинное.

блок if else if else#
если <> то
иначе если <> то
иначе
конец

Параметры

Описание

состояние

Выражение или переменная, которая проверяется при выполнении оператора. Первое условие, которое истинно, запускает этот набор блоков. Если все условия ложны, то будут выполнены блоки внутри блока else.

Пример

При изменении положения оси 1 контроллера, при нажатии вперед, при нажатии назад, движение происходит в обратном направлении, а в нейтральном положении контроллер останавливается.#
при запуске :: hat events
[Turn right if the an Eye Sensor detects red, left if it detects green, and continue driving if anything else.]
вечно
если <[FrontEye v] определяет [красный v]?> то
поворот [вправо v] на (90) градусов ▶
иначе если <[FrontEye v] определяет [зелёный v]?> то
поворот [влево v] на (90) градусов ▶
иначе
движение [вперёд v]
конец
конец

перерыв#

Блок break в стеке немедленно завершает цикл. Этот блок можно использовать внутри блоков repeat, repeat until, while и forever. Break полезен, когда цикл необходимо остановить досрочно на основании какого-либо события, происходящего во время выполнения проекта, например, нажатия кнопки или обнаружения объекта датчиком.

разорвать блок стека#
прервать

Параметры

Описание

Этот блок не имеет параметров.

Пример

При запуске светодиоды мигают красным и зеленым цветом каждые 0,5 секунды до нажатия на экран, после чего мигание прекращается.#
при запуске :: hat events
[Stop turning after a button is pressed.]
вечно
движение [вперёд v]
если <[LeftBumper v] нажат?> то
прервать
конец
конец
остановить движение

остановить проект#

Блок стека stop project завершает выполнение запущенного проекта.

остановить проект блок#
остановить проект

Параметры

Описание

Этот блок не имеет параметров.

Пример

При запуске светодиоды мигают красным и зеленым цветом каждые 0,5 секунды, пока не будет нажата кнопка на экране, после чего проект останавливается.#
при запуске :: hat events
[Stop the project entirely after a button is pressed.]
вечно
движение [вперёд v]
если <[LeftBumper v] нажат?> то
остановить проект
конец
конец