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 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 sea verdadera.while– Repite un bloque de código mientras una condición permanece 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 Functionsvoid wait(
double time,
timeUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La cantidad de tiempo de espera, como un |
|
|
Unidad para representar el tiempo: |
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.
Syntax1 — Bucle de conteo: se ejecuta un número fijo de veces.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Bucle basado en el rango: se ejecuta una vez para cada artículo de una colección.
for (type element : collection) { // code block }
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
El número de veces que se repetirá el bloque de código. |
|
Escriba el nombre |
El tipo de datos de cada elemento de la colección (por ejemplo |
|
|
El nombre de la variable que contiene el valor del elemento actual del bucle. |
|
|
La matriz (o vector) que contiene los elementos que se recorrerán en bucle. |
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.
if (condition) {
// code block
}
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Una expresión o variable que se evalúa cuando se ejecuta la instrucción. Si es |
Esta estructura de control no devuelve un valor.
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#
Determina qué bloque de código encerrado se ejecuta en función de si la condición es true o false.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Una expresión o variable que se evalúa cuando se ejecuta la instrucción. Si es |
Esta estructura de control no devuelve un valor.
Exampleswhile (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.
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
}
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Una expresión o variable que se evalúa cuando se ejecuta la instrucción. La primera condición que es |
Esta estructura de control no devuelve un valor.
Notesifejecuta su bloque si la condición estrue.else ifcomprueba condiciones adicionales solo si todas las condiciones anteriores sonfalseSe pueden usar múltipleselse ifinstrucciones.elseejecuta su bloque solo si ninguna de las condiciones anteriores estrue.
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 repetidamente el código mientras la condición sea true.
while (condition) {
// code block
}
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Una expresión o variable que se evalúa antes de cada iteración. Si es |
Esta estructura de control no devuelve un valor.
NotesTambién se puede usar como un “Esperar hasta” agregando
!antes de la condición, como se muestra en los ejemplos a continuación.
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.
break;
Esta declaración no acepta ningún parámetro.
Return ValuesEsta declaración no devuelve un valor.
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#
Finaliza un proyecto de inmediato.
SyntaxBrain.programStop();
Esta declaración no acepta ningún parámetro.
Return ValuesEsta declaración no devuelve un valor.
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();
}
}