КОНТРОЛЬ#
Вступ#
Елементи керування включають функції для визначення часу, виконання програми, умовної логіки та завершення проекту. Ці елементи керування дозволяють призупиняти виконання, створювати цикли, визначати логічні шляхи та завершувати програму.
Функції та ключові слова#
Нижче наведено список доступних елементів керування, включаючи функції API та ключові слова C++:
wait– Призупиняє проєкт на встановлений час.for– Повторює блок коду задану кількість разів.if– Виконує блок коду, якщо умова істинна.if/else– Виконує один блок коду, якщо умова істинна, або інший блок, якщо вона хибна.if/else if/else– Перевіряє кілька умов по порядку та запускає перший блок, умова якого істинна.while– Повторює блок коду, поки умова залишається істинною.break– Негайно виходить з поточного циклу.programStop– Негайно завершує проєкт.
wait#
Призупиняє проєкт на певний час перед переходом до наступного рядка коду.
Available Functionsvoid wait(
double time,
timeUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Кількість часу очікування у вигляді додатного числа |
|
|
Одиниця вимірювання часу: |
Ця функція не повертає значення.
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
Повторює блок коду. Форма підрахунку виконується задану кількість разів; форма на основі діапазону виконується один раз для кожного елемента в колекції.
Syntax1 — Цикл підрахунку — виконується фіксовану кількість разів.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Цикл на основі діапазону — виконується один раз для кожного елемента колекції.
for (type element : collection) { // code block }
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Кількість разів, коли буде повторено блок коду. |
|
Назва типу |
Тип даних кожного елемента в колекції (наприклад |
|
|
Ім’я змінної, яка зберігатиме значення поточного елемента циклу. |
|
|
Масив (або вектор), що містить елементи, які будуть перебиратися циклом. |
Ця структура керування не повертає значення.
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.
if (condition) {
// code block
}
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вираз або змінна, яка обчислюється під час виконання оператора. Якщо значення дорівнює |
Ця структура керування не повертає значення.
Exampleswhile (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.
if (condition) {
// code block if true
}
else {
// code block if false
}
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вираз або змінна, яка обчислюється під час виконання оператора. Якщо вона дорівнює |
Ця структура керування не повертає значення.
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
Вибирає, який замкнутий блок коду виконуватиметься на основі кількох умов.
Syntaxif (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
}
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вираз або змінна, яка обчислюється під час виконання оператора. Перша умова, що дорівнює |
Ця структура керування не повертає значення.
Notesifвиконує свій блок, якщо умова істинна;true.else ifперевіряє додаткові умови, лише якщо всі попередні умови хибні.falseМожна використовувати кілька операторівelse if.elseзапускає свій блок, лише якщо жодна з попередніх умов не виконуєтьсяtrue.
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.
while (condition) {
// code block
}
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вираз або змінна, яка обчислюється перед кожною ітерацією. Якщо вона дорівнює |
Ця структура керування не повертає значення.
NotesЙого також можна використовувати як умову “Зачекати до”, додавши
!перед умовою, як показано в прикладах нижче.
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 виходить з найглибшого циклу.
break;
Цей оператор не приймає жодних параметрів.
Return ValuesЦей оператор не повертає значення.
Exampleswhile (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#
Негайно завершує проєкт.
SyntaxBrain.programStop();
Цей оператор не приймає жодних параметрів.
Return ValuesЦей оператор не повертає значення.
Exampleswhile (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();
}
}