Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Fondamenti di Informatica
I tipi Strutturati.
Argomenti della lezione
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (IV)
Fondamenti di Informatica1 Gestione della memoria I sistemi di memoria possono essere suddivisi in: –memoria interna al processore –memoria principale.
Tipi di dato astratti Lista, Pila, Coda, Albero.
Estendere i linguaggi: i tipi di dato astratti
Unità D2 Archivi e file.
Strutture dati lineari
Universita di Camerino
Algoritmi e Programmazione
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Corso di Laurea in Informatica Corso di Laurea in Informatica Terzo anno 28/02/2008.
Corso di Laurea in Informatica Corso di Laurea in Informatica Terzo anno 17/03/2009.
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
Algoritmi Avanzati Liste e Puntatori
Realizzazione del file system
Interfaccia del file system
Realizzazione del file system
Strutture dati elementari
Algoritmi in C++ (1) da completare
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
IFTS2002 Acq. Dati Remoti: INFORMATICA
Heap allocation e garbage collector di Oberon Algoritmo Quick Fit e garbage collector mark and sweep.
Esercizi su code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori.
memoria gestita staticamente:
MS-WINDOWS Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Microsoft Word Nozioni Avanzate Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
1 Strutture Dinamiche Corso di Informatica A Vito Perrone.
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Fondamenti di Informatica
Le regole di comunicazione nelle reti
Algoritmi e strutture dati
Corso di informatica Athena – Periti Informatici
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Parte 5 Laboratorio di Informatica Dott.ssa Elisa Tiezzi
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
Corso di Introduzione all’Informatica
11/10/2004Introduzione all'Informatica1 Che cose lInformatica Computer ScienceLInformatica (Computer Science) non è soltanto La scienza e la tecnologia.
Complessità di un algoritmo
Corso di Introduzione all’Informatica
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
Schiavone & Scalas 2 In informatica, il termine stack o pila viene usato in diversi contesti per riferirsi a strutture dati le cui modalità d'accesso.
Corso di Introduzione all’Informatica
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
AlgoLab - Pile e Code Pile e code Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Algoritmi e Strutture Dati Strutture Dati Elementari.
Relazione sulle strutture dati Svolta da: Buccella Simone Strutture di dati Aree di memoria Puntatore numericibooleani alfabetici Statici dinamici Puntatori.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Esercizi.
1 Tipi di dato modificabili §a livello semantico, riconduciamo la modificabilità alla nozione di variabile l lo stato “modificabile” corrispondente sarà.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro elaborazione 2. Realizzazione algoritmo con un particolare linguaggio (traduzione)

Fondamenti di Informatica2 Tipi di dati Tipo di dato astratto: oggetto matematico definito da tre componenti: –insieme di valori che definisce il dominio –insieme di operazioni sul dominio –insieme di costanti Esempio: tipo booleano: {true, false} and, or, not,... true, false

Fondamenti di Informatica3 Tipi di dati Tipo di dato concreto: si riferisce all'uso del dato in un particolare linguaggio Per definire un tipo di dato concreto occorre: –definire le proprietà astratte –definire i vincoli imposti dal linguaggio scelto ad esempio: come dichiararlo, utilizzarlo, accedere alle sue parti,...

Fondamenti di Informatica4 Rappresentazione di un nuovo tipo di dato Per rappresentare un nuovo tipo di dato, può essere necessario utilizzare tipi di dati già esistenti Esempio: tipo di dato: "insieme [1..5]" Realizzato con un vettore di 5 elementi I metodi sono composizioni dei metodi utilizzati dai dati componenti

Fondamenti di Informatica5 Rappresentazione di un nuovo tipo di dato Esempio: –inserimento di un elemento nell'insieme –rimozione di un elemento dall'insieme –svuotamento dell'insieme –controllo della presenza di un elemento –controllo dello stato dell'insieme (pieno, vuoto, stati intermedi)

Fondamenti di Informatica6 Rappresentazione dei dati La rappresentazione di un nuovo dato non è univoca I criteri di scelta sono: –la correttezza e –l'efficienza della rappresentazione, misurata da: occupazione in memoria costo di esecuzione delle operazioni

Fondamenti di Informatica7 Diverse rappresentazioni Esempio: insieme di interi [1..5] –con un vettore di 5 elementi booleani –con un unico intero di 5 bit Differenza di efficienza: –Inserimento di un el.: –Controllo dello stato di un el.: –Azzeramento: –Unione:

Fondamenti di Informatica8 Vettori e matrici Si mettono in corrispondenza un insieme di indici e gli elementi del vettore –Gli indici sono definiti interi –I metodi sono generalmente: memorizza e accedi Una matrice è definita come un vettore a due dimensioni

Fondamenti di Informatica9 Rappresentazione di vettori In locazioni di memoria contigue Si definisce l'indirizzo della prima locazione e la dimensione di ogni elemento Accesso all'elemento i-esimo: ind(el i ) = ind(el 0 ) + i*size(el)

Fondamenti di Informatica10 Vettori a più dimensioni Esempio a due dimensioni: –Row major order Accesso all'elemento (i,j)-esimo: ind( el i,j ) = ind(el 0,0 ) + (j+i*N)*size(el) Facile estensione a più di due dimensioni

Fondamenti di Informatica11 Rappresentazione compatta di vettori Matrici sparse con valore predominante –per velocizzare l'elaborazione –per risparmiare memoria Esempio con vettore a tre componenti –memorizzazione dimensione matrice e valore predominante

Fondamenti di Informatica12 Rappresentazione compatta di vettori Metodi di accesso agli elementi: –accedi (complesso) –memorizza (molto complesso, richiede shift) Funzioni composte: –controllo dello stato –controllo del numero degli elementi Risparmio di memoria

Fondamenti di Informatica13 Le liste semplici I valori di una lista sono sequenze di valori elementari, detti atomi Esempio di lista di interi mediante rappresentazione parentetica: ( ) Caratteristiche: –lunghezza non definita a priori –presenza della lista nulla ( )

Fondamenti di Informatica14 Metodi sulle liste Lunghezza (numero di elementi) cons(el, lista) per inserire un elemento in testa alla lista car(lista) determina il primo elemento cdr(lista) fornisce una copia della lista senza il primo elemento null(lista) verifica se la lista è vuota

Fondamenti di Informatica15 Rappr. delle liste semplici Pochi linguaggi dispongono del tipo concreto lista Vi sono due tipi di rappresentazione: –rappr. sequenziale –rappr. collegata

Fondamenti di Informatica16 Rappresentazione sequenziale E' rappresentata da: –un vettore monodimensionale i cui elementi contengono un atomo –un intero (primo) che denota l'indice del vettore che identifica il primo elemento –un intero (lunghezza) che denota il numero di elementi nella lista

Fondamenti di Informatica17 Rappresentazione sequenziale ( ) primo = 1 lunghezza = 5

Fondamenti di Informatica18 Rappresentazione sequenziale Implementazione dei metodi Svantaggi: –occupazione fissa di memoria –limiti nell'estensione della lista –inefficienza di alcuni metodi

Fondamenti di Informatica19 Rappresentazione collegata Ad ogni elemento è associato un riferimento che serve a determinare il successore La sequenza non è più rappresentata dall'adiacenza fisica in memoria, ma da una informazione logica 0

Fondamenti di Informatica20 Rappresentazione collegata Implementazione dei metodi: –eliminazione primo elemento –aggiunta di un elemento in testa –eliminazione di un elemento generico –aggiunta di un elemento in una posizione generica

Fondamenti di Informatica21 Rappresentazione collegata Vantaggio: –non più necessario spostare elementi (solo modifiche ai riferimenti) Svantaggio: –per accedere ad un elemento è necessario scandire tutta la lista (cioè non è noto l'indirizzo del generico elemento)

Fondamenti di Informatica22 Implementazione della rappresentazione collegata Vi sono due modi per implementare la rappresentazione collegata: –utilizzando gli array –utilizzando i puntatori

Fondamenti di Informatica23 Rappresentazione collegata mediante array Si associa ad ogni elemento della lista una componente dell'array costituita da: –il valore dell'elemento della lista –il riferimento all'elemento successivo (indice dell'array)

Fondamenti di Informatica24 Rappresentazione collegata mediante array ( ) 215?45?178? 46?7?10? inizio = 2

Fondamenti di Informatica25 Rappresentazione collegata mediante array Metodi: –l'azzeramento e l'eliminazione di elementi sono operazioni semplici –l'inserimento di elementi necessita della determinazione di una posizione vuota che si può realizzare in due modi: scansione dell'intera lista utilizzo della lista libera (esempi)

Fondamenti di Informatica26 Rappresentazione collegata mediante array Vantaggi: –non vengono spostati elementi –linguaggi in cui l'unico dato struttturato è l'array Svantaggi: –gestione della lista libera –rimane il problema della dimensione massima fissata dalla dimensione dell'array –richiede più memoria a causa dei riferimenti

Fondamenti di Informatica27 Rappresentazione collegata mediante puntatore Il tipo puntatore è un tipo di dato i cui valori rappresentano indirizzi in memoria Le operazioni usualmente disponibili sono: –accesso alla locazione puntata –richiesta di una nuova locazione libera –rilascio della locazione non più utilizzata

Fondamenti di Informatica28 Rappresentazione collegata mediante puntatore Ogni elemento della lista è composto da: –il valore dell'elemento della lista –un puntatore che identifica la locazione di memoria in cui è memorizzato l'elemento successivo L'elemento iniziale è un puntatore

Fondamenti di Informatica29 Rappresentazione collegata mediante puntatore Vantaggi: –stessi vantaggi della rappresentazione collegata mediante array e in più non c'è limite alla lunghezza massima Svantaggi: –la ricerca richiede la scansione completa

Fondamenti di Informatica30 L'utilizzo dei puntatori è critico L'utilizzo dei puntatori permette di referenziare zone di memoria; è critico perché: –permette di modificare aree di memoria che possono contenere informazioni vitali –se mal utilizzato, può portare all'esaurimento della memoria disponibile (garbage collection)

Fondamenti di Informatica31 Rappresentazione collegata Per migliorare l'efficienza di alcune operazioni sono state concepite due varianti: –Rappresentazione collegata circolare –Rappresentazione collegata simmetrica

Fondamenti di Informatica32 Rappresentazione collegata circolare L'ultimo elemento non contiene un riferimento nullo, ma il riferimento al primo elemento della lista Vantaggi: –utilizzo come buffer circolare

Fondamenti di Informatica33 Rappresentazione collegata simmetrica Ogni elemento contiene anche il riferimento all'elemento precedente Vantaggi: –la lista si può scandire in entrambe le direzioni –si semplifica l'inserimento in posizione precedente ad un dato elemento

Fondamenti di Informatica34 Liste composite Estensione del concetto di lista Gli elementi della lista possono a loro volta essere delle liste Rappresentazione parentetica: ( 5 () 6 ( 7 8 ) ( 9 (12) 3 ) 14 ) Nell'esempio, l'atomo può essere una lista o un numero

Fondamenti di Informatica35 Rappresentazione del singolo nodo Esistono due varianti: –l'atomo contiene sia un puntatore ad una lista che lo spazio per memorizzare un numero; un ulteriore booleano li seleziona –l'atomo contiene lo spazio per memorizzare solo il più esteso tra il puntatore alla lista e il numero; un ulteriore booleano li seleziona

Fondamenti di Informatica36 Rappresentazione del singolo nodo Le due varianti si riferiscono a: strutture ( struct ) unioni ( union ) typedef struct {typedef union { int giorno; int numero; int mese; char nome[10]; int anno; } cliente; } data;

Fondamenti di Informatica37 Recupero della memoria Garbage collection (recupero memoria non più utilizzata) Può avvenire: –manualmente a carico del programmatore –automaticamente a carico del traduttore del linguaggio (serve marcare le aree allocate e gestire la lista libera)

Fondamenti di Informatica38 Le pile La pila è un tipo di dato con struttura LIFO Definizione: –{pila, elemento, boolean} –{top, push, pop, test_pila_vuota} top: pila elemento(cons) push: pila x elemento pila(cdr) pop: pila pila(car) test_pila_vuota: pila boolean(null) –{pila_vuota}

Fondamenti di Informatica39 Le pile A differenza delle liste gli inserimenti e le cancellazioni posso essere effettuati solo sulla cima della pila (non avvengono spostamenti degli elementi) Tipo di dato fondamentale

Fondamenti di Informatica40 Le code La coda è un tipo di dato con struttura FIFO Definizione: –{coda, elemento, boolean} –{primo, in_coda, out_coda, test_coda_vuota} primo: coda elemento(cons) in_coda: coda x elemento coda(cdr) out_coda: coda coda(car) test_coda_vuota: coda boolean(null) –{coda_vuota}

Fondamenti di Informatica41 Requisiti delle pile e delle code Requisiti delle pile: –un puntatore che determini la cima –le operazioni di accesso sono semplici Requisiti delle code: –due puntatori che puntino alla cima e alla coda –le operazioni di accesso sono poco più complesse