控制#

介绍#

控制功能包括计时、程序流程、条件逻辑和项目终止等功能。这些控制功能允许您暂停执行、创建循环、定义逻辑路径以及结束程序。

函数和关键词#

以下是可用控件列表,包括 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 Functions
void wait(
  double time,
  timeUnits units );

Parameters

范围

类型

描述

time

double

The amount of time to wait, as a positive double.

units

timeUnits

The unit to represent the time: msec (default) – Milliseconds or seconds

Return Values

此函数不返回值。

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

for#

重复执行一段代码。计数型执行指定次数;范围型执行针对集合中的每个元素执行一次。

Syntax

1 计数循环 — 运行固定次数。

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

2 基于范围的循环 — 对集合中的每个项目运行一次。

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

Parameters

范围

类型

描述

count

int

代码块重复执行的次数。

type

类型名称

The data type of each item in the collection (e.g. int, double).

element

variable

用于保存循环当前项值的变量名称。

collection

array

存储待循环遍历元素的数组(或向量)。

Return Values

此控制结构不返回值。

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.

Syntax
if (condition) {
  // code block
}

Parameters

范围

类型

描述

condition

bool

An expression or variable that is evaluated when the statement runs. If it is true, the code inside the if block runs; if it is false, the block is skipped.

Return Values

此控制结构不返回值。

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#

Determines which enclosed block of code runs based on whether the condition is true or false.

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

Parameters

范围

类型

描述

condition

bool

An expression or variable that is evaluated when the statement runs. If it is true, the code inside the if block runs; if it is false, the code inside the else block runs instead.

Return Values

此控制结构不返回值。

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#

根据多个条件选择要运行的封闭代码块。

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

范围

类型

描述

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

此控制结构不返回值。

Notes
  • if runs its block if the condition is true.

  • else if checks additional conditions only if all previous conditions are false. Multiple else if statements can be used.

  • else runs its block only if none of the previous conditions are 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#

Repeatedly runs code as long as the condition is true.

Syntax
while (condition) {
  // code block
}

Parameters

范围

类型

描述

condition

bool

An expression or variable that is evaluated before each iteration. If it is true, the loop continues; if it is false, the loop stops.

Return Values

此控制结构不返回值。

Notes
  • It can also be used like a “Wait until” by adding ! before the condition, as shown in the examples below.

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#

Exits the current loop immediately. If in a nested loop, break exits the innermost loop.

Syntax
break;

Parameters

此语句不接受任何参数。

Return Values

此语句不返回值。

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#

立即结束项目。

Syntax
Brain.programStop();

Parameters

此语句不接受任何参数。

Return Values

此语句不返回值。

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