AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno del programma o quello del mondo circostante. –Le strutture di controllo ( if,-then-else, while-do, for, repeat-unitl, switch, etc.) permettono di aggregare comandi semplici in macrocomandi
AN FI Un denominatoe comune Procedure u costrutti che permettono di attribuire un nome ad un macrocomando e renderlo parametrico if( x == 3 ) writeln( 2+x*sin(0.75) ); else writeln( "errore" ); void f1( int x ){ if( x == 3 ) writeln( 2+x*sin(0.75) ); else writeln( "errore" ); }
AN FI Un denominatoe comune Variabili nei linguaggi imperativi u Rappresentano astrazioni delle celle di memoria di un elaboratore piuttosto che sinonimi di dati u Sono associate a due diverse informazioni: –l' indirizzo di una cella di memoria (o della prima cella di un blocco di celle) –il contenuto
AN FI Un denominatoe comune Variabili nei linguaggi imperativi 3.22 la corrispondenza tra la variabile x e il valore 3.22 puo' venire rappresentata come segue: x
AN FI Un denominatoe comune Riferimenti u Molti linguaggi imperativi permettono di trattare gli indirizzi di memoria come valori e di introdurre variabili che possono assumere come valore un indirizzo 3.22 x px
AN FI Un denominatoe comune Il valore null un simbolo ( nil, oppure null ) che denota un indirizzo cui non corrisponde alcuna cella fisica dell'elaboratore. null px
AN FI Un denominatoe comune Dereferenziamento u L'operazione che permette, data una variabile che ha come valore un riferimento, di accedere al contenuto delle celle di memoria referenziate
AN FI Un denominatoe comune Puntatori u le variabili (i cui valori sono riferimenti) che il linguaggio permette possano comparire in espressioni aritmetiche. –px+1 denota l'indirizzo +k essendo k il numero di celle di memoria occupate dal valore puntato da pxpx
AN FI Un denominatoe comune Strutture di dati u I tipi di dato scalari predefiniti di un linguaggio non sono sufficienti per soddisfare le esigenze pratiche di progettazione e sviluppo di sistemi software. –Per quanto un linguaggio possa offrire un ampio repertorio di dati, vi e sempre la necessita' di introdurre e gestire nuove astrazioni di dato, in relazione alle diverse applicazioni
AN FI Un denominatoe comune Strutture di dati u Occorrono meccanismi per organizzare i dati in strutture articolate e complesse, che possano costituire un appropriato modello del mondo reale e colmare il gap semantico tra le categorie di informazione di uno specifico dominio applicativo e le categorie di dati che l'elaboratore e' in grado di "comprendere" direttamente
AN FI Un denominatoe comune Strutture di dati espressioni di tipo e costruttori di strutture di dati moduli oggetti
AN FI Un denominatoe comune Espressioni di tipo u Una espressione di tipo ( type expression ) descrive la struttura concreta di una nuova categoria di dati attraverso l'uso di costrutti di aggregazione detti costruttori di tipo – array struct
AN FI Un denominatoe comune Rappresentazione e astrazione u Attraverso i costruttori di tipo il progettista puo' definire strutture di dati che costituiscono la rappresentazione concreta delle astrazioni che ha nella sua mente
AN FI Un denominatoe comune Rappresentazione e astrazione u Altri costrutti linguistici meglio catturano la semantica delle astrazioni di dato, separando in modo radicale l'aspetto della rappresentazione concreta dall'aspetto legato all'accesso ai dati
AN FI Un denominatoe comune Incapsulamento u L'incapsulamento ( information hinding ) costituisce un concetto complementare all'astrazione. –Mentre l'astrazione si focalizza sul funzionamento osservabile di un oggetto e su cosa fa un oggetto, l'incapsulamento si focalizza sull'implementazione e permette di modificare un sistema software con uno sforzo limitato.
AN FI Un denominatoe comune Incapsulamento u Qualunque sia l'implementazione scelta per una nuova categoria di dati, essa e' inessenziale agli occhi dei clienti, una volta che assicuri il rispetto del contratto tra il cliente e un oggetto di quella categoria stabilito dall'interfaccia.
AN FI Un denominatoe comune Moduli u Il modulo permette di raggruppare dati, funzioni e procedure in una singola unita' sintattica e che permette incapsulamento. u L'uso di un modulo rende possibile costruire una barriera di astrazione intorno alla rappresentazione concreta di una struttura di dati
AN FI Un denominatoe comune Moduli u Se ben definito, un modulo ha la possibilita' di: –garantire l'uso consistente e corretto di una nuova astrazione di dato, cioe' il soddisfacimento di invarianti di dato –ottenere indipendenza dalla rappresentazione
AN FI Un denominatoe comune Invarianti di dato u Un invariante di dato e' una relazione logica tra le parti che compongono il dato che e' sempre vera agli occhi di un osservatore esterno.
AN FI Un denominatoe comune Indipendenza dalla rappresentazione u L' indipendenza dalla rappresentazione : e' la proprieta' per cui la rappresentazione concreta di un dato puo' essere modificata senza che vi siano ripercussioni sul resto del programma