Contrôle#
Introduction#
Le module de contrôle comprend des fonctions de gestion du temps, du flux d’exécution, de la logique conditionnelle et de l’arrêt du projet. Ces commandes permettent de suspendre l’exécution, de créer des boucles, de définir des chemins logiques et de terminer un programme.
Fonctions et mots-clés#
Vous trouverez ci-dessous une liste des contrôles disponibles, y compris les fonctions API et les mots-clés C++ :
wait– Met le projet en pause pendant une durée déterminée.for– Répète un bloc de code un nombre défini de fois.if– Exécute un bloc de code si une condition est vraie.if/else– Exécute un bloc de code si une condition est vraie, ou un bloc différent si elle est fausse.if/else if/else– Vérifie plusieurs conditions dans l’ordre et exécute le premier bloc dont la condition est vraie.while– Répète un bloc de code tant qu’une condition reste vraie.break– Sort immédiatement de la boucle actuelle.programStop– Met fin au projet immédiatement.
wait#
Met le projet en pause pendant une durée déterminée avant de passer à la ligne de code suivante.
Available Functionsvoid wait(
double time,
timeUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Le temps d’attente, sous la forme d’un |
|
|
Unité de temps : |
Cette fonction ne renvoie aucune valeur.
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
Répète un bloc de code. La forme de comptage s’exécute un nombre de fois défini ; la forme basée sur une plage s’exécute une fois pour chaque élément d’une collection.
Syntax1 — Boucle de comptage — s’exécute un nombre fixe de fois.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Boucle basée sur une plage — s’exécute une fois pour chaque élément d’une collection.
for (type element : collection) { // code block }
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Le nombre de fois où le bloc de code sera répété. |
|
Nom du type |
Le type de données de chaque élément de la collection (par exemple |
|
|
Le nom de la variable qui contiendra la valeur de l’élément courant de la boucle. |
|
|
Le tableau (ou vecteur) qui contient les éléments qui seront parcourus en boucle. |
Cette structure de contrôle ne renvoie aucune valeur.
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#
Exécute le bloc de code ci-joint si la condition est true.
if (condition) {
// code block
}
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Une expression ou une variable évaluée lors de l’exécution de l’instruction. Si sa valeur est |
Cette structure de contrôle ne renvoie aucune valeur.
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#
Détermine quel bloc de code inclus s’exécute en fonction de la valeur de la condition : true ou false.
if (condition) {
// code block if true
}
else {
// code block if false
}
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Une expression ou une variable évaluée lors de l’exécution de l’instruction. Si elle vaut |
Cette structure de contrôle ne renvoie aucune valeur.
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
Sélectionne le bloc de code inclus qui doit être exécuté en fonction de plusieurs conditions.
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
}
Paramètre |
Taper |
Description |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. The first condition that is |
Cette structure de contrôle ne renvoie aucune valeur.
Notesifexécute son bloc si la condition est vraietrue.else ifvérifie les conditions supplémentaires uniquement si toutes les conditions précédentes sontfalse. Plusieurselse ifinstructions peuvent être utilisées.elseexécute son bloc uniquement si aucune des conditions précédentes n’est vraietrue.
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#
Exécute le code de manière répétée tant que la condition est true.
while (condition) {
// code block
}
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Une expression ou une variable évaluée avant chaque itération. Si elle vaut |
Cette structure de contrôle ne renvoie aucune valeur.
NotesIl peut également être utilisé comme un « Attendre jusqu’à » en ajoutant
!avant la condition, comme indiqué dans les exemples ci-dessous.
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#
Sort immédiatement de la boucle courante. Dans une boucle imbriquée, break permet de sortir de la boucle la plus interne.
break;
Cette instruction n’accepte aucun paramètre.
Return ValuesCette instruction ne renvoie aucune valeur.
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#
Met fin à un projet immédiatement.
SyntaxBrain.programStop();
Cette instruction n’accepte aucun paramètre.
Return ValuesCette instruction ne renvoie aucune valeur.
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();
}
}