The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
Ορισμός συνάρτησης
Τώρα που έχουμε εξετάσει μερικά δείγματα, ας δούμε τη γενική μορφή ενός ορισμού συνάρτησης:
void function-name() {
Δηλώσεις μεταβλητών, κ.λπ.
Εκφράσεις...
//δεν απαιτείται ρητή επιστροφή.
}
Μια συνάρτηση δεν επιστρέφει καμία ειδική τιμή, ούτε εισερχόμενες παραμέτρους.
void function-name(data-type variable) {
Δηλώσεις μεταβλητών, κ.λπ.
Εκφράσεις...
//δεν απαιτείται ρητή επιστροφή.
}
Αν θέλετε πολλαπλές μεταβλητές, απλώς χρησιμοποιείτε "," ως οριοθέτη:
Μια συνάρτηση δεν επιστρέφει ειδική τιμή, αλλά με μία παράμετρο.
void function-name(μεταβλητή τύπου δεδομένων, μεταβλητή τύπου δεδομένων, κ.λπ.) {
Δηλώσεις μεταβλητών, κ.λπ.
Εκφράσεις...
//δεν απαιτείται ρητή επιστροφή.
}
Μια συνάρτηση δεν επιστρέφει ειδική τιμή, αλλά με περισσότερες από μία παραμέτρους.
void function-name(μεταβλητή τύπου δεδομένων, μεταβλητή τύπου δεδομένων, κ.λπ.) {
Δηλώσεις μεταβλητών, κ.λπ.
Εκφράσεις...
επιστροφή τιμής επιστροφής
}
Μια συνάρτηση επιστρέφει μια τιμή ενός συγκεκριμένου τύπου δεδομένων και με περισσότερες από μία παραμέτρους εισόδου.
Ο τύποςπου επιστρέφειμιας συνάρτησης πρέπει να είναι ο ίδιος με τον τύπο δεδομένων της τιμής επιστροφής που επιστρέφει η συνάρτηση. Η τιμή επιστροφήςμπορεί να είναι μια σταθερή τιμή ή μια μεταβλητή. Πρέπει να προηγείται η λέξη-κλειδί "return.".
Οι ακόλουθοι κανόνες διέπουν τον τύπο επιστροφής:
- Δεν υπάρχουν σχεδόν καθόλου περιορισμοί στον τύπο επιστροφής, εκτός από τον πίνακα. (Ο πίνακας είναι ένα άλλο πιο προηγμένο θέμα σχετικά με τον τρόπο δημιουργίας των δεδομένων σας.) Είναι εκτός του πεδίου εφαρμογής αυτού του άρθρου και δεν θα καλυφθεί εδώ.
- Ο καθορισμός ότι ο τύπος επιστροφής "void" σημαίνει ότι δεν υπάρχει τιμή επιστροφής είναι απαραίτητος. Η πρόταση «επιστροφή» είναι έμμεση. Αυτό σημαίνει ότι πρέπει να δηλώσετε ρητά την λέξη "return" στο τέλος μιας συνάρτησης "void".
Δημιουργία συνάρτησης πριν ή μετά την main();
Ο μεταγλωττιστής διαβάζει το αρχείο σας από πάνω προς τα κάτω. Έτσι, η σειρά έχει σημασία.
Ας πάρουμε ως παράδειγμα την απλή συνάρτηση Μέγιστου Κοινού Παρονομαστή (ΜΚΠ). Θα λάβετε ένα σφάλμα:χρήση μη δηλωμένου αναγνωριστικού 'getGCD'
Στην πραγματικότητα αυτό ισχύει είτε προέρχεται από το main() είτε από άλλο μπλοκ συνάρτησης κλήσης, δηλαδή το "κληθέν μπλοκ συνάρτησης" πρέπει να προηγείται του "κληθέντος μπλοκ συνάρτησης".
Δύο πιθανές λύσεις:
int getGCD(int a, int b) {
int υπόλοιπο = 1;
ενώ (υπόλοιπο > 0) {
υπόλοιπο = a % b;
a = b;
b = υπόλοιπο;
}
return a;
}
int main() {
Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
Μετακινήστε την «καλούμενη συνάρτηση» πάνω από το «κλήση μπλοκ συνάρτησης», στο παράδειγμα «main().»
int getGCD(int, int);
int main() {
Brain.Screen.printAt(5,60, "GCD( %d, %d ) = %d", getGCD(60, 100));
}
int getGCD(int a, int b) {
int υπόλοιπο = 1;
ενώ (υπόλοιπο > 0) {
υπόλοιπο = a % b;
a = b;
b = υπόλοιπο;
}
return a;
}
Τοποθετήστε το πρωτότυπο (που ονομάζεται επίσης υπογραφή) της συνάρτησης πριν από το "κλήση του μπλοκ συνάρτησης".
Τι γίνεται αν θέλετε να αρθρώσετε συναρτήσεις σε διαφορετικά αρχεία;
Βήμα 1: Δημιουργήστε ένα αρχείο κεφαλίδας και τοποθετήστε το πρωτότυπο της συνάρτησης σε αυτό το αρχείο.
π.χ. δημιουργήστε ένα αρχείο με όνομα “myFuncs.h”
Πρέπει να «προσθέσετε» αυτό το αρχείο κεφαλίδας στο έργο σας πριν από τη μεταγλώττιση του κώδικά σας. Αυτό επιτρέπει στο VEXcode Pro V5 IDE «να γνωρίζει» την συμπερίληψη αυτού του νέου αρχείου κεφαλίδας πριν ξεκινήσει την κατασκευή του έργου σας.
Δείτε πώς:



Σε αυτό το αρχείο κεφαλίδας "common.h" (μπορείτε να ονομάσετε ό,τι θέλετε, αρκεί να είναι αλφαριθμητικό χωρίς κενά.)
Βήμα 2: Δημιουργήστε ένα ξεχωριστό αρχείο cpp, π.χ., με το όνομα common.cpp

//αυτό είναι το αρχείο common.cpp
int getGCD(int a, int b) {
int υπόλοιπο = 1;
while (υπόλοιπο > 0) {
υπόλοιπο = a % b;
a = b;
b = υπόλοιπο;
}
return a;
}
Μετακινήστε τη συνάρτηση getGCD(...) σε αυτό το αρχείο
#include "vex.h"
#include "common.h"
χρησιμοποιώντας χώρο ονομάτων vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100));
}
Τώρα, όλα όσα έχετε στο κύριο αρχείο cpp θα αποτελούνται από τα εξής
Αναφορά:https://api.vexcode.cloud/v5/html/namespacevex.html
Μελλοντικά θέματα θα καλυφθούν σε πιο προηγμένες ενότητες της Βιβλιοθήκης VEX στο μέλλον:
- Μεταβίβαση βάσει τιμής έναντι μεταβίβασης βάσει αναφοράς
- Μεταβίβαση σε έναν πίνακα
- Πέρασμα σε μια δομή