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:
Introdução - Explica o que a classe representa e quando é útil.
Classes Derivadas - Lista quaisquer classes que sejam baseadas nesta classe, se aplicável.
Construtor ou Construtores da Classe - Mostra a sintaxe utilizada para criar um objeto da classe.
Destrutor de Classes - Mostra a sintaxe utilizada para destruir o objeto e libertar os seus recursos, se aplicável.
Parâmetros - Explica os parâmetros do construtor utilizados ao criar o objeto.
Exemplo - Mostra como criar o objeto em código.
Funções-membro - Lista as funções que pertencem à classe, geralmente agrupadas por finalidade.
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 |
Objeto |
Uma instância nomeada criada a partir de uma classe, como |
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 |
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 |
Vocabulário básico de C++#
Termo |
O que significa |
|---|---|
Variável |
Um nome que armazena um valor, como por exemplo |
Tipo |
O tipo de dados que algo armazena, como por exemplo |
Fio |
Texto entre aspas, como |
int |
Um tipo de número inteiro positivo ou negativo, como |
duplo |
Um tipo de número que pode incluir um decimal, como por exemplo |
bool |
Um valor que pode ser |
Discussão |
Um valor passado para uma função membro ou chamada de função, como |
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 |
|---|---|---|
|
|
A direção em que o robô se move: |
|
|
A velocidade de deslocação varia de 0% a 100% quando se utiliza |
|
|
A unidade de velocidade: |
Valor de Retorno
Esta função não devolve qualquer valor.
Notas
A unidade
drivenã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
stopseja chamado ou outra função de movimento do sistema de transmissão seja executada.isDoneeisMovingnão são utilizados comdriveporquedrivenã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.