Sei sulla pagina 1di 9

Laboratorio di Programmazione 1

Docente: dr Damiano Macedonio Lezione 14 30/01/2014

Funzioni: Variabili Locali e Globali

Le variabili definite allinterno di una funzione sono dette locali.


Il

valore di una variabile locale pu essere utilizzato solo allinterno della funzione in cui la variabile definita.

Le variabili definite allesterno di qualsiasi funzione dette globali.


Il

valore di una variabile globale pu essere utilizzato da qualsiasi funzione del progra a: qualsiasi funzione pu odificarne il valore. Le variabili globali sono definite per pri e nel progra a.

Funzioni: Variabili Locali e Globali


#include <stdio.h> int multiplier; // variabile globale inizializzata a 0

int mult( int a ){ return a * multiplier;

// uso della variabile globale

void change!ultiplier( int m ){ multiplier " multiplier # m;

// modi$ica variabile globale

int main( void ){ int a " %; change!ultiplier( &0 ); print$( '(i * (i " (i)* a* multiplier* mul( a ) ); // %*&0 change!ultiplier( + ); print$( '(i * (i " (i)* a* multiplier* mul( a ) ); // %*&+ return 0;

Funzioni: Variabili Locali e Globali

Le variabili globali possono essere utilizzate nei progra i in cui pi! funzioni devono accedere al valore di una stessa variabile.
"er

ette di evitare il passaggio esplicito di un para etro. Li ita la leggibilit# del progra a. $iduce la genericit# della funzione.

Valore di default:
Il

valore di default di una variabile globale zero

int a% && la variabile a inizializzata a ' int arra()*'+ && tutti gli ele enti sono inizializzati a zero.
Le

variabili locali non ,anno un valore iniziale di default e quindi devono essere esplicita ente inizializzate nel progra a.

Funzioni: Variabili -uto atic,e e .tatic,e

Le variabili locali dic,iarate allinterno di una funzione sono dette automatiche:


/na

variabile auto atica creata ogni volta c,e la funzione viene creata. 0uando la funzione ter ina1 queste variabili 2sco paiono3.

Le variabili locali possono essere dic,iarate static,e1 usando la parola c,iave static davanti alla dic,iarazione della variabile.
/na

variabile locale statica creata una sola volta quando viene avviato il progra a principale. 0uando la funzione ter ina1 la variabile antiene il suo valore per una prossi a invocazione della funzione. Le variabili locali static,e ,anno una valore di default pari a zero.

Funzioni: Variabili -uto atic,e e .tatic,e


#include <stdio.h> void auto,static( void ){ int a " &; static int b " &; // variabile statica print$( '-ariabile automatica. (i* variabile statica. (i)* a* b ); a " a#&; b " b#&;

int main( void ){ int i; $or( i " 0 ; i < &0; i## ){ auto,static(); // a sempre &* b valore da & a &0 return 0;
6

Funzioni: Variabili -uto atic,e e .tatic,e

Le variabili static,e sono usate per antenere il valore di una variabile tra diverse invocazioni della stessa funzione. Le variabili static,e sono particolar ente utili quando una funzione usa una variabile il cui valore viene i postato una sola volta e non ca bia pi!.
.i

evita line4cienza di dover reinizializzare la variabile ogni volta. 0uesto particolar ente utile con gli arra(.
7

Funzioni $icorsive

/na funzione detta ricorsiva se include una c,ia ata a s5 stessa. Le funzioni ricorsive sono utili quando la soluzione di un proble a pu essere ottenuta applicando successiva ente la stessa soluzione a sotto6proble i pi! piccoli.

Funzioni $icorsive
#include <stdio.h> int $actorial( int n ){ int result; i$( n "" 0 ){ // caso base result " &; else { // passo ricorsivo result " n * factorial( n 1 ); return result;

-nc,e se viene c,ia ata la stessa funzione1 considerata co e una c,ia ata ad una funzione distinta: la funzione acquisisce il suo insie e di para etri for ali e variabili locali.

int main( void ){ int i; $or( i " 0; i < &&; i## ){ print$( '/l $attoriale di (i e0 (i.1n)* i* $actorial(i) ); return 0;

Potrebbero piacerti anche