Kontrolle#
Einführung#
Die Steuerung umfasst Funktionen für Zeitsteuerung, Programmablauf, bedingte Logik und Projektbeendigung. Mit diesen Steuerelementen können Sie die Ausführung anhalten, Schleifen erstellen, Logikpfade definieren und ein Programm beenden.
Funktionen und Schlüsselwörter#
Nachfolgend finden Sie eine Liste der verfügbaren Steuerelemente, einschließlich API-Funktionen und C+±Schlüsselwörter:
wait– Unterbricht das Projekt für eine festgelegte Zeitspanne.for– Wiederholt einen Codeblock eine festgelegte Anzahl Male.if– Führt einen Codeblock aus, wenn eine Bedingung wahr ist.if/else– Führt einen Codeblock aus, wenn eine Bedingung wahr ist, oder einen anderen Block, wenn sie falsch ist.if/else if/else– Überprüft mehrere Bedingungen der Reihe nach und führt den ersten Block aus, dessen Bedingung wahr ist.while– Wiederholt einen Codeblock, solange eine Bedingung wahr bleibt.break– Verlässt die aktuelle Schleife sofort.programStop– Beendet das Projekt sofort.
wait#
Das Projekt wird für eine bestimmte Zeitspanne pausiert, bevor mit der nächsten Codezeile fortgefahren wird.
Available Functionsvoid wait(
double time,
timeUnits units );
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Die Wartezeit, als positive |
|
|
Die Zeiteinheit: |
Diese Funktion gibt keinen Wert zurück.
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
Wiederholt einen Codeblock. Die Zählform wird eine festgelegte Anzahl Male ausgeführt; die bereichsbasierte Form wird einmal für jedes Element in einer Sammlung ausgeführt.
Syntax1 — Zählschleife — wird eine festgelegte Anzahl von Malen ausgeführt.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Bereichsbasierte Schleife — wird einmal für jedes Element in einer Sammlung ausgeführt.
for (type element : collection) { // code block }
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Die Anzahl der Wiederholungen des Codeblocks. |
|
Typname |
Der Datentyp jedes Elements in der Sammlung (z. B. |
|
|
Der Name der Variablen, die den Wert des aktuellen Schleifenelements speichert. |
|
|
Das Array (oder der Vektor), das die Elemente enthält, die durchlaufen werden. |
Diese Kontrollstruktur gibt keinen Wert zurück.
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#
Führt den eingeschlossenen Codeblock aus, wenn die Bedingung true ist.
if (condition) {
// code block
}
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Ein Ausdruck oder eine Variable, die bei der Ausführung der Anweisung ausgewertet wird. Ist sie wahr |
Diese Kontrollstruktur gibt keinen Wert zurück.
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#
Bestimmt, welcher eingeschlossene Codeblock ausgeführt wird, je nachdem, ob die Bedingung true oder false ist.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Ein Ausdruck oder eine Variable, die bei der Ausführung der Anweisung ausgewertet wird. Ist sie wahr |
Diese Kontrollstruktur gibt keinen Wert zurück.
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
Wählt anhand mehrerer Bedingungen aus, welcher eingeschlossene Codeblock ausgeführt wird.
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
}
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Ein Ausdruck oder eine Variable, die bei der Ausführung der Anweisung ausgewertet wird. Die erste Bedingung, die wahr ist |
Diese Kontrollstruktur gibt keinen Wert zurück.
Notesifseinen Block ausführt, wenn die Bedingung wahr isttrue.else ifprüft zusätzliche Bedingungen nur dann, wenn alle vorherigen Bedingungen falsch sind.false. Es können mehrereelse ifAnweisungen verwendet werden.elseführt seinen Block nur dann aus, wenn keine der vorherigen Bedingungentrueist.
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#
Der Code wird so lange wiederholt ausgeführt, wie die Bedingung true ist.
while (condition) {
// code block
}
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Ein Ausdruck oder eine Variable, die vor jeder Iteration ausgewertet wird. Ist sie |
Diese Kontrollstruktur gibt keinen Wert zurück.
NotesEs kann auch wie ein „Warte bis“ verwendet werden, indem man
!vor die Bedingung setzt, wie in den folgenden Beispielen gezeigt.
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#
Exits the current loop immediately. If in a nested loop, break exits the innermost loop.
break;
Diese Anweisung akzeptiert keine Parameter.
Return ValuesDiese Anweisung gibt keinen Wert zurück.
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#
Beendet ein Projekt sofort.
SyntaxBrain.programStop();
Diese Anweisung akzeptiert keine Parameter.
Return ValuesDiese Anweisung gibt keinen Wert zurück.
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();
}
}