Řízení#
Zavedení#
Řízení zahrnuje funkce pro časování, tok programu, podmíněnou logiku a ukončení projektu. Tyto ovládací prvky umožňují pozastavit provádění, vytvářet smyčky, definovat logické cesty a ukončit program.
Funkce a klíčová slova#
Níže je uveden seznam dostupných ovládacích prvků, včetně funkcí API a klíčových slov C++:
wait– Pozastaví projekt na nastavenou dobu.for– Opakuje blok kódu stanovený počet opakování.if– Spustí blok kódu, pokud je podmínka pravdivá.if/else– Spustí jeden blok kódu, pokud je podmínka pravdivá, nebo jiný blok, pokud je nepravdivá.if/else if/else– Kontroluje více podmínek v pořadí a spustí první blok, jehož podmínka je pravdivá.while– Opakuje blok kódu, dokud je podmínka pravdivá.break– Okamžitě ukončí aktuální smyčku.programStop– Okamžitě ukončí projekt.
wait#
Pozastaví projekt na určitou dobu, než přejde na další řádek kódu.
Available Functionsvoid wait(
double time,
timeUnits units );
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Doba čekání jako kladná |
|
|
Jednotka pro vyjádření času: |
Tato funkce nevrací hodnotu.
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
Opakuje blok kódu. Formulář pro počítání se spustí stanovený počet opakování; formulář založený na rozsahu se spustí jednou pro každou položku v kolekci.
Syntax1 — Počítací smyčka — proběhne pevně stanovený početkrát.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Smyčka založená na rozsahu — spustí se jednou pro každou položku v kolekci.
for (type element : collection) { // code block }
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Počet opakování bloku kódu. |
|
Název typu |
Datový typ každé položky v kolekci (např. |
|
|
Název proměnné, která má uchovávat hodnotu aktuálního prvku smyčky. |
|
|
Pole (nebo vektor), které obsahuje položky, které budou procházeny smyčkou. |
Tato řídicí struktura nevrací hodnotu.
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#
Spustí uzavřený blok kódu, pokud je podmínka true.
if (condition) {
// code block
}
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Výraz nebo proměnná, která se vyhodnotí při spuštění příkazu. Pokud je hodnota |
Tato řídicí struktura nevrací hodnotu.
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#
Určuje, který uzavřený blok kódu se spustí na základě toho, zda je podmínka true nebo false.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Výraz nebo proměnná, která se vyhodnotí při spuštění příkazu. Pokud je |
Tato řídicí struktura nevrací hodnotu.
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
Vybere, který uzavřený blok kódu se spustí na základě více podmínek.
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
}
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Výraz nebo proměnná, která se vyhodnotí při spuštění příkazu. První podmínka, která je |
Tato řídicí struktura nevrací hodnotu.
Notesifspustí svůj blok, pokud je podmínka pravdivátrue.else ifkontroluje další podmínky pouze tehdy, pokud jsou všechny předchozí podmínky nepravdivé.falseLze použít více příkazůelse if.elsespustí svůj blok pouze tehdy, pokud není splněna žádná z předchozích podmínektrue.
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#
Opakovaně spouští kód, dokud je podmínka true.
while (condition) {
// code block
}
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Výraz nebo proměnná, která se vyhodnocuje před každou iterací. Pokud je |
Tato řídicí struktura nevrací hodnotu.
NotesLze ji také použít jako podmínku „Počkejte do“ přidáním
!před podmínku, jak je znázorněno v níže uvedených příkladech.
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#
Okamžitě ukončí aktuální smyčku. Pokud se jedná o vnořenou smyčku, break ukončí nejvnitřnější smyčku.
break;
Tento příkaz nepřijímá žádné parametry.
Return ValuesTento příkaz nevrací hodnotu.
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#
Okamžitě ukončí projekt.
SyntaxBrain.programStop();
Tento příkaz nepřijímá žádné parametry.
Return ValuesTento příkaz nevrací hodnotu.
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();
}
}