• Non ci sono risultati.

Strutturare i Dati

N/A
N/A
Protected

Academic year: 2021

Condividi "Strutturare i Dati"

Copied!
9
0
0

Testo completo

(1)

Strutturare i Dati

Luca Abeni

March 29, 2017

(2)

Strutturazione dei Dati

• Macchina fisica: lavora su sequenze di bit

• Facile e pratico per un computer...

• ...Ma non proprio il massimo per un programmatore umano!

• Necessit `a di associare significati a sequenze di bit

• Cosa rappresenta la sequenza “01100001”?

• Il numero decimale 87?

• Il carattere “a”?

• Altro?

• Necessit `a di definire operazioni su sequenze di bit

• Se interpreto “0010” e “0100” come interi, come ne calcolo la somma?

(3)

Tipi di Dato

“Collezione di valori omogenei ed effettivamente

rappresentabili, dotata di un insieme di operazioni che operano su tali valori”

• Valori omogenei: l’insieme {2, 3.1415, true, ”AAA”}

difficilmente `e la base per un tipo...

• 1, 2, 3, 4, 5, 6, 7, 8, 9 `e gi `a meglio...

• Effettivamente rappresentabili: l’insieme R dei

numeri reali non pu `o costituire un tipo (esempio: π non `e rappresentabile su un numero finito di bit)

• Un insieme di approssimazioni di numeri reali va gi `a meglio...

• Necessit `a di definire operazioni sui valori

(4)

Tipi di Dato

• Una volta definiti vari tipi di dato, come li combino fra loro?

• Sistema di tipi:

• Insieme di tipi di dato (tipi predefiniti di un linguaggio, ...)

• Meccanismi che permettono di definire nuovi tipi

• Meccanismi per il “controllo dei tipi”

• Regole di equivalenza

• Regole di compatibilit `a

• Meccanismi di inferenza di tipo

• Regole di controllo dei vincoli sui tipi (controllo statico o dinamico, ...)

(5)

Equivalenza fra Tipi

• Tipi equivalenti: diversi fra loro, ma intercambiabili

• Non distinguibili nel loro uso

• Posso usare un valore del primo tipo al posto di un valore del secondo e viceversa

• Possono essere visti come due nomi diversi per lo stesso tipo di base...

• Esempio: “typedef int time t”

(6)

Compatibilit `a fra Tipi

• Il tipo T `e compatibile col tipo S se e solo se un valore di T `e usabile al posto di un valore di S

• Relazione riflessiva, transitiva ma non simmetrica

• T1 `e compatibile con T1

• Se T1 `e compatibile con T2 e T2 `e compatibile con T3, allora T1 `e compatibile con T3

• Se T1 `e compatibile con T2 non `e detto che T2 sia compatibile con T1

• Equivalenza implica (ovviamente) compatibilit `a, ma compatibilit `a non implica equivalenza!

(7)

Sistemi Type Safe

• Sistema di tipi type safe (sicuro relativamente ai tipi)

• “Nessun programma (sintatticamente corretto) pu `o violare i vincoli sui tipi definiti dal linguaggio”

• Nessun programma pu `o, durante la sua

esecuzione, generare un errore (non segnalato) derivante dalla violazione di vincoli sui tipi

{

double ∗p ;

p = m a l l o c ( s i z e o f ( i n t ) ) ;

∗p = 2 . 3 ; . . .

(8)

Controlli sui Tipi

• Controlli a tempo di:

• Compilazione → Tipizzazione statica

• Esecuzione → Tipizzazione dinamica

• Differenti trade-off su:

• Sicurezza (tipizzazione statica: certezza che il programma `e sempre corretto)

• Overhead

• Tempo di compilazione

• Flessibilit `a

• Problemi di decidibilit `a

• Controllo statico fallisce anche con programmi che non genereranno mai errore...

(9)

Propriet `a dei Tipi di Dati

• In realt `a, propriet `a dei valori che il tipo pu `o

assumere (e/o delle operazioni su tali valori)...

• I valori di un tipo di dato possono essere:

• Denotabili: associabili ad un nome nell’ambiente

• Esprimibili: risultato di una espressione

• Memorizzabili: associabili ad una variabile tramite la funzione memoria

• Esempio: le funzioni f : int → int sono

denotabili? Ed esprimibili? E Memorizzabili?

• Sempre denotabili

• Qualche volta esprimibili (“fn x => ... ” `e un’espressione che ritorna una funzione)

• Qualche volta memorizzabili

Riferimenti

Documenti correlati

ƒ restituisce un puntatore che contiene l’indirizzo del blocco di memoria allocato, cioè della variabile, la quale sarà quindi accessibile dereferenziando il puntatore. ƒ la

[r]

 “Estrarre dalla base di dati una tabella, StudentiTriennio, contenente i dati degli studenti della laurea

Si studi la continuit´a di ev rispetto alla topologia della convergenza uniforme, della convergenza puntuale e la topologia L 1

Banche, Finanziarie, soggetti terzi ed Enti Pubblici. Tali dati sono comunque inerenti le attività economiche e commerciali da Voi svolte e possono riguardare, ad esempio,

Procedura e scadenze per la selezione delle strategie di sviluppo locale I riferimenti sono contenuti nelle informazioni specifiche della misura. Giustificazione della selezione,

- il primo riguarda la possibilità di effettuare l’acquisizione di componenti di vibrazione anche nel piano attraverso una scansione conica; la programmazione dello strumento

ovvero i tre segmenti che congiungono i vertici di ogni angolo con lato opposto ad essi, e che dividono gli angoli in due parti uguali, creeranno un punto interno che si