Контроль#
Введение#
Блоки управления в VEXcode управляют потоком выполнения проекта, обрабатывая циклы, условия и задерживая выполнение блоков.
Цикл — это когда компьютер повторяет один и тот же шаг или группу шагов снова и снова, пока ему не будет дано указание остановиться. Условие — это правило, которое компьютер проверяет, чтобы решить, что делать дальше. Например, свет может включиться, если манипулятор перемещает объект.
Ниже приведён список доступных блоков:
wait – Приостанавливает выполнение блоков на определенный период времени.
ждать до – Приостанавливает выполнение блоков до тех пор, пока не будет выполнено указанное условие.
повтор – Повторяет набор блоков определенное количество раз.
навсегда – Повторяет набор блоков бесконечно.
повторять до – Повторяет набор блоков до тех пор, пока не будет выполнено условие.
while – Повторяет набор блоков, пока условие остается истинным.
if – Выполняет набор блоков, если условие истинно.
if / else – Выполняет один набор блоков, если условие истинно, в противном случае выполняет другой.
if / else if / else – Запускает разные наборы блоков в зависимости от нескольких условий.
break – Немедленно выходит из цикла repeat, forever, repeat until или while.
остановить проект – Завершает проект.
ждать#
Блок wait в стеке приостанавливает выполнение блоков на определенное время, прежде чем перейти к следующему блоку.
ждать (1) секунд
Параметры |
Описание |
|---|---|
время |
Время ожидания, выраженное в секундах в виде положительного целого числа или десятичной дроби. |
Пример
при запуске
[Move to the left, then the right after one second.]
изменить позицию [рука v] на x:[100] y:[0] z:[0] [мм v] ▶
ждать (1) секунд
изменить позицию [рука v] на x:[-100] y:[0] z:[0] [мм v] ▶
подождите, пока#
Блок wait until в стеке приостанавливает выполнение блоков до тех пор, пока не будет выполнено указанное условие, после чего переходит к следующему блоку.
ждать пока <>
Параметры |
Описание |
|---|---|
состояние |
Условие, которое должно быть выполнено, прежде чем перейти к следующему блоку. |
повторить#
Блок repeat C выполняет блоки внутри себя заданное количество раз.
повторить [10]
конец
Параметры |
Описание |
|---|---|
времена |
Целое число, определяющее, сколько раз будет выполняться блок повтор. |
Пример
при запуске
[Move in a square pattern.]
повторить [4]
изменить позицию [рука v] на x:[2] y:[0] z:[0] [дюймы v] ▶
изменить позицию [рука v] на x:[0] y:[2] z:[0] [дюймы v] ▶
изменить позицию [рука v] на x:[-2] y:[0] z:[0] [дюймы v] ▶
изменить позицию [рука v] на x:[0] y:[2] z:[0] [дюймы v] ▶
конец
навсегда#
Блок C, работающий бесконечно, продолжает запускать находящиеся внутри него блоки снова и снова без остановки.
вечно
конец
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Move in a square path forever.]
вечно
изменить позицию [рука v] на x:[2] y:[0] z:[0] [дюймы v] ▶
изменить позицию [рука v] на x:[0] y:[2] z:[0] [дюймы v] ▶
изменить позицию [рука v] на x:[-2] y:[0] z:[0] [дюймы v] ▶
изменить позицию [рука v] на x:[0] y:[2] z:[0] [дюймы v] ▶
конец
повторять до тех пор, пока#
Блок C repeat until многократно запускает находящиеся в нем блоки до тех пор, пока не будет выполнено указанное условие.
повторять пока <>
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется перед каждым циклом. Если она ложная, блоки продолжают повторяться. Если она истинная, цикл останавливается. |
Пример
при запуске
[Increment along the x-axis until it's no longer possible.]
повторять пока <не <[рука v] изменить позицию на x:[100] y:[0] z:[0] [мм v]?>>
изменить позицию [рука v] на x:[100] y:[0] z:[0] [мм v] ▶
конец
остановить управление [рука v]
пока#
Блок while на языке C многократно выполняет находящиеся внутри него блоки, пока выполняется указанное условие.
пока <>
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется перед каждым циклом. Если она истинна, блоки продолжают повторяться. Если она ложна, цикл останавливается. |
Пример
при запуске
[Display the 6-Axis Arm's position as it moves.]
переместить [рука v] в позицию x:(-100) y:(200) z:(100) [мм v] ◀ и не ждать
пока <не <[рука v] завершил движение?>>
вывести ([рука v] позиция [y v] в [мм v]) в консоль ◀ и перенести курсор на следующую строку
ждать [0.25] секунд
если#
Блок if на языке C запускает блоки внутри, если условие истинно.
если <> то
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется при выполнении оператора. Если она истинна, блоки внутри блока if будут выполнены. Если она ложна, блоки пропускаются. |
Пример
при запуске
[Check if the 6-Axis Arm can move to a position.]
если <не <[рука v] переместить в позицию x:[0] y:[0] z:[0] [мм v]?>> то
вывести [The 6-Axis Arm can't move to this position.] ◀ и перенести курсор на следующую строку
если / иначе#
Блок if / else в языке C определяет, какой набор блоков будет выполняться в зависимости от того, является ли условие истинным или ложным.
если <> то
иначе
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется при выполнении оператора. Если она истинна, будут выполнены блоки внутри блока if. Если она ложна, будут выполнены блоки внутри блока else. |
Пример
при запуске
[Check if the 6-Axis Arm can or can't move to a position.]
если <не <[рука v] переместить в позицию x:[100] y:[100] z:[100] [мм v]?>> то
вывести [The 6-Axis Arm can't move to this position.] в консоль ◀ и перенести курсор на следующую строку
иначе
вывести [The 6-Axis Arm can move to this position.] в консоль ◀ и перенести курсор на следующую строку
если / иначе если / иначе#
Расширяемый блок C if / else if / else выбирает, какой набор блоков будет выполняться в зависимости от условий:
Функция
ifвыполняет свой блок кода, если условие оценивается какTrue.Оператор else if проверяет дополнительные условия только в том случае, если все предыдущие условия были оценены как ложные. Можно использовать несколько операторов else if.
В противном случае блок кода выполняется только в том случае, если ни одно из предыдущих условий не было оценено как истинное.
если <> то
иначе если <> то
иначе
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется при выполнении оператора. Первое условие, которое истинно, запускает этот набор блоков. Если все условия ложны, то будут выполнены блоки внутри блока else. |
Пример
при запуске
[Move until the 6-Axis Arm is at the corner of the tile.]
если <[рука v] изменить позицию на x:[50] y:[0] z:[0] [мм v]?> то
изменить позицию [рука v] на x:[50] y:[0] z:[0] [мм v] ▶
иначе если <[рука v] изменить позицию на x:[0] y:[50] z:[0] [мм v]?> то
изменить позицию [рука v] на x:[0] y:[50] z:[0] [мм v] ▶
иначе
вывести [The 6-Axis Arm has reached the corner.] в консоль ◀ и перенести курсор на следующую строку
перерыв#
Блок break в стеке немедленно завершает цикл. Этот блок можно использовать внутри блоков repeat, repeat until, while и forever. Break полезен, когда цикл необходимо остановить досрочно в зависимости от события, происходящего во время выполнения проекта, например, нажатия кнопки или обнаружения объекта датчиком.
прервать
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
остановить проект#
Блок стека stop project завершает выполнение запущенного проекта.
остановить проект
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |