控制#
介绍#
控制功能包括计时、程序流程、条件逻辑和项目终止等功能。这些控制功能允许您暂停执行、创建循环、定义逻辑路径以及结束程序。
函数和关键词#
以下是可用控件列表,包括 API 函数和 C++ 关键字:
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#
在执行下一行代码之前,暂停项目一段时间。
Available Functionsvoid wait(
double time,
timeUnits units );
范围 |
类型 |
描述 |
|---|---|---|
|
|
The amount of time to wait, as a positive |
|
|
The unit to represent the time: |
此函数不返回值。
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
重复执行一段代码。计数型执行指定次数;范围型执行针对集合中的每个元素执行一次。
Syntax1 — 计数循环 — 运行固定次数。
for (int i = 0; i < count; i++) { // code block }
Parameters2 — 基于范围的循环 — 对集合中的每个项目运行一次。
for (type element : collection) { // code block }
范围 |
类型 |
描述 |
|---|---|---|
|
|
代码块重复执行的次数。 |
|
类型名称 |
The data type of each item in the collection (e.g. |
|
|
用于保存循环当前项值的变量名称。 |
|
|
存储待循环遍历元素的数组(或向量)。 |
此控制结构不返回值。
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
}
范围 |
类型 |
描述 |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. If it is |
此控制结构不返回值。
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
}
范围 |
类型 |
描述 |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. If it is |
此控制结构不返回值。
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
根据多个条件选择要运行的封闭代码块。
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
}
范围 |
类型 |
描述 |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. The first condition that is |
此控制结构不返回值。
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
}
范围 |
类型 |
描述 |
|---|---|---|
|
|
An expression or variable that is evaluated before each iteration. If it is |
此控制结构不返回值。
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;
此语句不接受任何参数。
Return Values此语句不返回值。
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#
立即结束项目。
SyntaxBrain.programStop();
此语句不接受任何参数。
Return Values此语句不返回值。
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();
}
}