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 Functionsvoid wait(
double time,
timeUnits units );
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Czas oczekiwania, jako dodatnie |
|
|
Jednostka reprezentująca czas: |
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.
Syntax1 — Pętla zliczająca — wykonuje się ustaloną liczbę razy.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Pętla oparta na zakresie — uruchamia się raz dla każdego elementu w kolekcji.
for (type element : collection) { // code block }
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Liczba powtórzeń bloku kodu. |
|
Wpisz nazwę |
Typ danych każdego elementu w kolekcji (np. |
|
|
Nazwa zmiennej przechowującej wartość bieżącego elementu pętli. |
|
|
Tablica (lub wektor) zawierająca elementy, które będą przeglądane w pętli. |
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.
if (condition) {
// code block
}
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Wyrażenie lub zmienna, która jest oceniana podczas wykonywania instrukcji. Jeśli wartość wynosi |
Ta struktura kontrolna nie zwraca wartości.
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#
Określa, który zamknięty blok kodu zostanie uruchomiony na podstawie tego, czy warunek ma wartość true lub false.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Wyrażenie lub zmienna, która jest oceniana podczas wykonywania instrukcji. Jeśli jest to |
Ta struktura kontrolna nie zwraca wartości.
Exampleswhile (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.
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 |
Opis |
|---|---|---|
|
|
Wyrażenie lub zmienna, która jest oceniana podczas wykonywania instrukcji. Pierwszy warunek, który wynosi |
Ta struktura kontrolna nie zwraca wartości.
Notesifuruchamia swój blok, jeśli warunek jesttrue.else ifsprawdza dodatkowe warunki tylko wtedy, gdy wszystkie poprzednie warunki są fałszyweelse if. Można użyć wielu instrukcji else iffalse.elseuruchamia blok tylko wtedy, gdy żaden z poprzednich warunków nie jesttrue.
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.
while (condition) {
// code block
}
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Wyrażenie lub zmienna, która jest oceniana przed każdą iteracją. Jeśli wynosi |
Ta struktura kontrolna nie zwraca wartości.
NotesMożna go również stosować jak instrukcję „Wait until” (Czekaj, aż) poprzez dodanie
!przed warunkiem, jak pokazano w poniższych przykładach.
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.
break;
To oświadczenie nie przyjmuje żadnych parametrów.
Return ValuesTo polecenie nie zwraca wartości.
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#
Natychmiast kończy projekt.
SyntaxBrain.programStop();
To oświadczenie nie przyjmuje żadnych parametrów.
Return ValuesTo polecenie nie zwraca wartości.
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();
}
}