Controle#

Invoering#

De besturingselementen omvatten functies voor timing, programmastroom, voorwaardelijke logica en projectbeëindiging. Met deze besturingselementen kunt u de uitvoering pauzeren, lussen creëren, logische paden definiëren en een programma beëindigen.

Functies en trefwoorden#

Hieronder vindt u een lijst met beschikbare besturingselementen, waaronder API-functies en C+±trefwoorden:

  • wait – Pauzeert het project voor een bepaalde tijd.

  • for – Herhaalt een codeblok een vast aantal keren.

  • if – Voert een codeblok uit als aan een voorwaarde is voldaan.

  • if/else – Voert één codeblok uit als een voorwaarde waar is, of een ander blok als deze onwaar is.

  • if/else if/else – Controleert meerdere voorwaarden in volgorde en voert het eerste blok uit waarvan de voorwaarde waar is.

  • while – Herhaalt een codeblok zolang een voorwaarde waar blijft.

  • break – Verlaat de huidige lus onmiddellijk.

  • programStop – Beëindigt het project onmiddellijk.

wait#

Pauzeert het project gedurende een bepaalde tijd voordat de volgende regel code wordt uitgevoerd.

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

Parameters

Parameter

Type

Beschrijving

time

double

De hoeveelheid tijd die je moet wachten, als een positief getal double.

units

timeUnits

De eenheid om de tijd weer te geven: msec (standaard) – Milliseconden of seconds

Return Values

Deze functie retourneert geen waarde.

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

for#

Herhaalt een codeblok. De telvorm wordt een vast aantal keren uitgevoerd; de bereikgebaseerde vorm wordt één keer uitgevoerd voor elk item in een verzameling.

Syntax

1 — Tel-lus — wordt een vast aantal keren uitgevoerd.

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

2 — Bereikgebaseerde lus — wordt eenmaal uitgevoerd voor elk item in een verzameling.

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

Parameters

Parameter

Type

Beschrijving

count

int

Het aantal keren dat het codeblok herhaald zal worden.

type

Type naam

Het gegevenstype van elk item in de verzameling (bijv. int, double).

element

variable

De naam van de variabele die de waarde van het huidige item in de lus opslaat.

collection

array

De array (of vector) die de items bevat waar doorheen geloopt zal worden.

Return Values

Deze besturingsstructuur retourneert geen waarde.

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#

Voert het ingesloten codeblok uit als de voorwaarde true is.

Syntax
if (condition) {
  // code block
}

Parameters

Parameter

Type

Beschrijving

condition

bool

Een expressie of variabele die wordt geëvalueerd wanneer de instructie wordt uitgevoerd. Als deze trueis, wordt de code binnen het if blok uitgevoerd; als deze falseis, wordt het blok overgeslagen.

Return Values

Deze besturingsstructuur retourneert geen waarde.

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#

Bepaalt welk ingesloten codeblok wordt uitgevoerd op basis van of de voorwaarde true of false is.

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

Parameters

Parameter

Type

Beschrijving

condition

bool

Een expressie of variabele die wordt geëvalueerd wanneer de instructie wordt uitgevoerd. Als deze trueis, wordt de code binnen het if blok uitgevoerd; als deze falseis, wordt in plaats daarvan de code binnen het else -blok uitgevoerd.

Return Values

Deze besturingsstructuur retourneert geen waarde.

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#

Selecteert welk ingesloten codeblok wordt uitgevoerd op basis van meerdere voorwaarden.

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

Type

Beschrijving

condition

bool

Een expressie of variabele die wordt geëvalueerd wanneer de instructie wordt uitgevoerd. De eerste voorwaarde die waar is true bepaalt welk blok wordt uitgevoerd; als geen enkele voorwaarde waar is true, wordt het blok else uitgevoerd.

Return Values

Deze besturingsstructuur retourneert geen waarde.

Notes
  • if zijn blok uitvoert als de voorwaarde true.

  • else if controleert alleen aanvullende voorwaarden als alle voorgaande voorwaarden falseMeerdere else if statements kunnen worden gebruikt.

  • else voert zijn blok alleen uit als geen van de voorgaande voorwaarden 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#

Voert de code herhaaldelijk uit zolang de voorwaarde true is.

Syntax
while (condition) {
  // code block
}

Parameters

Parameter

Type

Beschrijving

condition

bool

Een expressie of variabele die vóór elke iteratie wordt geëvalueerd. Als deze trueis, gaat de lus verder; als deze falseis, stopt de lus.

Return Values

Deze besturingsstructuur retourneert geen waarde.

Notes
  • Het kan ook gebruikt worden als een “Wacht tot”-voorwaarde door ! voor de voorwaarde te plaatsen, zoals in de onderstaande voorbeelden te zien is.

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#

Verlaat de huidige lus onmiddellijk. Indien in een geneste lus, verlaat break de binnenste lus.

Syntax
break;

Parameters

Deze instructie accepteert geen parameters.

Return Values

Deze instructie retourneert geen waarde.

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#

Een project wordt onmiddellijk beëindigd.

Syntax
Brain.programStop();

Parameters

Deze instructie accepteert geen parameters.

Return Values

Deze instructie retourneert geen waarde.

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