제어#
소개#
제어 기능에는 타이밍, 프로그램 흐름, 조건 논리 및 프로젝트 종료 기능이 포함됩니다. 이러한 제어 기능을 사용하면 실행을 일시 중지하고, 반복문을 생성하고, 논리 경로를 정의하고, 프로그램을 종료할 수 있습니다.
함수 및 키워드#
다음은 API 함수 및 C++ 키워드를 포함하여 사용 가능한 컨트롤 목록입니다.
wait– 설정된 시간 동안 프로젝트를 일시 중지합니다.for– 코드 블록을 설정된 횟수만큼 반복합니다.if– 조건이 참이면 코드 블록을 실행합니다.if/else– 조건이 참이면 하나의 코드 블록을 실행하고, 거짓이면 다른 블록을 실행합니다.if/else if/else– 여러 조건을 순서대로 확인하고 조건이 참인 첫 번째 블록을 실행합니다.while– 조건이 참인 동안 코드 블록을 반복합니다.break– 현재 루프를 즉시 종료합니다.programStop– 프로젝트를 즉시 종료합니다.
wait#
다음 코드 줄로 넘어가기 전에 프로젝트를 특정 시간 동안 일시 중지합니다.
Available Functionsvoid wait(
double time,
timeUnits units );
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
기다려야 하는 시간은 양수 |
|
|
시간을 나타내는 단위: |
이 함수는 값을 반환하지 않습니다.
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 }
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
코드 블록이 반복될 횟수입니다. |
|
유형 이름 |
컬렉션에 있는 각 항목의 데이터 유형(예 |
|
|
반복문의 현재 항목 값을 저장할 변수의 이름입니다. |
|
|
반복문에서 처리할 항목들을 담고 있는 배열(또는 벡터)입니다. |
이 제어 구조는 값을 반환하지 않습니다.
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#
조건이 true 안의 코드 블록을 실행합니다.
if (condition) {
// code block
}
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
문장이 실행될 때 평가되는 표현식 또는 변수입니다. |
이 제어 구조는 값을 반환하지 않습니다.
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#
조건이 true 인지 false 인지에 따라 어떤 코드 블록이 실행될지 결정합니다.
if (condition) {
// code block if true
}
else {
// code block if false
}
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
문장이 실행될 때 평가되는 표현식 또는 변수입니다. |
이 제어 구조는 값을 반환하지 않습니다.
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
}
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
문장이 실행될 때 평가되는 표현식 또는 변수입니다. 첫 번째 조건이 참 |
이 제어 구조는 값을 반환하지 않습니다.
Notesif이고, 조건이true.else if이전 조건이 모두 거짓인 경우에만 추가 조건을 확인합니다.else if여러 개의false문을 사용할 수 있습니다.else이전 조건 중 어느 것도 참이 아닌 경우에만 해당 블록을 실행합니다.true.
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#
조건이 true 실행됩니다.
while (condition) {
// code block
}
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
각 반복 전에 평가되는 표현식 또는 변수입니다. 값이 |
이 제어 구조는 값을 반환하지 않습니다.
Notes또한 아래 예시와 같이 조건 앞에
!추가하여 “기다릴 때까지”처럼 사용할 수도 있습니다.
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#
현재 루프를 즉시 종료합니다. 중첩 루프인 경우, break 은 가장 안쪽 루프를 종료합니다.
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();
}
}