Ří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 Functions
void wait(
  double time,
  timeUnits units );

Parameters

Parametr

Typ

Popis

time

double

Doba čekání jako kladná double.

units

timeUnits

Jednotka pro vyjádření času: msec (výchozí) – Milisekundy nebo seconds

Return Values

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.

Syntax

1 — Počítací smyčka — proběhne pevně stanovený početkrát.

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

2 — Smyčka založená na rozsahu — spustí se jednou pro každou položku v kolekci.

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

Parameters

Parametr

Typ

Popis

count

int

Počet opakování bloku kódu.

type

Název typu

Datový typ každé položky v kolekci (např. int, double).

element

variable

Název proměnné, která má uchovávat hodnotu aktuálního prvku smyčky.

collection

array

Pole (nebo vektor), které obsahuje položky, které budou procházeny smyčkou.

Return Values

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.

Syntax
if (condition) {
  // code block
}

Parameters

Parametr

Typ

Popis

condition

bool

Výraz nebo proměnná, která se vyhodnotí při spuštění příkazu. Pokud je hodnota true, kód uvnitř bloku if se spustí; pokud je hodnota false, blok se přeskočí.

Return Values

Tato řídicí struktura nevrací hodnotu.

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#

Určuje, který uzavřený blok kódu se spustí na základě toho, zda je podmínka true nebo false.

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

Parameters

Parametr

Typ

Popis

condition

bool

Výraz nebo proměnná, která se vyhodnotí při spuštění příkazu. Pokud je true, spustí se kód uvnitř bloku if ; pokud je false, spustí se kód uvnitř bloku else.

Return Values

Tato řídicí struktura nevrací hodnotu.

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#

Vybere, který uzavřený blok kódu se spustí na základě více podmínek.

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

Parametr

Typ

Popis

condition

bool

Výraz nebo proměnná, která se vyhodnotí při spuštění příkazu. První podmínka, která je true určuje, který blok se spustí; pokud žádná není pravdivá true, spustí se else blok.

Return Values

Tato řídicí struktura nevrací hodnotu.

Notes
  • if spustí svůj blok, pokud je podmínka pravdivá true.

  • else if kontroluje další podmínky pouze tehdy, pokud jsou všechny předchozí podmínky nepravdivé. falseLze použít více příkazů else if.

  • else spustí svůj blok pouze tehdy, pokud není splněna žádná z předchozích podmínek 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#

Opakovaně spouští kód, dokud je podmínka true.

Syntax
while (condition) {
  // code block
}

Parameters

Parametr

Typ

Popis

condition

bool

Výraz nebo proměnná, která se vyhodnocuje před každou iterací. Pokud je true, smyčka pokračuje; pokud je false, smyčka se zastaví.

Return Values

Tato řídicí struktura nevrací hodnotu.

Notes
  • Lze 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.

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#

Okamžitě ukončí aktuální smyčku. Pokud se jedná o vnořenou smyčku, break ukončí nejvnitřnější smyčku.

Syntax
break;

Parameters

Tento příkaz nepřijímá žádné parametry.

Return Values

Tento příkaz nevrací hodnotu.

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#

Okamžitě ukončí projekt.

Syntax
Brain.programStop();

Parameters

Tento příkaz nepřijímá žádné parametry.

Return Values

Tento příkaz nevrací hodnotu.

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