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.
Definizione della funzione
Ora che abbiamo esaminato alcuni esempi, diamo un'occhiata alla forma generale di una definizione di funzione:
void function-name() {
Dichiarazioni di variabili, ecc.
Espressioni...
//non è necessario un ritorno esplicito.
}
Una funzione non restituisce alcun valore speciale, né alcun parametro in entrata.
void function-name(data-type variable) {
Dichiarazioni di variabili, ecc.
Espressioni...
//non è necessario un ritorno esplicito.
}
Se si desiderano più variabili, è sufficiente utilizzare "," come delimitatore:
Una funzione non restituisce alcun valore speciale, ma con un parametro.
void function-name(variabile di tipo dati, variabile di tipo dati, ecc.) {
Dichiarazioni di variabili, ecc.
Espressioni...
//non è necessario un ritorno esplicito.
}
Una funzione non restituisce alcun valore speciale, ma con più di un parametro.
void function-name(variabile di tipo dati, variabile di tipo dati, ecc.) {
Dichiarazioni di variabili, ecc.
Espressioni...
restituisci valore di ritorno
}
Una funzione restituisce un valore di un tipo di dati specifico e con più di un parametro di input.
Il tiporitornodi una funzione deve essere uguale al tipo di dati del valore restituito dalla funzione stessa. Il valore di ritornopuò essere un valore costante o una variabile. Deve essere preceduto dalla parola chiave “return.”
Le seguenti regole regolano la tipologia di reso:
- Non ci sono quasi restrizioni sul tipo restituito, ad eccezione dell'array. (Array è un altro argomento più avanzato su come creare i tuoi dati. Non rientra nell'ambito di questo articolo e non verrà trattato qui.
- Specificare che il tipo restituito "void" significa che non è necessario alcun valore restituito. La clausola “ritorno” è implicita. Ciò significa che devi dichiarare esplicitamente "return" alla fine di una funzione "void".
È meglio creare la funzione prima o dopo la funzione main()?
Il compilatore legge il file dall'alto verso il basso. Pertanto, l’ordine ha importanza.
Prendiamo come esempio la semplice funzione del massimo comune denominatore (MCD). Riceverai un errore:utilizzo dell'identificatore non dichiarato 'getGCD'
In realtà questo è vero sia che provenga dal main() o da un altro blocco funzione chiamante, cioè il "blocco funzione chiamato" deve precedere il "blocco funzione chiamante".
Due possibili soluzioni:
int getGCD(int a, int b) {
int resto = 1;
while (resto > 0) {
resto = a % b;
a = b;
b = resto;
}
return a;
}
int main() {
Brain.Screen.printAt(5,60, “MCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
Spostare la "funzione chiamata" sopra il "blocco funzione chiamante", nell'esempio "main()".
int getGCD(int, int);
int main() {
Brain.Screen.printAt(5,60, "MCD ( %d, %d ) = %d", getGCD(60, 100) );
}
int getGCD(int a, int b) {
int resto = 1;
while (resto > 0) {
resto = a % b;
a = b;
b = resto;
}
return a;
}
Metti il prototipo (chiamato anche firma) della funzione prima del "blocco funzione chiamante".
E se voleste modularizzare le funzioni in file diversi?
Passaggio 1: crea un file di intestazione e inserisci il prototipo della funzione in questo file.
ad esempio, crea un file chiamato "myFuncs.h"
Devi "aggiungere" questo file di intestazione al tuo progetto prima di compilare il codice. Ciò consente all'IDE VEXcode Pro V5 di "essere consapevole" dell'inclusione di questo nuovo file di intestazione prima di iniziare a creare il tuo progetto.
Ecco come:



In questo file di intestazione "common.h" (puoi nominare quello che vuoi, purché sia alfanumerico senza spazi.)
Passaggio 2: creare un file cpp separato, ad esempio chiamato common.cpp

//Questo è il file common.cpp
int getMCD(int a, int b) {
int resto = 1;
while (resto > 0) {
resto = a % b;
a = b;
b = resto;
}
return a;
}
Sposta la funzione getGCD(...) in questo file
#include "vex.h"
#include "common.h"
using namespace vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "MCD ( %d, %d ) = %d", getMCD(60, 100) );
}
Ora, tutto ciò che hai nel file cpp principale sarà composto da quanto segue
Riferimento:https://api.vexcode.cloud/v5/html/namespacevex.html
Gli argomenti futuri verranno trattati in futuro nelle sezioni più avanzate della Libreria VEX:
- Passaggio per valore e passaggio per riferimento
- Passa in un array
- Passare in una struttura