C++#

A Referência da API VEX V5 C++ explica as classes, objetos, construtores, funções membro e variáveis ​​utilizadas nos projetos VEXcode V5 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 V5. As informações da API C++ também podem ser úteis para projetos escritos no Visual Studio Code com a extensão VEX para Visual Studio Code.

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 recurso, como motor ou drivetrain.

Objeto

Uma instância nomeada criada a partir de uma classe, como por exemplo motor Motor1 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 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 motor pode ser criado fornecendo ao construtor a porta ou a informação de configuração necessária:

motor Motor1 = motor(PORT1, false);

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

Motor1.spin(forward);

No VEXcode, a configuração do dispositivo é normalmente gerada automaticamente pelo Menu de Dispositivos. No Visual Studio Code com a extensão VEX, 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 funções chamam drive, mas a segunda funçã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. For RPM or DPS, the limit is changed by the gear ratio of the drivetrain.

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 600 rpm quando se utiliza rpm) ou de 0 a 3600 graus por segundo quando se utiliza dps. Se não for fornecida qualquer velocidade, o robô deslocar-se-á à velocidade de deslocamento 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 continuará a executar a próxima linha de código imediatamente após a chamada.

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

  • Funções como isDone e isMoving não são aplicáveis ​​a drive, uma vez que não utiliza movimento baseado no 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 Drivetrain, Motors, Controller, Brain, Smart Port, 3-Wire devices, Console, Logic e VEXlink são agrupados nas suas próprias subsecções.