Kontrola#

Wstęp#

Kontrola obejmuje funkcje pomiaru czasu, przepływu programu, logiki warunkowej i kończenia projektu. Kontrole te umożliwiają wstrzymywanie wykonywania, tworzenie pętli, definiowanie ścieżek logicznych i kończenie programu.

Funkcje i słowa kluczowe#

Poniżej znajduje się lista dostępnych kontrolek, obejmująca funkcje API i słowa kluczowe C++:

  • wait – Wstrzymuje projekt na określony czas.

  • for – Powtarza blok kodu ustaloną liczbę razy.

  • if – uruchamia blok kodu, jeśli warunek jest spełniony.

  • if/else – Uruchamia jeden blok kodu, jeśli warunek jest prawdziwy, lub inny blok, jeśli jest fałszywy.

  • if/else if/else – Sprawdza kolejno wiele warunków i uruchamia pierwszy blok, którego warunek jest prawdziwy.

  • while – Powtarza blok kodu, dopóki warunek pozostaje prawdziwy.

  • break – Natychmiast opuszcza bieżącą pętlę.

  • programStop – Natychmiast kończy projekt.

wait#

Wstrzymuje projekt na określony czas przed przejściem do następnej linii kodu.

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

Parameters

Parametr

Typ

Opis

time

double

Czas oczekiwania, jako dodatnie double.

units

timeUnits

Jednostka reprezentująca czas: msec (domyślnie) – milisekundy lub seconds

Return Values

Ta funkcja nie zwraca wartości.

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

for#

Powtarza blok kodu. Formularz zliczający uruchamia się określoną liczbę razy; formularz oparty na zakresie uruchamia się raz dla każdego elementu w kolekcji.

Syntax

1 — Pętla zliczająca — wykonuje się ustaloną liczbę razy.

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

2 — Pętla oparta na zakresie — uruchamia się raz dla każdego elementu w kolekcji.

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

Parameters

Parametr

Typ

Opis

count

int

Liczba powtórzeń bloku kodu.

type

Wpisz nazwę

Typ danych każdego elementu w kolekcji (np. int, double).

element

variable

Nazwa zmiennej przechowującej wartość bieżącego elementu pętli.

collection

array

Tablica (lub wektor) zawierająca elementy, które będą przeglądane w pętli.

Return Values

Ta struktura kontrolna nie zwraca wartości.

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#

Uruchamia załączony blok kodu, jeśli warunek jest równy true.

Syntax
if (condition) {
  // code block
}

Parameters

Parametr

Typ

Opis

condition

bool

Wyrażenie lub zmienna, która jest oceniana podczas wykonywania instrukcji. Jeśli wartość wynosi true, kod wewnątrz bloku if jest wykonywany; jeśli wartość wynosi false, blok jest pomijany.

Return Values

Ta struktura kontrolna nie zwraca wartości.

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#

Określa, który zamknięty blok kodu zostanie uruchomiony na podstawie tego, czy warunek ma wartość true lub false.

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

Parameters

Parametr

Typ

Opis

condition

bool

Wyrażenie lub zmienna, która jest oceniana podczas wykonywania instrukcji. Jeśli jest to true, wykonywany jest kod wewnątrz bloku if ; jeśli jest to false, zamiast tego wykonywany jest kod wewnątrz bloku else.

Return Values

Ta struktura kontrolna nie zwraca wartości.

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#

Wybiera, który zamknięty blok kodu zostanie uruchomiony na podstawie wielu warunków.

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

Opis

condition

bool

Wyrażenie lub zmienna, która jest oceniana podczas wykonywania instrukcji. Pierwszy warunek, który wynosi true określa, który blok zostanie uruchomiony; jeśli żaden z nich nie ma wartości true, uruchamiany jest blok else.

Return Values

Ta struktura kontrolna nie zwraca wartości.

Notes
  • if uruchamia swój blok, jeśli warunek jest true.

  • else if sprawdza dodatkowe warunki tylko wtedy, gdy wszystkie poprzednie warunki są fałszywe else if. Można użyć wielu instrukcji else if false.

  • else uruchamia blok tylko wtedy, gdy żaden z poprzednich warunków nie jest 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#

Powtarza uruchamianie kodu tak długo, jak warunek wynosi true.

Syntax
while (condition) {
  // code block
}

Parameters

Parametr

Typ

Opis

condition

bool

Wyrażenie lub zmienna, która jest oceniana przed każdą iteracją. Jeśli wynosi true, pętla jest kontynuowana; jeśli wynosi false, pętla się zatrzymuje.

Return Values

Ta struktura kontrolna nie zwraca wartości.

Notes
  • Można go również stosować jak instrukcję „Wait until” (Czekaj, aż) poprzez dodanie ! przed warunkiem, jak pokazano w poniższych przykładach.

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#

Natychmiast opuszcza bieżącą pętlę. W przypadku pętli zagnieżdżonej, break powoduje wyjście z pętli najbardziej wewnętrznej.

Syntax
break;

Parameters

To oświadczenie nie przyjmuje żadnych parametrów.

Return Values

To polecenie nie zwraca wartości.

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#

Natychmiast kończy projekt.

Syntax
Brain.programStop();

Parameters

To oświadczenie nie przyjmuje żadnych parametrów.

Return Values

To polecenie nie zwraca wartości.

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