| 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 | Tipo FORWARDIl tipo speciale FORWARD ha due utilità: consente la dichiarazione di strutture dati complesse e permette di migliorare il livello di astrazione dei moduli di libreria attraverso il concetto di tipo opaco. Strutture dati complesseNella sezione TYPE è ammesso dichiarare un tipo la cui struttura sarà esplicitata più avanti. In questo caso il tipo viene dichiarato FORWARD. Un esempio tipico sono le strutture dati complesse, come un B-Tree, dove un nodo è una lista di nodi:
Il tipo La dichiarazione FORWARD è ammessa solo per strutture dati ARRAY e RECORD. Non è possibile esplicitare un tipo FORWARD come un tipo semplice. L'esplicitazione del tipo FORWARD deve avvenire nello stesso modulo dove appare la dichiarazione FORWARD. Tipi opachiE' possibile dichiarare un tipo FORWARD nel DEFINITION MODULE ed esplicitarne la struttura nell'IMPLEMENTATION MODULE. In questo caso i moduli clienti non hanno accesso alla struttura interna del dato, e pertanto qui chiameremo opaco questo tipo di dato. Equivalenza tra tipi opachi. In generale in M2 due tipi sono uguali se hanno la stessa struttura. I tipi opachi fanno eccezione: poiché la loro struttura non è nota ai moduli che li importano, due variabili di tipo opaco sono dello stesso tipo solo se dichiarate dello stesso tipo opaco. Ad esempio, dichiariamo i tipi opachi A e B:
Qui le variabili a c sono dello stesso tipo, mentre b è diversa. Tipi diversi non si possono assegnare nè confrontare fra di loro. Se la struttura di un tipo opaco viene esplicitata, allora si applica la regola di equivalenza generale tra tipi. Ad esempio, se esplicitiamo i tipi opachi A e B come array di stringhe:
allora le variabili Operazioni con i tipi opachi. Non si possono dereferenziare i campi di un tipo opaco (se è un RECORD) nè si possono dereferenziare gli elementi di un tipo opaco (se è un ARRAY). I tipi opachi possono essere utilizzati solo in uno dei modi seguenti:
| |||
| ||||
| Umberto Salsi | Contatto | Mappa | Home / Indice sezione |