Control#
Introduction#
Control includes functions for timing, program flow, conditional logic, and project termination. These controls let you pause execution, create loops, define logic paths, and end a program.
Functions and Keywords#
Below is a list of available controls, including API functions and C++ keywords:
wait– Pauses the project for a set amount of time.for– Repeats a block of code a set number of times.if– Runs a block of code if a condition is true.if/else– Runs one block of code if a condition is true, or a different block if it is false.if/else if/else– Checks multiple conditions in order and runs the first block whose condition is true.while– Repeats a block of code while a condition remains true.break– Exits the current loop immediately.programStop– Ends the project immediately.
wait#
Pauses the project for a specific amount of time before moving to the next line of code.
Available Functionsvoid wait(
double time,
timeUnits units );
Parameter |
Type |
Description |
|---|---|---|
|
|
The amount of time to wait, as a positive |
|
|
The unit to represent the time: |
This function does not return a value.
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
Repeats a block of code. The counting form runs a set number of times; the range-based form runs once for each item in a collection.
Syntax1 — Counting loop — runs a fixed number of times.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Range-based loop — runs once for each item in a collection.
for (type element : collection) { // code block }
Parameter |
Type |
Description |
|---|---|---|
|
|
The number of times that the code block will be repeated. |
|
Type Name |
The data type of each item in the collection (e.g. |
|
|
The name of the variable to hold the value of the current item of the loop. |
|
|
The Array (or vector) that holds the items that will be looped through. |
This control structure does not return a value.
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#
Runs the enclosed block of code if the condition is true.
if (condition) {
// code block
}
Parameter |
Type |
Description |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. If it is |
This control structure does not return a value.
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#
Determines which enclosed block of code runs based on whether the condition is true or false.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parameter |
Type |
Description |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. If it is |
This control structure does not return a value.
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
Selects which enclosed block of code runs based on multiple 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
}
Parameter |
Type |
Description |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. The first condition that is |
This control structure does not return a value.
Notesifruns its block if the condition istrue.else ifchecks additional conditions only if all previous conditions arefalse. Multipleelse ifstatements can be used.elseruns its block only if none of the previous conditions aretrue.
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#
Repeatedly runs code as long as the condition is true.
while (condition) {
// code block
}
Parameter |
Type |
Description |
|---|---|---|
|
|
An expression or variable that is evaluated before each iteration. If it is |
This control structure does not return a value.
NotesIt can also be used like a “Wait until” by adding
!before the condition, as shown in the examples below.
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#
Exits the current loop immediately. If in a nested loop, break exits the innermost loop.
break;
This statement does not accept any parameters.
Return ValuesThis statement does not return a value.
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#
Ends a project immediately.
SyntaxBrain.programStop();
This statement does not accept any parameters.
Return ValuesThis statement does not return a value.
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();
}
}