Funzione (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Elisione obbligatoria |
|||
Riga 18:
== Funzionamento ==
Quasi tutti i [[linguaggio di programmazione|linguaggi di programmazione]] supportano le funzioni, fornendo una propria sintassi per '''definire''' una funzione, ovvero scriverne il codice,
In generale la sintassi comune della definizione di una funzione prevede:
* un identificativo o '''nome''';
* per [[Tipizzazione forte|linguaggi tipizzati]] un '''[[tipo di ritorno]]''' ovvero una specifica sul [[tipo di dato]] che essa restituirà in output all'utente o ad altre funzioni che la invocano; quando una funzione non restituisce nulla (es. funzioni con tipo
* la specifica (non sempre necessaria) dei cosiddetti '''[[Parametro (programmazione)|parametri]]''' o ''operandi'' i cui valori saranno poi passati in fase di invocazione e su cui la funzione opererà in fase di elaborazione; anche in assenza di parametri il corpo della funzione potrà svolgere la sua elaborazione con altre istruzioni ad esempio agendo sullo stato delle variabili del programma o visualizzando a video qualcosa.
* il '''corpo''' della funzione ovvero il nucleo dell'elaborazione costituita dal blocco, opportunamente delimitato, di una o più istruzioni, ciascuna terminata dal comando di terminazione, [[iterazione|cicli iterativi]], [[selezione (informatica)|strutture condizionali]] ecc., il tutto concluso con la variabile eventualmente ritornata in output. Variabili definite nel blocco saranno necessariamente variabili locali cioè con visibilità solo all'interno del blocco stesso.
Riga 37:
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.
Per conoscere le modalità con cui le dichiarazioni effettuate localmente
=== Parametri formali ed effettivi ===
Riga 61:
==== Variabili globali ====
Il metodo più semplice di passare parametri
==== Passaggio per valore ====
Riga 76:
==== Passaggio per nome ====
Questo meccanismo (nella letteratura in inglese indicato come "''pass by name''"), di difficile realizzazione nei linguaggi compilati, è soprattutto usato nelle [[Macro (informatica)|macro]]. Il passaggio per nome è tuttavia stato usato nell'[[ALGOL|ALGOL 68]] e nel [[Simula]]. A differenza degli altri tipi di passaggio di parametro, in cui viene creato il legame tra il parametro effettivo ed il parametro formale, in questo caso si crea un legame tra il parametro formale
==== Passaggio per condivisione ====
Riga 85:
Una funzione può restituire un valore ([[tipo di dato|tipizzato]]) al chiamante. Questa modalità di passaggio di dati è unidirezionale, dal chiamato al chiamante.
Una chiamata di funzione è quindi un'[[espressione (informatica)|espressione]], che viene valutata per ottenere un valore. La valutazione di
In alcuni linguaggi, il termine '''procedura''' indica una funzione senza valore di ritorno, in altri si usa un tipo di dato apposito, detto<code>void</code>, per il valore restituito, a significare che la funzione non restituisce alcun valore.
|