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 Functionsvoid wait(
double time,
timeUnits units );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De hoeveelheid tijd die je moet wachten, als een positief getal |
|
|
De eenheid om de tijd weer te geven: |
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.
Syntax1 — Tel-lus — wordt een vast aantal keren uitgevoerd.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Bereikgebaseerde lus — wordt eenmaal uitgevoerd voor elk item in een verzameling.
for (type element : collection) { // code block }
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Het aantal keren dat het codeblok herhaald zal worden. |
|
Type naam |
Het gegevenstype van elk item in de verzameling (bijv. |
|
|
De naam van de variabele die de waarde van het huidige item in de lus opslaat. |
|
|
De array (of vector) die de items bevat waar doorheen geloopt zal worden. |
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.
if (condition) {
// code block
}
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Een expressie of variabele die wordt geëvalueerd wanneer de instructie wordt uitgevoerd. Als deze |
Deze besturingsstructuur retourneert geen waarde.
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#
Bepaalt welk ingesloten codeblok wordt uitgevoerd op basis van of de voorwaarde true of false is.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Een expressie of variabele die wordt geëvalueerd wanneer de instructie wordt uitgevoerd. Als deze |
Deze besturingsstructuur retourneert geen waarde.
Exampleswhile (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.
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 |
Type |
Beschrijving |
|---|---|---|
|
|
Een expressie of variabele die wordt geëvalueerd wanneer de instructie wordt uitgevoerd. De eerste voorwaarde die waar is |
Deze besturingsstructuur retourneert geen waarde.
Notesifzijn blok uitvoert als de voorwaardetrue.else ifcontroleert alleen aanvullende voorwaarden als alle voorgaande voorwaardenfalseMeerdereelse ifstatements kunnen worden gebruikt.elsevoert zijn blok alleen uit als geen van de voorgaande voorwaardentrue.
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.
while (condition) {
// code block
}
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Een expressie of variabele die vóór elke iteratie wordt geëvalueerd. Als deze |
Deze besturingsstructuur retourneert geen waarde.
NotesHet kan ook gebruikt worden als een “Wacht tot”-voorwaarde door
!voor de voorwaarde te plaatsen, zoals in de onderstaande voorbeelden te zien is.
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.
break;
Deze instructie accepteert geen parameters.
Return ValuesDeze instructie retourneert geen waarde.
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#
Een project wordt onmiddellijk beëindigd.
SyntaxBrain.programStop();
Deze instructie accepteert geen parameters.
Return ValuesDeze instructie retourneert geen waarde.
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();
}
}