Controlo#

Introdução#

O controlo inclui funções para a temporização, fluxo do programa, lógica condicional e fecho do projeto. Estes controlos permitem pausar a execução, criar loops, definir caminhos lógicos e terminar um programa.

Funções e palavras-chave#

A seguir, encontra-se uma lista dos controlos disponíveis, incluindo as funções da API e as palavras-chave em C++:

  • wait – Faz uma pausa no projeto durante um determinado período de tempo.

  • for – Repete um bloco de código um número definido de vezes.

  • if – Executa um bloco de código se uma condição for verdadeira.

  • if/else – Executa um bloco de código se uma condição for verdadeira, ou um bloco diferente se for falsa.

  • if/else if/else – Verifica várias condições por ordem e executa o primeiro bloco cuja condição é verdadeira.

  • while – Repete um bloco de código enquanto uma condição se mantiver verdadeira.

  • break – Sai do ciclo actual imediatamente.

  • programStop – Encerra o projeto de imediato.

wait#

Faz uma pausa no projeto durante um período específico de tempo antes de passar para a linha de código seguinte.

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

Parameters

Parâmetro

Tipo

Descrição

time

double

O tempo de espera, como um double.

units

timeUnits

A unidade para representar o tempo: msec (padrão) – Milissegundos ou seconds

Return Values

Esta função não devolve qualquer valor.

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

for#

Repete um bloco de código. A forma de contagem é executada um número definido de vezes; a forma baseada em intervalos é executada uma vez para cada item de uma coleção.

Syntax

1 — Loop de contagem — executa um número fixo de vezes.

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

2 — Loop baseado no intervalo — é executado uma vez para cada item de uma coleção.

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

Parameters

Parâmetro

Tipo

Descrição

count

int

O número de vezes que o bloco de código será repetido.

type

Nome do tipo

O tipo de dados de cada item da coleção (ex int, double).

element

variable

O nome da variável que irá armazenar o valor do item atual do ciclo.

collection

array

O array (ou vetor) que contém os itens que serão percorridos num ciclo.

Return Values

Esta estrutura de controlo não retorna um valor.

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#

Executa o bloco de código incluído se a condição for true.

Syntax
if (condition) {
  // code block
}

Parameters

Parâmetro

Tipo

Descrição

condition

bool

Uma expressão ou variável que é avaliada quando a instrução é executada. Se for true, é executado o código dentro do bloco if ; se for false, o bloco é ignorado.

Return Values

Esta estrutura de controlo não retorna um valor.

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#

Determina qual o bloco de código interno que será executado com base no valor da condição: true falso) ou false.

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

Parameters

Parâmetro

Tipo

Descrição

condition

bool

Uma expressão ou variável que é avaliada quando a instrução é executada. Se for true, é executado o código dentro do bloco if ; se for false, o código dentro do bloco else é executado em vez disso.

Return Values

Esta estrutura de controlo não retorna um valor.

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#

Seleciona qual o bloco de código interno que será executado com base em múltiplas condições.

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

Parâmetro

Tipo

Descrição

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

Esta estrutura de controlo não retorna um valor.

Notes
  • if executar o seu bloco se a condição for true.

  • else if verifica condições adicionais apenas se todas as condições anteriores forem falsePodem ser utilizadas várias instruções else if.

  • else executa o seu bloco apenas se nenhuma das condições anteriores for 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#

Executa o código repetidamente enquanto a condição for true.

Syntax
while (condition) {
  // code block
}

Parameters

Parâmetro

Tipo

Descrição

condition

bool

Uma expressão ou variável que é avaliada antes de cada iteração. Se for true, o ciclo continua; se for false, o ciclo pára.

Return Values

Esta estrutura de controlo não retorna um valor.

Notes
  • Também pode ser utilizado como um “Aguarde até” adicionando ! antes da condição, como se mostra nos exemplos abaixo.

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#

Sai imediatamente do laço atual. Se estiver num ciclo aninhado, break break saem do ciclo mais interior.

Syntax
break;

Parameters

Esta declaração não aceita parâmetros.

Return Values

Esta instrução não devolve qualquer valor.

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#

Encerra um projeto imediatamente.

Syntax
Brain.programStop();

Parameters

Esta declaração não aceita parâmetros.

Return Values

Esta instrução não devolve qualquer valor.

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