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

Parameters

Parameter

Typ

Beschreibung

time

double

Die Wartezeit, als positive double.

units

timeUnits

Die Zeiteinheit: msec (Standard) – Millisekunden oder seconds

Return Values

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.

Syntax

1 — Zählschleife — wird eine festgelegte Anzahl von Malen ausgeführt.

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

2 — Bereichsbasierte Schleife — wird einmal für jedes Element in einer Sammlung ausgeführt.

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

Parameters

Parameter

Typ

Beschreibung

count

int

Die Anzahl der Wiederholungen des Codeblocks.

type

Typname

Der Datentyp jedes Elements in der Sammlung (z. B. int, double).

element

variable

Der Name der Variablen, die den Wert des aktuellen Schleifenelements speichert.

collection

array

Das Array (oder der Vektor), das die Elemente enthält, die durchlaufen werden.

Return Values

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.

Syntax
if (condition) {
  // code block
}

Parameters

Parameter

Typ

Beschreibung

condition

bool

Ein Ausdruck oder eine Variable, die bei der Ausführung der Anweisung ausgewertet wird. Ist sie wahr true, wird der Code im if Block ausgeführt; ist sie falsch false, wird der Block übersprungen.

Return Values

Diese Kontrollstruktur gibt keinen Wert zurück.

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#

Bestimmt, welcher eingeschlossene Codeblock ausgeführt wird, je nachdem, ob die Bedingung true oder false ist.

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

Parameters

Parameter

Typ

Beschreibung

condition

bool

Ein Ausdruck oder eine Variable, die bei der Ausführung der Anweisung ausgewertet wird. Ist sie wahr true, wird der Code im if Block ausgeführt; ist sie falsch ( false, wird stattdessen der Code im else Block ausgeführt.

Return Values

Diese Kontrollstruktur gibt keinen Wert zurück.

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#

Wählt anhand mehrerer Bedingungen aus, welcher eingeschlossene Codeblock ausgeführt wird.

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

Parameter

Typ

Beschreibung

condition

bool

Ein Ausdruck oder eine Variable, die bei der Ausführung der Anweisung ausgewertet wird. Die erste Bedingung, die wahr ist true , bestimmt, welcher Block ausgeführt wird; wenn keine der Bedingungen wahr ist true, wird der Block „sonst“ ( else ausgeführt.

Return Values

Diese Kontrollstruktur gibt keinen Wert zurück.

Notes
  • if seinen Block ausführt, wenn die Bedingung wahr ist true.

  • else if prüft zusätzliche Bedingungen nur dann, wenn alle vorherigen Bedingungen falsch sind. false. Es können mehrere else if Anweisungen verwendet werden.

  • else führt seinen Block nur dann aus, wenn keine der vorherigen Bedingungen true ist.

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#

Der Code wird so lange wiederholt ausgeführt, wie die Bedingung true ist.

Syntax
while (condition) {
  // code block
}

Parameters

Parameter

Typ

Beschreibung

condition

bool

Ein Ausdruck oder eine Variable, die vor jeder Iteration ausgewertet wird. Ist sie truefalsch), wird die Schleife fortgesetzt; ist sie falsefalsch), wird die Schleife beendet.

Return Values

Diese Kontrollstruktur gibt keinen Wert zurück.

Notes
  • Es kann auch wie ein „Warte bis“ verwendet werden, indem man ! vor die Bedingung setzt, wie in den folgenden Beispielen gezeigt.

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#

Exits the current loop immediately. If in a nested loop, break exits the innermost loop.

Syntax
break;

Parameters

Diese Anweisung akzeptiert keine Parameter.

Return Values

Diese Anweisung gibt keinen Wert zurück.

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#

Beendet ein Projekt sofort.

Syntax
Brain.programStop();

Parameters

Diese Anweisung akzeptiert keine Parameter.

Return Values

Diese Anweisung gibt keinen Wert zurück.

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