Điều khiển#

Giới thiệu#

Chức năng điều khiển bao gồm định thời gian, luồng chương trình, logic điều kiện và kết thúc dự án. Các chức năng này cho phép bạn tạm dừng thực thi, tạo vòng lặp, xác định đường dẫn logic và kết thúc chương trình.

Chức năng và Từ khóa#

Dưới đây là danh sách các điều khiển có sẵn, bao gồm các hàm API và từ khóa C++:

  • wait – Tạm dừng dự án trong một khoảng thời gian nhất định.

  • for – Lặp lại một khối mã một số lần nhất định.

  • if – Chạy một khối mã nếu điều kiện đúng.

  • if/else – Chạy một khối mã nếu điều kiện đúng, hoặc một khối khác nếu điều kiện sai.

  • if/else if/else – Kiểm tra nhiều điều kiện theo thứ tự và chạy khối đầu tiên có điều kiện đúng.

  • while – Lặp lại một khối mã trong khi điều kiện vẫn đúng.

  • break – Thoát khỏi vòng lặp hiện tại ngay lập tức.

  • programStop – Kết thúc dự án ngay lập tức.

wait#

Tạm dừng dự án trong một khoảng thời gian nhất định trước khi chuyển sang dòng mã tiếp theo.

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

Parameters

Tham số

Kiểu

Sự miêu tả

time

double

Khoảng thời gian chờ đợi, được biểu thị dưới dạng số dương double.

units

timeUnits

Đơn vị biểu thị thời gian: msec (mặc định) – Mili giây hoặc seconds

Return Values

Hàm này không trả về giá trị nào.

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

for#

Lặp lại một khối mã. Dạng đếm chạy một số lần nhất định; dạng dựa trên phạm vi chạy một lần cho mỗi mục trong một tập hợp.

Syntax

1 — Vòng lặp đếm — chạy một số lần cố định.

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

2 — Vòng lặp dựa trên phạm vi — chạy một lần cho mỗi mục trong một tập hợp.

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

Parameters

Tham số

Kiểu

Sự miêu tả

count

int

Số lần khối mã sẽ được lặp lại.

type

Tên loại

Kiểu dữ liệu của mỗi mục trong tập hợp (ví dụ int, double).

element

variable

Tên của biến dùng để lưu trữ giá trị của phần tử hiện tại trong vòng lặp.

collection

array

Mảng (hoặc vectơ) chứa các phần tử sẽ được lặp qua.

Return Values

Cấu trúc điều khiển này không trả về giá trị.

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#

Thực thi khối mã được bao quanh nếu điều kiện là true.

Syntax
if (condition) {
  // code block
}

Parameters

Tham số

Kiểu

Sự miêu tả

condition

bool

Một biểu thức hoặc biến được đánh giá khi câu lệnh được thực thi. Nếu nó là true, mã bên trong khối if sẽ được chạy; nếu nó là false, khối đó sẽ bị bỏ qua.

Return Values

Cấu trúc điều khiển này không trả về giá trị.

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#

Xác định khối mã nào sẽ được thực thi dựa trên việc điều kiện là true hoặc false.

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

Parameters

Tham số

Kiểu

Sự miêu tả

condition

bool

Một biểu thức hoặc biến được đánh giá khi câu lệnh được thực thi. Nếu nó là true, mã bên trong khối if sẽ được thực thi; nếu nó là false, mã bên trong khối else sẽ được thực thi thay thế.

Return Values

Cấu trúc điều khiển này không trả về giá trị.

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#

Chọn khối mã được bao quanh nào sẽ chạy dựa trên nhiều điều kiện.

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

Tham số

Kiểu

Sự miêu tả

condition

bool

Một biểu thức hoặc biến được đánh giá khi câu lệnh được thực thi. Điều kiện đầu tiên đúng true sẽ xác định khối lệnh nào được thực thi; nếu không có điều kiện nào đúng true, thì khối lệnh ( else sẽ được thực thi.

Return Values

Cấu trúc điều khiển này không trả về giá trị.

Notes
  • if chạy khối lệnh của nó nếu điều kiện là true.

  • else if chỉ kiểm tra các điều kiện bổ sung nếu tất cả các điều kiện trước đó đều sai else if. Có thể sử dụng nhiều câu lệnh false.

  • else chỉ chạy khối lệnh của nó nếu không có điều kiện nào trong các điều kiện trước đó đúng 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#

Lặp lại quá trình chạy mã miễn là điều kiện đúng true.

Syntax
while (condition) {
  // code block
}

Parameters

Tham số

Kiểu

Sự miêu tả

condition

bool

Một biểu thức hoặc biến được đánh giá trước mỗi lần lặp. Nếu nó bằng true, vòng lặp tiếp tục; nếu nó bằng false, vòng lặp dừng lại.

Return Values

Cấu trúc điều khiển này không trả về giá trị.

Notes
  • Nó cũng có thể được sử dụng như một câu lệnh “Chờ cho đến khi” bằng cách thêm ! trước điều kiện, như được minh họa trong các ví dụ bên dưới.

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#

Thoát khỏi vòng lặp hiện tại ngay lập tức. Nếu trong vòng lặp lồng nhau, lệnh break sẽ thoát khỏi vòng lặp trong cùng.

Syntax
break;

Parameters

Câu lệnh này không chấp nhận bất kỳ tham số nào.

Return Values

Câu lệnh này không trả về giá trị nào.

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#

Kết thúc dự án ngay lập tức.

Syntax
Brain.programStop();

Parameters

Câu lệnh này không chấp nhận bất kỳ tham số nào.

Return Values

Câu lệnh này không trả về giá trị nào.

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