C++#

A Referência da API C++ do VEX IQ (1ª geração) explica as classes, objetos, construtores, funções membro e variáveis ​​utilizadas nos projetos VEXcode C++.

Utilize esta referência quando pretende compreender como um dispositivo ou recurso é criado, verificar qual a assinatura de função a utilizar ou comparar funções-membro relacionadas numa classe.

Os comandos C++ são utilizados nos projetos C++ do VEXcode IQ. As páginas C++ estão organizadas de forma diferente das páginas de Blocos, uma vez que muitos comandos pertencem a uma classe. Uma página pode primeiro explicar a classe e como criar um objeto, e depois listar as funções-membro que podem ser chamadas nesse objeto.

Como ler uma página de uma classe C++#

Uma página de classe C++ segue normalmente esta ordem:

  1. Introdução - Explica o que a classe representa e quando é útil.

  2. Classes Derivadas - Lista quaisquer classes que sejam baseadas nesta classe, se aplicável.

  3. Construtor ou Construtores da Classe - Mostra a sintaxe utilizada para criar um objeto da classe.

  4. Destrutor de Classes - Mostra a sintaxe utilizada para destruir o objeto e libertar os seus recursos, se aplicável.

  5. Parâmetros - Explica os parâmetros do construtor utilizados ao criar o objeto.

  6. Exemplo - Mostra como criar o objeto em código.

  7. Funções-membro - Lista as funções que pertencem à classe, geralmente agrupadas por finalidade.

  8. Entradas de funções - Explica cada função membro, incluindo as funções disponíveis, parâmetros, valores de retorno, notas e exemplos.

Nem todas as páginas possuem todas as secções. Por exemplo, algumas páginas não incluem classes derivadas e algumas funções não possuem parâmetros ou valores de retorno.

Elementos comuns da API C++#

Elemento

O que significa

Classe

O tipo C++ para um dispositivo ou característica, como bumper ou drivetrain.

Objeto

Uma instância nomeada criada a partir de uma classe, como bumper Bumper1 ou drivetrain myDrivetrain.

Construtor

O código utilizado para criar um objeto a partir de uma classe.

Função de membro

Um comando chamado num objeto, como por exemplo myDrivetrain.drive(…).

Função disponível

Uma assinatura de função exata que pode ser utilizada para uma função membro. Algumas funções membro têm mais do que uma função disponível.

Parâmetro

Um valor passado a um construtor ou função para controlar o que faz.

Valor de Retorno

Um valor que uma função devolve, como por exemplo bool, int32_t, ou double.

Vocabulário básico de C++#

Termo

O que significa

Variável

Um nome que armazena um valor, como por exemplo int speed = 50;.

Tipo

O tipo de dados que algo armazena, como por exemplo int, double, ou bool.

Fio

Texto entre aspas, como “Hello”.

int

Um tipo de número inteiro positivo ou negativo, como 90.

duplo

Um tipo de número que pode incluir um decimal, como por exemplo 25.5.

bool

Um valor que pode ser true (verdadeiro), false falso).

Discussão

Um valor passado para uma função membro ou chamada de função, como forward in myDrivetrain.drive(forward).

Construtores e Objetos#

Antes de utilizar funções-membro de muitas classes C++, é necessário que um objeto exista. O construtor mostra como criar este objeto.

Por exemplo, um objeto Bumper Switch pode ser criado fornecendo ao construtor a Smart Port onde o sensor está ligado:

bumper Bumper1 = bumper(PORT1);

Após a criação do objeto, as suas funções-membro podem ser chamadas:

Bumper1.pressing();

No VEXcode, a configuração do dispositivo é normalmente gerada automaticamente pelo Menu de Dispositivos. No VS Code, os construtores podem ter de ser escritos manualmente.

Escolhendo a função disponível adequada#

Algumas funções-membro têm mais do que uma função disponível. Cada função utiliza um conjunto diferente de parâmetros, por isso escolha aquela que corresponde aos valores que o seu projeto necessita de fornecer.

Por exemplo, uma função de transmissão pode ter uma versão que utiliza a velocidade atual e outra versão que permite ao projeto escolher uma velocidade:

void drive(directionType dir);

void drive(directionType dir, double velocity, velocityUnits units);

Ambas as versões chamam drive, mas a segunda versão oferece mais controlo porque inclui parâmetros de velocidade.

Exemplo de entrada de função#

conduzir#

drive moves the robot forward or reverse forever. The robot will continue to move until it is given another action, like turning or stopping.

Funções disponíveis

void drive(directionType dir);

void drive(directionType dir, double velocity, velocityUnits units);

Parâmetro

Tipo

Descrição

dir

directionType

A direção em que o robô se move: forward ou reverse.

velocity

double

A velocidade de deslocação varia de 0% a 100% quando se utiliza velocityUnits::pct, de 0 a 120 rpm quando se utiliza rpmou de 0 a 720 graus por segundo quando se utiliza dpsSe não for fornecida qualquer velocidade, o robô deslocar-se-á à velocidade de deslocação atual.

units

velocityUnits

A unidade de velocidade: velocityUnits::pct (por cento), rpm (rotações por minuto) ou dps (graus por segundo).

Valor de Retorno

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

Notas

  • A unidade drive não está em espera. O projeto executará a próxima linha de código imediatamente.

  • O robô continuará a mover-se até que o comando stop seja chamado ou outra função de movimento do sistema de transmissão seja executada.

  • isDone e isMoving não são utilizados com drive porque drive não tem uma distância alvo.

Exemplo

// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();

Comportamento de espera e não espera#

Algumas funções de movimentação em C++ aguardam a conclusão de uma ação antes de avançar para a linha de código seguinte. Outras funções iniciam uma ação e permitem que a linha seguinte seja executada imediatamente.

  • Aguarda - O projeto aguarda até que a função termine.

  • Sem espera - O projeto inicia a função e continua imediatamente para a linha seguinte.

Algumas funções incluem um parâmetro como waitForCompletion para escolher este comportamento. Para estas funções, true geralmente faz o projeto esperar, enquanto false permite que a linha seguinte seja executada imediatamente.

Comandos em Subsecções#

Os comandos C++ estão organizados por dispositivo ou tópico. Por exemplo, os comandos para os dispositivos Brain (Cérebro), Controller (Controlador), Drivetrain (Transmissão), Events (Eventos), Motion (Movimento), Smart Port (Porta Inteligente), Threads (Threads) e Logic (Lógica) são agrupados nas suas próprias subsecções.