Элементы управления#
Введение#
Блоки управления в VEXcode AIR управляют потоком выполнения проекта, обрабатывая циклы, условия и задерживая выполнение блоков.
Цикл — это когда компьютер повторяет один и тот же шаг или группу шагов снова и снова, пока ему не будет дано указание остановиться. Условие — это правило, которое компьютер проверяет, чтобы решить, что делать дальше. Например, дрон может лететь вперед, когда нажата кнопка на пульте управления.
Ниже приведён список доступных блоков:
wait — Приостанавливает выполнение блоков на определенный период времени.
ждать до — Приостанавливает выполнение блоков до тех пор, пока не будет выполнено указанное условие.
повтор — Повторяет набор блоков определенное количество раз.
навсегда — Повторяет набор блоков бесконечно.
повторять до — Повторяет набор блоков до тех пор, пока не будет выполнено условие.
while — Повторяет набор блоков, пока условие остается истинным.
if — Выполняет набор блоков, если условие истинно.
if / else — Выполняет один набор блоков, если условие истинно, в противном случае — другой.
if / else if / else — Запускает разные наборы блоков в зависимости от нескольких условий.
break — Немедленно выходит из цикла.
остановить проект — Завершает проект.
ждать#
Блок wait в стеке приостанавливает выполнение блоков на определенное время, прежде чем перейти к следующему блоку.
ждать (1) секунд
Параметры |
Описание |
|---|---|
время |
Время ожидания, выраженное в секундах в виде положительного целого числа или десятичной дроби. |
Пример
при запуске
[Fly for 1 second.]
взлететь на (500) [мм v] ▶
ждать [1] секунд
приземлиться ▶
подождите, пока#
Блок wait until в стеке приостанавливает выполнение блоков до тех пор, пока не будет выполнено указанное условие, после чего переходит к следующему блоку.
ждать пока <>
Параметры |
Описание |
|---|---|
состояние |
Условие, которое должно быть выполнено перед переходом к следующему блоку. Если оно оценивается как:
|
Пример
при запуске
[Hover at 200 mm.]
взлететь на [500] [мм v] ▶
набор высоты [вниз v]
ждать пока <(distance [downward v] range in [mm v]) [math_less_than v] [200]>
зависнуть
ждать (3) секунд
приземлиться ▶
повторить#
Блок repeat C выполняет блоки внутри себя заданное количество раз.
повторить [10]
конец
Параметры |
Описание |
|---|---|
времена |
Целое число, определяющее, сколько раз будет выполняться блок повторов. |
Пример
при запуске
[Move back and forth four times then land.]
взлететь на [500] [мм v] ▶
повторить (4)
движение [вперёд v] на (500) [мм v] ▶
ждать (1) секунд
движение [backward v] на (500) [мм v] ▶
ждать (1) секунд
конец
приземлиться ▶
навсегда#
Блок C, работающий бесконечно, продолжает запускать находящиеся внутри него блоки снова и снова без остановки.
вечно
конец
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Move with controller.]
взлететь на [500] [мм v] ▶
вечно
управление контроллером
конец
повторять до тех пор, пока#
Блок C repeat until многократно запускает находящиеся в нем блоки до тех пор, пока не будет выполнено указанное условие.
повторять пока <>
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется перед каждым циклом. Если она ложная, блоки продолжают повторяться. Если она истинная, цикл останавливается. |
Пример
при запуске
[Move with controller until button 7 is pressed.]
взлететь на [500] [мм v] ▶
повторять пока <кнопка контроллера [7 v] нажата?>
управление контроллером
конец
приземлиться ▶
пока#
Блок while на языке C многократно выполняет находящиеся внутри него блоки, пока выполняется указанное условие.
пока <>
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется перед каждым циклом. Если она истинна, блоки продолжают повторяться. Если она ложна, цикл останавливается. |
Пример
при запуске
[Hover at 200 mm.]
взлететь на [500] [мм v] ▶
пока <(distance [downward v] range in [mm v]) [math_greater_than v] [200]>
набор высоты [вниз v]
конец
зависнуть
ждать (3) секунд
приземлиться ▶
если#
Блок if на языке C запускает блоки внутри, если условие истинно.
если <> то
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется при выполнении оператора. Если она истинна, блоки внутри блока if будут выполнены. Если она ложна, блоки пропускаются. |
Пример
при запуске
[Take a picture when button 5 is pressed.]
взлететь на [500] [мм v] ▶
вечно
управление контроллером
если <кнопка контроллера [5 v] нажата?> то
сделать снимок с камеры [вперёд v]
конец
конец
если / иначе#
Блок if / else в языке C определяет, какой набор блоков будет выполняться в зависимости от того, является ли условие истинным или ложным.
если <> то
иначе
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется при выполнении оператора. Если она истинна, будут выполнены блоки внутри блока if. Если она ложна, будут выполнены блоки внутри блока else. |
Пример
при запуске
[Climb when the left joystick is moved up.]
взлететь на [500] [мм v] ▶
вечно
если <(положение оси [1 v] контроллера) [math_greater_than v] [0]> то
набор высоты [вверх v]
иначе
зависнуть
конец
если / иначе если / иначе#
Расширяемый блок C if / else if / else выбирает, какой набор блоков будет выполняться в зависимости от условий:
Функция
ifвыполняет свой блок кода, если условие оценивается какTrue.Оператор else if проверяет дополнительные условия только в том случае, если все предыдущие условия были оценены как ложные. Можно использовать несколько операторов else if.
В противном случае блок кода выполняется только в том случае, если ни одно из предыдущих условий не было оценено как истинное.
если <> то
иначе если <> то
иначе
конец
Параметры |
Описание |
|---|---|
состояние |
Выражение или переменная, которая проверяется при выполнении оператора. Первое условие, которое истинно, запускает этот набор блоков. Если все условия ложны, то будут выполнены блоки внутри блока else. |
Пример
при запуске
[Move the drone up or down based on the position of the joystick.]
взлететь на [500] [мм v] ▶
вечно
если <(положение оси [1 v] контроллера) [math_greater_than v] [0]> то
движение [вперёд v]
иначе если <(положение оси [1 v] контроллера) [math_less_than v] [0]> то
движение [назад v]
иначе
зависнуть
конец
конец
перерыв#
Блок break в стеке немедленно завершает цикл. Этот блок можно использовать внутри блоков repeat, repeat until, while и forever. Break полезен, когда цикл необходимо остановить досрочно в зависимости от события, происходящего во время выполнения проекта, например, нажатия кнопки или обнаружения объекта датчиком.
прервать
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Land when button 5 is pressed.]
взлететь на [500] [мм v] ▶
вечно
управление контроллером
если <кнопка контроллера [5 v] нажата?> то
прервать
конец
конец
приземлиться ▶
остановить проект#
Блок стека stop project завершает выполнение запущенного проекта.
остановить проект :: control cap
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Stop motors after landing.]
взлететь на [500] [мм v] ▶
ждать [1] секунд
приземлиться ▶
остановить проект