Контроль#

Введение#

В состав системы управления входят функции для управления временем выполнения, потоком выполнения программы, условной логикой и завершением проекта. Эти элементы управления позволяют приостанавливать выполнение, создавать циклы, определять логические пути и завершать программу.

Функции и ключевые слова#

Ниже приведён список доступных элементов управления, включая функции API и ключевые слова C++:

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

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

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

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

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

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

  • break – Немедленно выходит из текущего цикла.

  • programStop – Немедленно завершает проект.

wait#

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

Available Functions
void wait(
  double time,
  timeUnits units );

Parameters

Параметр

Тип

Описание

time

double

Время ожидания, выраженное в виде положительного значения double.

units

timeUnits

Единица измерения времени: msec (по умолчанию) – миллисекунды или seconds

Return Values

Эта функция не возвращает значения.

Examples
// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();

for#

Повторяет блок кода. Форма подсчета выполняется заданное количество раз; форма на основе диапазона выполняется один раз для каждого элемента в коллекции.

Syntax

1 — Цикл подсчета — выполняется фиксированное количество раз.

for (int i = 0; i < count; i++) {
   // code block
}

2 — Цикл на основе диапазона — выполняется один раз для каждого элемента в коллекции.

for (type element : collection) {
   // code block
}

Parameters

Параметр

Тип

Описание

count

int

Количество повторений блока кода.

type

Тип Имя

Тип данных каждого элемента в коллекции (например int, double).

element

variable

Имя переменной, которая будет хранить значение текущего элемента цикла.

collection

array

Массив (или вектор), содержащий элементы, которые будут перебираться в цикле.

Return Values

Данная структура управления не возвращает значения.

Examples
// Drive in a square
for (int i = 0; i < 4; i++) {
  Drivetrain.driveFor(forward, 100, mm);
  Drivetrain.turnFor(right, 90, degrees);
}

// Drive forward different distances
int distances[] = {100, 150, 200};
for (int d : distances) {
  Drivetrain.driveFor(forward, d, mm);
  wait(0.5, seconds);
}

if#

Выполняется прилагаемый блок кода, если условие равно true.

Syntax
if (condition) {
  // code block
}

Parameters

Параметр

Тип

Описание

condition

bool

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

Return Values

Данная структура управления не возвращает значения.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Display a message once the screen is pressed
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Screen pressed!");
    break;
  }
  wait(5, msec);
}

if/else#

Определяет, какой из заключенных в скобки блоков кода будет выполнен в зависимости от того, является ли условие true или false.

Syntax
if (condition) {
  // code block if true
}
else {
  // code block if false
}

Parameters

Параметр

Тип

Описание

condition

bool

An expression or variable that is evaluated when the statement runs. If it is true, the code inside the if block runs; if it is false, the code inside the else block runs instead.

Return Values

Данная структура управления не возвращает значения.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Turn the screen green when pressed
    Brain.Screen.clearScreen(green);
  } else {
    Brain.Screen.clearScreen();
  }
}

if/else if/else#

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

Syntax
if (condition) {
  // code block if first condition is true
}
else if (condition) {
  // code block if second condition is true
}
else {
  // code block if no conditions are true
}

Parameters

Параметр

Тип

Описание

condition

bool

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

Return Values

Данная структура управления не возвращает значения.

Notes
  • if выполняет свой блок, если условие истинно, true.

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

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

Examples
while (true) {
  // Turn screen blue if pressed on the left half
  if (Brain.Screen.pressing() && Brain.Screen.xPosition() < 240) {
    Brain.Screen.clearScreen(blue);

  // Turn screen green if pressed on the right half
  } else if (Brain.Screen.pressing() && Brain.Screen.xPosition() > 240) {
    Brain.Screen.clearScreen(green);

  } else {
    Brain.Screen.clearScreen();
  }

  wait(20, msec);
}

while#

Код выполняется многократно, пока условие равно true.

Syntax
while (condition) {
  // code block
}

Parameters

Параметр

Тип

Описание

condition

bool

Выражение или переменная, которая вычисляется перед каждой итерацией. Если она равна trueзначение), цикл продолжается; если она равна false, цикл останавливается.

Return Values

Данная структура управления не возвращает значения.

Notes
  • Его также можно использовать как оператор «Ждать до», добавив ! перед условием, как показано в примерах ниже.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Turn the screen green whenever it's pressed
    Brain.Screen.clearScreen(green);
  } else {
    Brain.Screen.clearScreen();
  }
}

// Wait until the screen is pressed to turn it green
while (!Brain.Screen.pressing()) {
  wait(20, msec);
}

Brain.Screen.clearScreen(green);

break#

Выход из текущего цикла происходит немедленно. Если цикл вложенный, break — выход из самого внутреннего цикла.

Syntax
break;

Parameters

Данное выражение не принимает никаких параметров.

Return Values

Данное выражение не возвращает значения.

Examples
while (true) {

  // Press the screen to pause on a color
  Brain.Screen.clearScreen(red);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    break;
  }

  Brain.Screen.clearScreen(green);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    break;
  }
}

programStop#

Немедленно завершает проект.

Syntax
Brain.programStop();

Parameters

Данное выражение не принимает никаких параметров.

Return Values

Данное выражение не возвращает значения.

Examples
while (true) {

  // Press the screen to end the project
  Brain.Screen.clearScreen(red);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    Brain.programStop();
  }

  Brain.Screen.clearScreen(green);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    Brain.programStop();
  }
}