Comprensione della sintassi per creare funzioni in VEXcode Pro V5

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 nome-funzione() {

	Dichiarazioni di variabili, ecc.
	Espressioni...
	//non è necessaria alcuna restituzione esplicita.
}

Una funzione non restituisce alcun valore speciale, né alcun parametro in entrata.

void nome-funzione(variabile del tipo di dati) {

	Dichiarazioni di variabili, ecc.
	Espressioni...
	//non è necessaria alcuna restituzione esplicita.
}

Se desideri più variabili, utilizza semplicemente "," come delimitatore:

Una funzione non restituisce alcun valore speciale, ma con un parametro.

void nome-funzione(variabile del tipo di dati, variabile del tipo di dati, ecc.) {

	Dichiarazioni di variabili, ecc.
	Espressioni...
	//non è necessaria alcuna restituzione esplicita.
}

Una funzione non restituisce alcun valore speciale, ma con più di un parametro.

void nome-funzione(variabile del tipo di dati, variabile del tipo di dati, ecc.) {

	Dichiarazioni di variabili, ecc.
	Espressioni...
	return valore-ritorno
}

Una funzione restituisce un valore di un tipo di dati specifico e con più di un parametro di input.

Il tiporeturndi una funzione deve essere uguale al tipo di dati del valore restituito dalla funzione. Il valore restituitopuò 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".

Creare una funzione prima di main() o dopo?

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'

 Screenshot dell'interfaccia di programmazione VEXcode V5 che mostra vari blocchi di codifica e opzioni per la programmazione dei sistemi VEX Robotics, illustrando le funzionalità disponibili per gli utenti nella sezione di programmazione.

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;
    = b;
    b = resto;
  }
  restituisce a;
}


int main() {
	Brain.Screen.printAt(5,60, “GCD ( %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, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

int getGCD(int a, int b) {
  int resto = 1;
  while (resto > 0) {
    resto = a % b;
    = b;
    b = resto;
  }
  restituisce a;
}
	

Metti il ​​prototipo (chiamato anche firma) della funzione prima del "blocco funzione chiamante".


Cosa succede se desideri 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:

Screenshot di un'interfaccia di programmazione che mostra le funzionalità della categoria V5, inclusi frammenti di codice e strumenti per gli sviluppatori, che illustrano le funzionalità disponibili nella sezione di programmazione.

Screenshot dei contenuti relativi alla programmazione nella descrizione della categoria V5, che illustrano le caratteristiche e le funzionalità principali per gli sviluppatori.

Screenshot della descrizione della categoria Programmazione V5, che illustra le caratteristiche e le funzionalità principali relative alla programmazione nella piattaforma V5.

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

Screenshot di un'interfaccia di programmazione che mostra varie opzioni e funzionalità di codifica, illustrando la funzionalità e il layout della descrizione della categoria V5 nella sezione di programmazione.

//questo è il file common.cpp

int getGCD(int a, int b) {
  int resto = 1;
  while (resto > 0) {
    resto = a % b;
    = b;
    b = resto;
  }
  restituisce a;
}

Sposta la funzione getGCD(...) in questo file

#include "vex.h"
#include "common.h"
utilizzando lo spazio dei nomi vex;

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(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

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: