КОНТРОЛЬ#

Вступ#

Елементи керування включають функції для визначення часу, виконання програми, умовної логіки та завершення проекту. Ці елементи керування дозволяють призупиняти виконання, створювати цикли, визначати логічні шляхи та завершувати програму.

Функції та ключові слова#

Нижче наведено список доступних елементів керування, включаючи функції 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

Вираз або змінна, яка обчислюється під час виконання оператора. Якщо вона дорівнює true, виконується код у блоці if ; якщо вона дорівнює false, виконується код у блоці else.

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();
  }
}