C funzioni à scope di variabili
Per questo motivo il parametro di una function può avere lo stesso nome del parametro effettivo del processo chiamante.
Possiamo definire anche delle variabili globali e delle costanti globali: esse vanno dichiarate all’esterno di qualsiasi function, compreso il main.
Il loro scope comprende tutto il programma sorgente in cui è presente.
Se una variabile v viene definita come globale e poi dichiarata nuovamente locale in una funzione, si dice che
la variabile locale v nasconde la variabile globale v.
C funzioni à visibilità di variabili
int v=2;
void f( int a) { int v = 4;
printf("in foo v = %d \n”,v);
}
main () {
printf("in main v = %d \n”,v);
{ int v = 3;
printf("in parentesi v = %d \n”,v);
foo(v);
} return 0;
}
C funzioni à scope di variabili
Un side-effect è la modifica nel corpo di una funzione di una variabile globale
Una funzione non dovrebbe avere side-effect:
Una funzione dovrebbe avere la caratteristica che, al suo ritorno alla
programma chiamante, i soli valori modificati sono i parametri passati per riferimento
I side effect sono spesso origine di errori difficili da individuare
In un programma è buona norma dichiarare una costante come globale
ogni tentativo di modificarne il valore causa un errore di compilazione
Esempio: definire le dimensioni di array come costanti globali all’inizio del
programma rende più facile ritrovarle per la modifica in un secondo
momento
Semplici regole per la scrittura di buoni programmi
Tutte le variabili globali possono essere richiamate da ogni funzione o procedura ma non è consigliabile utilizzare le variabili globali così che ogni procedura è autosufficiente
• Non ha bisogno di altre variabili oltre le locali e quelle di input/output assegnate nella lista dei parametri formali.