C++#

Η αναφορά VEX IQ (1ης γενιάς) C++ API εξηγεί τις κλάσεις, τα αντικείμενα, τους κατασκευαστές, τις συναρτήσεις-μέλη και τις μεταβλητές που χρησιμοποιούνται σε έργα VEXcode C++.

Χρησιμοποιήστε αυτήν την αναφορά όταν θέλετε να κατανοήσετε πώς δημιουργείται μια συσκευή ή ένα χαρακτηριστικό, να ελέγξετε ποια υπογραφή συνάρτησης να χρησιμοποιήσετε ή να συγκρίνετε σχετικές συναρτήσεις-μέλη σε μια κλάση.

Οι εντολές C++ χρησιμοποιούνται σε έργα VEXcode IQ C++. Οι σελίδες C++ οργανώνονται διαφορετικά από τις σελίδες Blocks, επειδή πολλές εντολές ανήκουν σε μια κλάση. Μια σελίδα μπορεί πρώτα να εξηγήσει την κλάση και τον τρόπο δημιουργίας ενός αντικειμένου και στη συνέχεια να απαριθμήσει τις συναρτήσεις-μέλη που μπορούν να κληθούν σε αυτό το αντικείμενο.

Πώς να διαβάσετε μια σελίδα κλάσης C++#

Μια σελίδα κλάσης C++ συνήθως ακολουθεί την εξής σειρά:

  1. Εισαγωγή - Εξηγεί τι αντιπροσωπεύει η κλάση και πότε είναι χρήσιμη.

  2. Παράγωγες Κλάσεις - Παραθέτει τυχόν κλάσεις που βασίζονται σε αυτήν την κλάση, εάν υπάρχουν.

  3. Κατασκευαστής ή Κατασκευαστές Κλάσης - Εμφανίζει τη σύνταξη που χρησιμοποιείται για τη δημιουργία ενός αντικειμένου από την κλάση.

  4. Καταστροφέας Κλάσης - Εμφανίζει τη σύνταξη που χρησιμοποιείται για την καταστροφή του αντικειμένου και την απελευθέρωση των πόρων του, εάν υπάρχει.

  5. Παράμετροι - Εξηγεί τις παραμέτρους του κατασκευαστή που χρησιμοποιούνται κατά τη δημιουργία του αντικειμένου.

  6. Παράδειγμα - Δείχνει πώς να δημιουργήσετε το αντικείμενο σε κώδικα.

  7. Συναρτήσεις-Μέλη - Παραθέτει τις συναρτήσεις που ανήκουν στην κλάση, συχνά ομαδοποιημένες κατά σκοπό.

  8. Εισαγωγές Συνάρτησης - Εξηγεί κάθε συνάρτηση-μέλος, συμπεριλαμβανομένων των διαθέσιμων συναρτήσεων, παραμέτρων, τιμών επιστροφής, σημειώσεων και παραδειγμάτων.

Δεν έχουν κάθε σελίδα όλες τις ενότητες. Για παράδειγμα, ορισμένες σελίδες δεν περιλαμβάνουν παράγωγες κλάσεις και ορισμένες συναρτήσεις δεν έχουν παραμέτρους ή τιμές επιστροφής.

Κοινά στοιχεία API C++#

Στοιχείο

Τι σημαίνει

Τάξη

The C++ type for a device or feature, such as bumper or drivetrain.

Αντικείμενο

A named instance created from a class, such as bumper Bumper1 or drivetrain myDrivetrain.

Κατασκευαστής

Ο κώδικας που χρησιμοποιείται για τη δημιουργία ενός αντικειμένου από μια κλάση.

Συνάρτηση μέλους

A command called on an object, such as myDrivetrain.drive(…).

Διαθέσιμη λειτουργία

Μία ακριβής υπογραφή συνάρτησης που μπορεί να χρησιμοποιηθεί για μια συνάρτηση-μέλος. Ορισμένες συναρτήσεις-μέλη έχουν περισσότερες από μία διαθέσιμες συναρτήσεις.

Παράμετρος

Μια τιμή που μεταβιβάζεται σε έναν κατασκευαστή ή συνάρτηση για να ελέγχει τι κάνει.

Επιστρεφόμενη τιμή

A value a function gives back, such as bool, int32_t, or double.

Βασικό λεξιλόγιο C++#

Ορος

Τι σημαίνει

Μεταβλητός

A name that stores a value, such as int speed = 50;.

Τύπος

The kind of data something stores, such as int, double, or bool.

Σειρά

Text inside quotes, such as “Hello”.

int

A positive or negative whole number type, such as 90.

διπλό

A number type that can include a decimal, such as 25.5.

μπουλ

A value that is either true or false.

Επιχείρημα

A value passed into a member function or function call, such as forward in myDrivetrain.drive(forward).

Κατασκευαστές και Αντικείμενα#

Πριν χρησιμοποιήσετε συναρτήσεις-μέλη από πολλές κλάσεις C++, πρέπει να υπάρχει ένα αντικείμενο. Ο κατασκευαστής δείχνει πώς να δημιουργήσετε αυτό το αντικείμενο.

Για παράδειγμα, ένα αντικείμενο Bumper Switch μπορεί να δημιουργηθεί δίνοντας στον κατασκευαστή την Έξυπνη Θύρα όπου είναι συνδεδεμένος ο αισθητήρας:

bumper Bumper1 = bumper(PORT1);

Αφού δημιουργηθεί το αντικείμενο, οι συναρτήσεις-μέλη του μπορούν να κληθούν:

Bumper1.pressing();

Στο VEXcode, η διαμόρφωση της συσκευής συχνά δημιουργείται αυτόματα από το Μενού Συσκευής. Στο VS Code, οι κατασκευαστές ενδέχεται να χρειαστεί να γραφτούν χειροκίνητα.

Επιλογή της σωστής διαθέσιμης λειτουργίας#

Ορισμένες συναρτήσεις-μέλη έχουν περισσότερες από μία διαθέσιμες συναρτήσεις. Κάθε συνάρτηση χρησιμοποιεί ένα διαφορετικό σύνολο παραμέτρων, επομένως επιλέξτε αυτήν που ταιριάζει με τις τιμές που πρέπει να παρέχει το έργο σας.

Για παράδειγμα, μια συνάρτηση συστήματος μετάδοσης κίνησης μπορεί να έχει μία έκδοση που χρησιμοποιεί την τρέχουσα ταχύτητα και μια άλλη έκδοση που επιτρέπει στο έργο να επιλέξει μια ταχύτητα:

void drive(directionType dir);

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

Both versions call drive, but the second version gives more control because it includes velocity parameters.

Παράδειγμα καταχώρησης συνάρτησης#

οδηγώ#

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

Διαθέσιμες λειτουργίες

void drive(directionType dir);

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

Παράμετρος

Τύπος

Περιγραφή

dir

directionType

The direction the robot moves: forward or reverse.

velocity

double

The velocity to drive with from 0% to 100% when using velocityUnits::pct, from 0 to 120 rpm when using rpm, or from 0 to 720 degrees per second when using dps. If no velocity is provided, the robot drives at the current drive velocity.

units

velocityUnits

The velocity unit: velocityUnits::pct (percent), rpm (rotations per minute), or dps (degrees per second).

Επιστρεφόμενη τιμή

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Σημειώσεις

  • drive is non-waiting. The project will run the next line of code right away.

  • The robot will continue to move until stop is called or another drivetrain movement function runs.

  • isDone and isMoving are not used with drive because drive does not have a target distance.

Παράδειγμα

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

Συμπεριφορά αναμονής και μη αναμονής#

Ορισμένες συναρτήσεις κίνησης C++ περιμένουν μέχρι να ολοκληρωθεί μια ενέργεια προτού το έργο μετακινηθεί στην επόμενη γραμμή κώδικα. Άλλες συναρτήσεις ξεκινούν μια ενέργεια και επιτρέπουν στην επόμενη γραμμή να εκτελεστεί αμέσως.

  • Αναμονή - Το έργο περιμένει μέχρι να ολοκληρωθεί η λειτουργία.

  • Μη αναμονή - Το έργο ξεκινά τη συνάρτηση και συνεχίζει αμέσως στην επόμενη γραμμή.

Some functions include a parameter such as waitForCompletion to choose this behavior. For those functions, true usually makes the project wait, while false lets the next line run right away.

Εντολές σε υποενότητες#

Οι εντολές C++ οργανώνονται ανά συσκευή ή θέμα. Για παράδειγμα, οι εντολές για τον εγκέφαλο, τον ελεγκτή, το σύστημα μετάδοσης κίνησης, τα συμβάντα, την κίνηση, τις συσκευές Smart Port, τα νήματα και τη λογική ομαδοποιούνται σε δικές τους υποενότητες.