Comprensione dell'ambito 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.

Bene, devi conoscere la regola dell'ambito: comprendere le idee di "ambito" con {... }

Variabili locali

Osservare l'output generato dal codice di esempio. Dovrebbe essere chiara la differenza principale. Queste sono tutte variabili “locali”, nel suo ambito {...}.

int principale( ) {
int X = 10, Y = 15;
{
  int X = 20;
   {
     int X = 30, Y = 35;
     brain.Screen.printAt(4,30, "3°: %d, %d ", X, Y); 
   }
  	 brain.Screen.printAt(4, 60, "2°: %d, %d", X, Y); 
	}
	brain.Screen.printAt(4, 90, "1°: %d, %d", X, Y);	
	restituisce 0;
}

Produzione:

3°: 30, 35 
2°: 20, 15 
1°: 10, 15

L'esempio sopra viene utilizzato per un chiarimento rapido e semplice. Non utilizzare variabili verticali identiche all'interno di ambiti nidificati.

Che ne dici di mettere le variabili all'esterno del blocco "main()"?

Variabili globali

Mettere le variabili all'esterno del blocco main() , ma non all'interno di altre funzioni, renderà le variabili utilizzabili globalmente da tutte le funzioni del progetto. Queste vengono chiamate variabili globali.

int gValue = 90000; // questo è globale per tutti gli altri ambiti
  
int main() {

  Brain.Screen.setFont(fontType::mono30);
  X = 10;
  {
      int X = 20, gValue = 8000;
      {
         int X = 30, gValue= 700;
         Brain.Screen.printAt(4, 30, " 3°: %d ", gValue + X); 
      }
      Brain.Screen.printAt(4, 60, " 2°: %d ", gValue + X); 
   }
   Brain.Screen.printAt(4, 90, " primo: %d ", gValue + X);
}

Produzione:

3°: 730
2°: 8020 
1°: 90010

La procedura migliore è non utilizzare gli stessi nomi identificatori sia per le variabili globali che per quelle locali.

Attenzione: Tieni presente che ho menzionato: “progetto”, non “file”. Un progetto può essere costituito da più di un file. Tuttavia, all'interno di un singolo progetto, non è possibile avere più di una funzione main(). Ciò esula dallo scopo di questo articolo. Esistono alcune regole aggiuntive come l'utilizzo di "extern" per quanto riguarda le variabili globali. Questo verrà discusso ulteriormente in un'altra sezione riguardante più file all'interno di un singolo progetto all'interno della VEX Library.


Cos'è il "namespace vex"?

Il namespace non rientra necessariamente nella discussione sulle variabili “locali” e “globali” di per sé, poiché il namespace non è una variabile. Tuttavia, “namespace vex” contiene il proprio ambito. Poiché fa parte del codice base del modello che DEVI includere in tutto il tuo programma V5, la regola di ambito per lo spazio dei nomi dovrebbe essere trattata brevemente in questo articolo.

Ogni spazio dei nomi è come uno spazio in cui puoi creare un insieme di variabili, funzioni relative a quel singolo "spazio". Ottieni l'accesso a tutte le variabili, funzioni, classi, ecc. disponibili definite all'interno di questo "spazio".

È possibile cercare lo spazio dei nomi online all'indirizzo https://api.vexcode.cloud/v5/html/. Per una ricerca rapida, puoi anche fare clic con il pulsante destro del mouse su "vex", quindi fare clic su "Vai alla definizione". Troverai moltissime informazioni su ciò che è disponibile nello spazio dei nomi “vex”.

Frammento di codice che illustra i concetti di programmazione nella categoria V5, con esempi di struttura e sintassi del codice a scopo didattico.

Puoi accedere a ognuno di essi facendo: vex::

Ad esempio, fare riferimento al codice del modello:

utilizzando lo spazio dei nomi vex;
vex::cervello Cervello;

Inoltre, qualsiasi nome che includa variabili, funzioni, ecc. dichiarato all'interno di questo spazio “vex” non entrerà in conflitto con un altro “spazio” nel programma.

Ad esempio, puoi decidere di creare "myOwnNamespace" e intitolare una variabile "Brain". Non è consigliabile fare qualcosa del genere, ma il programma lo consentirà. Questo perché è definito all'interno di "myOwnNamespace".

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

Last Updated: