제어#

소개#

제어 기능에는 타이밍, 프로그램 흐름, 조건 논리 및 프로젝트 종료 기능이 포함됩니다. 이러한 제어 기능을 사용하면 실행을 일시 중지하고, 반복문을 생성하고, 논리 경로를 정의하고, 프로그램을 종료할 수 있습니다.

함수 및 키워드#

다음은 API 함수 및 C++ 키워드를 포함하여 사용 가능한 컨트롤 목록입니다.

  • wait – 설정된 시간 동안 프로젝트를 일시 중지합니다.

  • for – 코드 블록을 설정된 횟수만큼 반복합니다.

  • if – 조건이 참이면 코드 블록을 실행합니다.

  • if/else – 조건이 참이면 하나의 코드 블록을 실행하고, 거짓이면 다른 블록을 실행합니다.

  • if/else if/else – 여러 조건을 순서대로 확인하고 조건이 참인 첫 번째 블록을 실행합니다.

  • while – 조건이 참인 동안 코드 블록을 반복합니다.

  • break – 현재 루프를 즉시 종료합니다.

  • programStop – 프로젝트를 즉시 종료합니다.

wait#

다음 코드 줄로 넘어가기 전에 프로젝트를 특정 시간 동안 일시 중지합니다.

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

Parameters

매개변수

유형

설명

time

double

기다려야 하는 시간은 양수 double.

units

timeUnits

시간을 나타내는 단위: msec (기본값) – 밀리초 또는 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

유형 이름

컬렉션에 있는 각 항목의 데이터 유형(예 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#

조건이 true 안의 코드 블록을 실행합니다.

Syntax
if (condition) {
  // code block
}

Parameters

매개변수

유형

설명

condition

bool

문장이 실행될 때 평가되는 표현식 또는 변수입니다. true이고, if 블록 안의 코드가 실행되며, false, 해당 블록은 건너뜁니다.

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#

조건이 true 인지 false 인지에 따라 어떤 코드 블록이 실행될지 결정합니다.

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

Parameters

매개변수

유형

설명

condition

bool

문장이 실행될 때 평가되는 표현식 또는 변수입니다. true이고, if 블록 안의 코드가 실행됩니다. false이고, else 블록 안의 코드가 대신 실행됩니다.

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

문장이 실행될 때 평가되는 표현식 또는 변수입니다. 첫 번째 조건이 참 true 이면 어떤 블록이 실행될지 결정됩니다. 조건이 참 true이면 다른 블록( else 이 실행됩니다.

Return Values

이 제어 구조는 값을 반환하지 않습니다.

Notes
  • if 이고, 조건이 true.

  • else if 이전 조건이 모두 거짓인 경우에만 추가 조건을 확인합니다. else if여러 개의 false 문을 사용할 수 있습니다.

  • else 이전 조건 중 어느 것도 참이 아닌 경우에만 해당 블록을 실행합니다. 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#

조건이 true 실행됩니다.

Syntax
while (condition) {
  // code block
}

Parameters

매개변수

유형

설명

condition

bool

각 반복 전에 평가되는 표현식 또는 변수입니다. 값이 true이면 루프가 계속되고, false이면 루프가 종료됩니다.

Return Values

이 제어 구조는 값을 반환하지 않습니다.

Notes
  • 또한 아래 예시와 같이 조건 앞에 ! 추가하여 “기다릴 때까지”처럼 사용할 수도 있습니다.

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#

현재 루프를 즉시 종료합니다. 중첩 루프인 경우, break 은 가장 안쪽 루프를 종료합니다.

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