Funzione (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
+fonte
Descrizione: Riorganizzata sezione -template inutile
Riga 23:
Un altro strumento, che talvolta può essere usato al posto di una funzione, anche se con grosse limitazioni è la [[Macro (informatica)|macro]].
 
Per conoscere le modalità con cui le dichiarazioni effettuate localmente a una funzione possano interagire con altre funzioni (o sottoblocchi di codice), è necessario avere una conoscenza approfondita delle modalità con cui l'[[ambiente (programmazione)|ambiente]] viene gestito dallo specifico linguaggio.
=== Variabili locali ===
Una funzione può definire variabili, dette locali, che sono visibili solo durante l'esecuzione di ''una particolare istanza'' della funzione ovvero sono definite e allocate all'interno del blocco o corpo della funzione e sono deallocate al termine dell'esecuzione del blocco stesso o funzione stessa. Se più istanze di una funzione sono in esecuzione contemporaneamente, ciascuna avrà la sua copia di ciascuna variabile locale.
 
=== Parametri ===
Per conoscere le modalità con cui le dichiarazioni effettuate localmente a una funzione possano interagire con altre funzioni (o sottoblocchi di codice), è necessario avere una conoscenza approfondita delle modalità con cui l'[[ambiente (programmazione)|ambiente]] viene gestito dallo specifico linguaggio.
 
==== Parametri formali ed effettivi ====
Quando si parla di passaggio di parametri in senso proprio, si intende una comunicazione diretta tra la funzione chiamante e la funzione chiamata.
 
Riga 43 ⟶ 42:
Poiché parametri diversi di una stessa funzione possono essere passati con meccanismi diversi, nelle descrizioni seguenti si farà riferimento a "un" parametro.
 
==== Passaggio didei parametri ====
 
Il comportamento di una funzione può essere dipendente dai dati che le sono passati come parametri all'atto dell'invocazione; inoltre una funzione può restituire un dato all'uscita.
Riga 49 ⟶ 48:
Esistono diverse modalità di passaggio dei parametri, o di accesso alle strutture definite all'interno del programma stesso: ogni linguaggio, infatti, gestisce il proprio [[ambiente (programmazione)|ambiente]] dipendentemente dalle [[Variabile (informatica)#Visibilità di una variabile|regole di scoping]] che implementa, e di cui è necessario tenere conto.
 
====; Passaggio per valore ====
Con questo meccanismo il valore del parametro effettivo viene copiato nella variabile della funzione chiamata che rappresenta il parametro formale. Se la funzione chiamata lo modifica, la funzione chiamante non potrà vedere questa modifica. Si tratta quindi di un passaggio unidirezionale.
 
====; Passaggio per riferimento ====
Con questo meccanismo la funzione invocata riceve come parametro un [[puntatore (programmazione)|puntatore]] o riferimento al parametro effettivo. Se modifica il parametro passato per indirizzo, la modifica sarà visibile anche alla funzione chiamante. Il passaggio è quindi potenzialmente bidirezionale.
 
=== Valore restituitodi ritorno ===
 
{{vedi anche|Return (informatica)}}
Una funzione può restituire un valore ([[tipo di dato|tipizzato]]) al chiamante. Questa modalità di passaggio di dati è unidirezionale, dal chiamato al chiamante.
 
Riga 64 ⟶ 63:
 
Nei linguaggi funzionali il tipo di dato restituito può essere una funzione, che il chiamante potrà invocare.
 
== Altre proprietà ==
=== Variabili locali ===
Una funzione può definire variabili, dette locali, che sono visibili solo durante l'esecuzione di ''una particolare istanza'' della funzione ovvero sono definite e allocate all'interno del blocco o corpo della funzione e sono deallocate al termine dell'esecuzione del blocco stesso o funzione stessa. Se più istanze di una funzione sono in esecuzione contemporaneamente, ciascuna avrà la sua copia di ciascuna variabile locale.
 
== Implementazione ==