Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Dati
I dati di un programma sono i valori assunti dalle sue variabili. Un tipo di dati è definito da un dominio di valori e un
insieme di operazioni previste su quei valori.
Ad esempio, gli interi sono definiti da un intervallo di valori interi compresi fra [ -2 m-1 , 2m-1 -1 ].
Specifica e implementazione
Per costruire nuovi tipi di dati, si distingue la specifica e l’implementazione:
Con la specifica si definisce il dominio dei valori, e l’insieme degli operatori, con l’implementazione si ha
la codifica di quanto definito nella specifica, usando primitive e costrutti di un linguaggio di programmazione.
Strutture dati
Le strutture dati sono gruppi di dati organizzati in maniera strutturata. Sono caratterizzati da un modo sistematico
di organizzare l’insieme di dati, e un insieme di operatori per operare sulla struttura.
Le strutture dati possono essere:
- lineari o non lineari, se è presente o meno una sequenza
- statiche o dinamiche, se c’è una variazione di dimensione
- omogenee o disomogenee, rispetto ai dati contenuti
Una struttura dati lineare, presenta dati organizzati in maniera lineare, ovvero in sequenza monodimensionale,
la loro dimensione è fissata oppure varia dinamicamente, ed è possibile accedere, aggiungere o rimuovere elementi
in determinate posizioni (inizio, fine, posizione intermedie). Un esempio sono pile, code e liste.
Una struttura dati non lineare, i dati non sono organizzati in maniera sequenziale.
Dunque si hanno insiemi di dati non ordinati (dizionari, tabelle hash), dati organizzati in maniera gerarchica (alberi), e
dati organizzati in reti di nodi (archi).
La loro dimensione spesso varia dinamicamente, ed è sempre possibile accedere, aggiungere o rimuovere elementi
in determinate posizioni.
Con l’astrazione ed information hiding si ha un’interfaccia separata dalla codifica, e per usare un modulo non è
necessario conoscere i dettagli della codifica.
Per ottenere l’indipendenza dei moduli, si deve avere un’organizzazione strutturata del programma, una
compilazione separata, e una manutenzione che deve essere possibile localmente.
Ricorsione
La ricorsione è una modalità di definizione di funzioni.
Con la ricorsione, i dati sono organizzati in strutture definite in termini di sé stesse (quindi ricorsivamente).
Una ricorsione si ha con la lista, che è una sequenza di elementi che o è vuota, o ha un primo elemento, e i rimanenti
formano una lista a loro volta.
Le operazioni stesse sono definite in maniera ricorsiva. Ad esempio il fattoriale n! è definito per tutti gli interi n>=1 ,
dunque n! è uguale a 1 se n è uguale a 1, e n! è uguale a n + (n-1)! se n è maggiore di 1.
I tipi di dati e i loro operatori, inoltre, sono implementati con strutture o sottoprogrammi ricorsivi.
Un esempio di ricorsione è: