Kontrole#

Ievads#

Vadība ietver funkcijas laika noteikšanai, programmas plūsmai, nosacījuma loģikai un projekta pārtraukšanai. Šīs vadības ierīces ļauj apturēt izpildi, izveidot ciklus, definēt loģiskos ceļus un pārtraukt programmu.

Funkcijas un atslēgvārdi#

Zemāk ir pieejamo vadības elementu saraksts, tostarp API funkcijas un C++ atslēgvārdi:

  • wait – Aptur projektu uz noteiktu laiku.

  • for – Atkārto koda bloku noteiktu reižu skaitu.

  • if – Izpilda koda bloku, ja nosacījums ir patiess.

  • if/else – Izpilda vienu koda bloku, ja nosacījums ir patiess, vai citu bloku, ja tas ir nepatiess.

  • if/else if/else – Pārbauda vairākus nosacījumus pēc kārtas un palaiž pirmo bloku, kura nosacījums ir patiess.

  • while – Atkārto koda bloku, kamēr nosacījums paliek spēkā.

  • break – Nekavējoties iziet no pašreizējās cilpas.

  • programStop – Nekavējoties beidz projektu.

wait#

Aptur projektu uz noteiktu laiku, pirms pāriet uz nākamo koda rindu.

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

Parameters

Parametrs

Tips

Apraksts

time

double

Gaidīšanas laiks kā pozitīva double.

units

timeUnits

Laika attēlošanas mērvienība: msec (pēc noklusējuma) – milisekundes vai seconds

Return Values

Šī funkcija neatgriež vērtību.

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

for#

Atkārto koda bloku. Skaitīšanas forma tiek palaista noteiktu reižu skaitu; uz diapazonu balstītā forma tiek palaista vienu reizi katram kolekcijas elementam.

Syntax

1 — Skaitīšanas cikls — darbojas fiksētu reižu skaitu.

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

2 — Uz diapazonu balstīts cikls — tiek palaists vienu reizi katram kolekcijas elementam.

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

Parameters

Parametrs

Tips

Apraksts

count

int

Koda bloka atkārtošanas reižu skaits.

type

Tipa nosaukums

Katra kolekcijas elementa datu tips (piemēram int, double).

element

variable

Mainīgā nosaukums, kurā jāglabā cikla pašreizējā elementa vērtība.

collection

array

Masīvs (vai vektors), kurā ir elementi, kas tiks cikliski apstrādāti.

Return Values

Šī vadības struktūra neatgriež vērtību.

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#

Palaiž pievienoto koda bloku, ja nosacījums ir true.

Syntax
if (condition) {
  // code block
}

Parameters

Parametrs

Tips

Apraksts

condition

bool

Izteiksme vai mainīgais, kas tiek novērtēts, kad izpildās priekšraksts. Ja tas ir true, tiek izpildīts kods blokā if ; ja tas ir false, bloks tiek izlaists.

Return Values

Šī vadības struktūra neatgriež vērtību.

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#

Nosaka, kurš pievienotais koda bloks tiek palaists, pamatojoties uz to, vai nosacījums ir true vai false.

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

Parameters

Parametrs

Tips

Apraksts

condition

bool

Izteiksme vai mainīgais, kas tiek novērtēts, kad izpildās priekšraksts. Ja tas ir true, tiek izpildīts kods blokā if ; ja tas ir false, tā vietā tiek izpildīts kods blokā else.

Return Values

Šī vadības struktūra neatgriež vērtību.

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#

Atlasa, kurš iekļautais koda bloks tiks palaists, pamatojoties uz vairākiem nosacījumiem.

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

Parametrs

Tips

Apraksts

condition

bool

Izteiksme vai mainīgais, kas tiek novērtēts, kad izpilda priekšrakstu. Pirmais nosacījums, kas ir true nosaka, kurš bloks tiks izpildīts; ja neviens nav true true, tad tiks izpildīts bloks, kas ir else.

Return Values

Šī vadības struktūra neatgriež vērtību.

Notes
  • if palaiž savu bloku, ja nosacījums true.

  • else if pārbauda papildu nosacījumus tikai tad, ja visi iepriekšējie nosacījumi ir else ifVar izmantot vairākus false apgalvojumus.

  • else palaiž savu bloku tikai tad, ja neviens no iepriekšējiem nosacījumiem nav patiess 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#

Atkārtoti palaiž kodu, kamēr nosacījums ir true.

Syntax
while (condition) {
  // code block
}

Parameters

Parametrs

Tips

Apraksts

condition

bool

Izteiksme vai mainīgais, kas tiek novērtēts pirms katras iterācijas. Ja tas ir true, cikls turpinās; ja tas ir false, cikls apstājas.

Return Values

Šī vadības struktūra neatgriež vērtību.

Notes
  • To var izmantot arī kā “Gaidīt līdz”, pievienojot nosacījuma priekšā ! , kā parādīts tālāk sniegtajos piemēros.

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#

Nekavējoties iziet no pašreizējās cilpas. Ja ligzdotā cilpā, break iziet no iekšējās cilpas.

Syntax
break;

Parameters

Šis paziņojums nepieņem nekādus parametrus.

Return Values

Šis paziņojums neatgriež vērtību.

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#

Nekavējoties beidz projektu.

Syntax
Brain.programStop();

Parameters

Šis paziņojums nepieņem nekādus parametrus.

Return Values

Šis paziņojums neatgriež vērtību.

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