Đ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 Functionsvoid wait(
double time,
timeUnits units );
Tham số |
Kiểu |
Sự miêu tả |
|---|---|---|
|
|
Khoảng thời gian chờ đợi, được biểu thị dưới dạng số dương |
|
|
Đơn vị biểu thị thời gian: |
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.
Syntax1 — Vòng lặp đếm — chạy một số lần cố định.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — 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 }
Tham số |
Kiểu |
Sự miêu tả |
|---|---|---|
|
|
Số lần khối mã sẽ được lặp lại. |
|
Tên loại |
Kiểu dữ liệu của mỗi mục trong tập hợp (ví dụ |
|
|
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. |
|
|
Mảng (hoặc vectơ) chứa các phần tử sẽ được lặp qua. |
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.
if (condition) {
// code block
}
Tham số |
Kiểu |
Sự miêu tả |
|---|---|---|
|
|
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à |
Cấu trúc điều khiển này không trả về giá trị.
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#
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.
if (condition) {
// code block if true
}
else {
// code block if false
}
Tham số |
Kiểu |
Sự miêu tả |
|---|---|---|
|
|
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à |
Cấu trúc điều khiển này không trả về giá trị.
Exampleswhile (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.
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
}
Tham số |
Kiểu |
Sự miêu tả |
|---|---|---|
|
|
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 |
Cấu trúc điều khiển này không trả về giá trị.
Notesifchạy khối lệnh của nó nếu điều kiện làtrue.else ifchỉ 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 saielse if. Có thể sử dụng nhiều câu lệnhfalse.elsechỉ 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 đó đúngtrue.
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.
while (condition) {
// code block
}
Tham số |
Kiểu |
Sự miêu tả |
|---|---|---|
|
|
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 |
Cấu trúc điều khiển này không trả về giá trị.
NotesNó 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.
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.
break;
Câu lệnh này không chấp nhận bất kỳ tham số nào.
Return ValuesCâu lệnh này không trả về giá trị nào.
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#
Kết thúc dự án ngay lập tức.
SyntaxBrain.programStop();
Câu lệnh này không chấp nhận bất kỳ tham số nào.
Return ValuesCâu lệnh này không trả về giá trị nào.
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();
}
}