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 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'

 L'editor di codice VEXcode Pro V5 mostra la funzione principale che chiama getGCD prima della sua definizione, con getGCD evidenziato come errore di identificatore non dichiarato.

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:

Interfaccia di VEXcode Pro V5 con menu contestuale della cartella "Includi" aperto e opzione "Nuovo file" selezionata per creare un file di intestazione.

Nella finestra "Crea nuovo file" è selezionata l'opzione per i file di intestazione C++ e il nome del file è common.h.

L'editor di codice VEXcode Pro V5 mostra la funzione getGCD definita in un file common.cpp separato.

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

Finestra Crea nuovo file che mostra l'opzione file sorgente C++ selezionata con il nome file common.cpp inserito.

//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

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

Last Updated: