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 Functionsvoid wait(
double time,
timeUnits units );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
O tempo de espera, como um |
|
|
A unidade para representar o tempo: |
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.
Syntax1 — Loop de contagem — executa um número fixo de vezes.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Loop baseado no intervalo — é executado uma vez para cada item de uma coleção.
for (type element : collection) { // code block }
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
O número de vezes que o bloco de código será repetido. |
|
Nome do tipo |
O tipo de dados de cada item da coleção (ex |
|
|
O nome da variável que irá armazenar o valor do item atual do ciclo. |
|
|
O array (ou vetor) que contém os itens que serão percorridos num ciclo. |
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.
if (condition) {
// code block
}
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Uma expressão ou variável que é avaliada quando a instrução é executada. Se for |
Esta estrutura de controlo não retorna um valor.
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#
Determina qual o bloco de código interno que será executado com base no valor da condição: true falso) ou false.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Uma expressão ou variável que é avaliada quando a instrução é executada. Se for |
Esta estrutura de controlo não retorna um valor.
Exampleswhile (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.
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
}
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. The first condition that is |
Esta estrutura de controlo não retorna um valor.
Notesifexecutar o seu bloco se a condição fortrue.else ifverifica condições adicionais apenas se todas as condições anteriores foremfalsePodem ser utilizadas várias instruçõeselse if.elseexecuta o seu bloco apenas se nenhuma das condições anteriores fortrue.
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.
while (condition) {
// code block
}
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Uma expressão ou variável que é avaliada antes de cada iteração. Se for |
Esta estrutura de controlo não retorna um valor.
NotesTambém pode ser utilizado como um “Aguarde até” adicionando
!antes da condição, como se mostra nos exemplos abaixo.
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.
break;
Esta declaração não aceita parâmetros.
Return ValuesEsta instrução não devolve qualquer valor.
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#
Encerra um projeto imediatamente.
SyntaxBrain.programStop();
Esta declaração não aceita parâmetros.
Return ValuesEsta instrução não devolve qualquer valor.
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();
}
}