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

Parameters

Paramètre

Taper

Description

time

double

Le temps d’attente, sous la forme d’un double.

units

timeUnits

Unité de temps : msec (par défaut) – Millisecondes ou seconds

Return Values

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.

Syntax

1 — Boucle de comptage — s’exécute un nombre fixe de fois.

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

2 — Boucle basée sur une plage — s’exécute une fois pour chaque élément d’une collection.

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

Parameters

Paramètre

Taper

Description

count

int

Le nombre de fois où le bloc de code sera répété.

type

Nom du type

Le type de données de chaque élément de la collection (par exemple int, double).

element

variable

Le nom de la variable qui contiendra la valeur de l’élément courant de la boucle.

collection

array

Le tableau (ou vecteur) qui contient les éléments qui seront parcourus en boucle.

Return Values

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.

Syntax
if (condition) {
  // code block
}

Parameters

Paramètre

Taper

Description

condition

bool

Une expression ou une variable évaluée lors de l’exécution de l’instruction. Si sa valeur est true, le code à l’intérieur du bloc if est exécuté ; si sa valeur est false, le bloc est ignoré.

Return Values

Cette structure de contrôle ne renvoie aucune valeur.

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#

Détermine quel bloc de code inclus s’exécute en fonction de la valeur de la condition : true ou false.

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

Parameters

Paramètre

Taper

Description

condition

bool

Une expression ou une variable évaluée lors de l’exécution de l’instruction. Si elle vaut true, le code à l’intérieur du bloc if (faux), false(faux), c’est le code à l’intérieur du bloc else faux), qui est exécuté.

Return Values

Cette structure de contrôle ne renvoie aucune valeur.

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#

Sélectionne le bloc de code inclus qui doit être exécuté en fonction de plusieurs conditions.

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

Paramètre

Taper

Description

condition

bool

An expression or variable that is evaluated when the statement runs. The first condition that is true determines which block runs; if none are true, the else block runs.

Return Values

Cette structure de contrôle ne renvoie aucune valeur.

Notes
  • if exécute son bloc si la condition est vraie true.

  • else if vérifie les conditions supplémentaires uniquement si toutes les conditions précédentes sont false. Plusieurs else if instructions peuvent être utilisées.

  • else exécute son bloc uniquement si aucune des conditions précédentes n’est vraie 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#

Exécute le code de manière répétée tant que la condition est true.

Syntax
while (condition) {
  // code block
}

Parameters

Paramètre

Taper

Description

condition

bool

Une expression ou une variable évaluée avant chaque itération. Si elle vaut true, la boucle continue ; si elle vaut false, la boucle s’arrête.

Return Values

Cette structure de contrôle ne renvoie aucune valeur.

Notes
  • Il peut également être utilisé comme un « Attendre jusqu’à » en ajoutant ! avant la condition, comme indiqué dans les exemples ci-dessous.

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#

Sort immédiatement de la boucle courante. Dans une boucle imbriquée, break permet de sortir de la boucle la plus interne.

Syntax
break;

Parameters

Cette instruction n’accepte aucun paramètre.

Return Values

Cette instruction ne renvoie aucune valeur.

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#

Met fin à un projet immédiatement.

Syntax
Brain.programStop();

Parameters

Cette instruction n’accepte aucun paramètre.

Return Values

Cette instruction ne renvoie aucune valeur.

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