Control#

Introducción#

El control incluye funciones para la sincronización, el flujo del programa, la lógica condicional y la terminación del proyecto. Estos controles le permiten pausar la ejecución, crear bucles, definir rutas lógicas y finalizar un programa.

Funciones y palabras clave#

A continuación se muestra una lista de controles disponibles, incluidas las funciones de la API y las palabras clave de C++:

  • wait – Pausa el proyecto durante un período de tiempo determinado.

  • for – Repite un bloque de código un número determinado de veces.

  • if – Ejecuta un bloque de código si una condición es verdadera.

  • if/else – Ejecuta un bloque de código si una condición es verdadera, o un bloque diferente si es falsa.

  • if/else if/else: comprueba varias condiciones en orden y ejecuta el primer bloque cuya condición es verdadera.

  • while – Repite un bloque de código mientras una condición sigue siendo verdadera.

  • break – Sale del bucle actual inmediatamente.

  • programStop – Finaliza el proyecto inmediatamente.

wait#

Pausa el proyecto durante un tiempo específico antes de pasar a la siguiente línea de código.

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

Parameters

Parámetro

Tipo

Descripción

time

double

La cantidad de tiempo a esperar, como un double.

units

timeUnits

La unidad para representar el tiempo: msec (predeterminado) – Milisegundos o seconds

Return Values

Esta función no devuelve un valor.

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

for#

Repite un bloque de código. El formulario de conteo se ejecuta un número determinado de veces; el formulario basado en el rango se ejecuta una vez para cada elemento de una colección.

Syntax

1 — Bucle de conteo: se ejecuta un número fijo de veces.

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

2 — Bucle basado en el rango: se ejecuta una vez para cada artículo de una colección.

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

Parameters

Parámetro

Tipo

Descripción

count

int

El número de veces que se repetirá el bloque de código.

type

Escriba el nombre

El tipo de datos de cada elemento de la colección (por ejemplo int, double).

element

variable

El nombre de la variable que contiene el valor del elemento actual del bucle.

collection

array

La matriz (o vector) que contiene los elementos que se recorrerán en bucle.

Return Values

Esta estructura de control no devuelve un valor.

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#

Ejecuta el bloque de código adjunto si la condición es true.

Syntax
if (condition) {
  // code block
}

Parameters

Parámetro

Tipo

Descripción

condition

bool

Una expresión o variable que se evalúa cuando se ejecuta la instrucción. Si es true, se ejecuta el código dentro del bloque if; si es false, se omite el bloque.

Return Values

Esta estructura de control no devuelve un valor.

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#

Determina qué bloque de código adjunto se ejecuta en función de si la condición es true o false.

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

Parameters

Parámetro

Tipo

Descripción

condition

bool

Una expresión o variable que se evalúa cuando se ejecuta la instrucción. Si es true, se ejecuta el código dentro del bloque if; si es false, se ejecuta el código dentro del bloque else.

Return Values

Esta estructura de control no devuelve un valor.

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#

Selecciona qué bloque de código adjunto se ejecuta en función de múltiples condiciones.

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

Parámetro

Tipo

Descripción

condition

bool

Una expresión o variable que se evalúa cuando se ejecuta la instrucción. La primera condición que es true determina qué bloque se ejecuta; si ninguna es true, se ejecuta el bloque else.

Return Values

Esta estructura de control no devuelve un valor.

Notes
  • if ejecuta su bloque si la condición es true.

  • else if comprueba condiciones adicionales solo si todas las condiciones anteriores son else if. Múltiple false sentencias.

  • else ejecuta su bloque solo si ninguna de las condiciones anteriores 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#

Ejecuta código repetidamente siempre que la condición sea true.

Syntax
while (condition) {
  // code block
}

Parameters

Parámetro

Tipo

Descripción

condition

bool

Una expresión o variable que se evalúa antes de cada iteración. Si es true, el bucle continúa; si es false, el bucle se detiene.

Return Values

Esta estructura de control no devuelve un valor.

Notes
  • También se puede usar como un “Esperar hasta” agregando ! antes de la condición, como se muestra en los ejemplos a continuación.

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#

Sale del bucle actual inmediatamente. Si está en un bucle anidado, break sale del bucle más interno.

Syntax
break;

Parameters

Esta declaración no acepta ningún parámetro.

Return Values

Esta declaración no devuelve un valor.

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#

Finaliza un proyecto de inmediato.

Syntax
Brain.programStop();

Parameters

Esta declaración no acepta ningún parámetro.

Return Values

Esta declaración no devuelve un valor.

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