| Home / Indice sezione | www.icosaedro.it | ![]() |
|
| |||
| Frontespizio Introduzione Caratteristiche Un semplice esempio Moduli Sezione IMPORT Sezione CONST Sezione TYPE Tipo FORWARD Sezione VAR Sezione FUNCTION Sezione BEGIN Stringhe letterali Sottostringhe Commenti Costanti predefinite Variabili predefinite Funzioni predefinite Istruzione di assegnamento Istruzione per la chiamata di funzione Ordine di valutazione degli argomenti attuali Istruzione IF Istruzione SWITCH Istruzione FOR Istruzione WHILE Istruzione REPEAT Istruzione LOOP Istruzione TRY Istruzione RAISE ERROR Istruzione RETURN Espressioni logiche Espressioni intere Espressioni reali Espressioni stringa Espressioni tra tipi strutturati Regole di scope M2 per programmatori C M2 per programmatori Java Rappresentazione dei dati in memoria Keywords Messaggi di errore a runtime Sintassi | Sezione FUNCTIONLa dichiarazione della funzione permette di dichiarare il nome della funzione, i suoi argomenti e il tipo del valore ritornato. Nei DEFINITION MODULE questo completa la funzione. Le parentesi tonde delimitano l'elenco degli argomenti, e devono essere presenti anche se la funzione non prevede argomenti. Se la funzione ritorna un valore, il suo tipo deve essere specificato. Le funzioni che non ritornano un valore sono più propriamente dette procedure. Negli IMPLEMENTATION MODULE e nei MODULE alla dichiarazione della funzione deve seguire il corpo, costituito dalle sezioni CONST, TYPE, VAR e FUNCTION. Le costanti, i tipi, le variabili e le funzioni dichiarati all'interno della funzione sono accessibili solo dalla funzione stessa. Le variabili esistono e vengono inizializzate al loro valore default ogni volta che la funzione viene richiamata. In questo esempio di funzione gli argomenti sono il nome e il cognome di un membro del personale, e il valore di ritorno è un dato di tipo Persona. Se il dato non viene trovato, la funzione potrebbe ritornare il valore NIL.
La funzione può disporre delle proprie sezioni CONST, TYPE, VAR e FUNCTION. Gli argomenti di tipo semplice BOOLEAN, INTEGER, REAL sono passati per valore. All'interno della funzione si possono modificare gli argomenti passati per valore, ma l'assegnamento influenza solo la copia locale del dato. E' possibile anteporre il modificatore VAR al nome dell'argomento formale: in questo caso l'argomento attuale deve essere una variabile ed esso viene passato alla funzione per indirizzo. Gli argomenti di tipo dinamico STRING, ARRAY, RECORD e FUNCTION sono passati per indirizzo al valore del dato. Un assegnamento su di un argomento formale passato per valore crea una nuova stringa locale alla funzione, o un nuovo array o un nuovo record, ma non modifica il dato originario. Se il nome dell'argomento è preceduto dal modificatore VAR, allora l'argomento attuale della chiamata della funzione deve essere una variabile (o elemento di array, o campo di record) e l'argomento formale diventa il riferimento a questa variabile: eventuali assegnamenti eseguiti sull'argomento formale modificano la variabile attuale. I seguenti esempi illustrano i vari casi:
Nell'esempio seguente dichiariamo una funzione che aggiunge un punto a un poligono:
| |||
| ||||
| Umberto Salsi | Contatto | Mappa | Home / Indice sezione |