C++#
La documentation de référence de l’API VEX IQ (1ère génération) C++ explique les classes, les objets, les constructeurs, les fonctions membres et les variables utilisés dans les projets VEXcode C++.
Utilisez cette référence lorsque vous souhaitez comprendre comment un appareil ou une fonctionnalité est créé(e), vérifier quelle signature de fonction utiliser ou comparer des fonctions membres apparentées dans une classe.
Les commandes C++ sont utilisées dans les projets VEXcode IQ C++. Les pages C++ sont organisées différemment des pages de blocs, car de nombreuses commandes appartiennent à une classe. Une page peut commencer par expliquer la classe et comment créer un objet, puis lister les fonctions membres qui peuvent être appelées sur cet objet.
Comment lire une page de classe C++#
Une page de classe C++ suit généralement cet ordre :
Introduction - Explique ce que représente cette classe et quand elle est utile.
Classes dérivées - Liste toutes les classes qui sont basées sur cette classe, le cas échéant.
Constructeur ou constructeurs de classe - Indique la syntaxe utilisée pour créer un objet à partir de la classe.
Destructeur de classe - Indique la syntaxe utilisée pour détruire l’objet et libérer ses ressources, le cas échéant.
Paramètres - Explique les paramètres du constructeur utilisés lors de la création de l’objet.
Exemple - Montre comment créer l’objet par le code.
Fonctions membres - Liste les fonctions appartenant à la classe, souvent regroupées par objectif.
Entrées de fonction - Explique chaque fonction membre, y compris les fonctions disponibles, les paramètres, les valeurs de retour, les notes et les exemples.
Toutes les pages ne contiennent pas toutes les sections. Par exemple, certaines pages n’incluent pas les classes dérivées, et certaines fonctions n’ont ni paramètres ni valeurs de retour.
Éléments communs de l’API C++#
Élément |
Ce que cela signifie |
|---|---|
Classe |
Le type C++ d’un périphérique ou d’une fonctionnalité, tel que |
Objet |
Une instance nommée créée à partir d’une classe, telle que |
Constructeur |
Le code utilisé pour créer un objet à partir d’une classe. |
Activité réservée aux membres |
Une commande appelée sur un objet, tel que |
Fonction disponible |
Une seule signature de fonction peut être utilisée pour une fonction membre. Certaines fonctions membres possèdent plusieurs signatures possibles. |
Paramètre |
Une valeur passée à un constructeur ou à une fonction pour contrôler son comportement. |
Valeur de retour |
Une valeur renvoyée par une fonction, telle que |
Vocabulaire de base du C++#
Terme |
Ce que cela signifie |
|---|---|
Variable |
Un nom qui stocke une valeur, comme |
Taper |
Le type de données que quelque chose stocke, comme |
Chaîne |
Texte entre guillemets, comme |
int |
Un type de nombre entier positif ou négatif, tel que |
double |
Un type de nombre pouvant inclure une décimale, tel que |
bool |
Une valeur qui est soit |
Argument |
Une valeur passée à une fonction membre ou à un appel de fonction, comme |
Constructeurs et objets#
Avant d’utiliser les fonctions membres de nombreuses classes C++, un objet doit exister. Le constructeur indique comment créer cet objet.
Par exemple, un objet Bumper Switch peut être créé en fournissant au constructeur le Smart Port auquel le capteur est connecté :
bumper Bumper1 = bumper(PORT1);
Une fois l’objet créé, ses fonctions membres peuvent être appelées :
Bumper1.pressing();
Dans VEXcode, la configuration des périphériques est souvent générée automatiquement par le menu « Périphériques ». Dans VS Code, il peut être nécessaire d’écrire les constructeurs manuellement.
Choisir la fonction disponible appropriée#
Certaines fonctions membres proposent plusieurs options. Chaque option utilise un ensemble de paramètres différent ; choisissez donc celle qui correspond aux valeurs requises par votre projet.
Par exemple, une fonction de transmission peut avoir une version qui utilise la vitesse actuelle et une autre version qui permet au projet de choisir une vitesse :
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Les deux versions appellent drive, mais la seconde version offre plus de contrôle car elle inclut des paramètres de vélocité.
Exemple de saisie de fonction#
conduire#
La commande drive fait avancer ou reculer le robot indéfiniment. Le robot continuera à se déplacer jusqu’à ce qu’une autre action, comme tourner ou s’arrêter, lui soit donnée.
Fonctions disponibles
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La direction dans laquelle le robot se déplace : |
|
|
La vitesse de déplacement peut être de 0 % à 100 % avec |
|
|
L’unité de vitesse : |
Valeur de retour
Cette fonction ne renvoie aucune valeur.
Remarques
Le lecteur
driven’est pas en attente. Le projet exécutera immédiatement la ligne de code suivante.Le robot continuera à se déplacer jusqu’à ce que l’arrêt
stopsoit appelé ou qu’une autre fonction de mouvement de la transmission soit exécutée.isDoneetisMovingne sont pas utilisés avecdrivecardriven’a pas de distance cible.
Exemple
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
Comportements d’attente et de non-attente#
Certaines fonctions de déplacement en C++ attendent la fin d’une action avant de passer à la ligne de code suivante. D’autres fonctions lancent une action et permettent l’exécution immédiate de la ligne suivante.
En attente - Le projet attend que la fonction se termine.
Sans attente - Le projet lance la fonction et passe immédiatement à la ligne suivante.
Certaines fonctions incluent un paramètre tel que waitForCompletion pour choisir ce comportement. Pour ces fonctions, true fait généralement patienter le projet, tandis que false permet à la ligne suivante de s’exécuter immédiatement.
Commandes dans les sous-sections#
Les commandes C++ sont organisées par périphérique ou par sujet. Par exemple, les commandes relatives au cerveau, au contrôleur, à la transmission, aux événements, au mouvement, aux ports intelligents, aux threads et à la logique sont regroupées dans des sous-sections distinctes.