AA2003/04 © M.A. Alberti Programmazione Strutture dati 1 Programmazione Corso di laurea in Informatica.

Slides:



Advertisements
Presentazioni simili
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Advertisements

Tecniche e Linguaggi di Programmazione
Esame di Stato Prova scritta di Informatica
Creazione di archivi tramite Data Base
Introduzione alla gestione dei progetti ITP Sergio Capone
Tipi di dato astratti Lista, Pila, Coda, Albero.
Estendere i linguaggi: i tipi di dato astratti
Strutture dati lineari
Il Sistema Operativo.
Elaboratore e Sistemi Operativo
Generalità Linguaggio e Macchina Astratta
Basi di Dati prof. A. Longheu
Fondamenti di Informatica Prof. Cantone
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
Fondamenti di Informatica
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Segnali e Sistemi Un segnale è una qualsiasi grandezza che evolve nel tempo. Sono funzioni che hanno come dominio il tempo e codominio l’insieme di tutti.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Programmazione Corso di laurea in Informatica
Istruzioni di ripetizione in Java
Approfondimento delle classi
AA2003/04 © M.A. Alberti Programmazione Interfacce 1 Programmazione Corso di laurea in Informatica.
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
nome: sequenza di caratteri usata per denotare un oggetto
Puntatori - Cenni Nicola Fanizzi Corso di Programmazione C.d.L. in Informatica DIB - Università degli Studi di Bari.
memoria gestita staticamente:
Capitolo 1: Introduzione ai computer e a Java
Cos’è un CMS? Content Management System
Centro Informatico Multimediale Modulo 2 – Utilizzo e gestione dei file.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
INFORMATICA Corso Base Modulo G: I DataBase  Access.
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
MODELLO LOGICO DEI DATI
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Il Sistema Operativo: il File System
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
EIPASS MODULO 5 Access 2007.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Le problematiche del controllo aziendale I problemi organizzativi nascono dalla indeterminatezza del controllo a cui è possibile sottoporre il campo entro.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Federico Vigna - 22/09/04 Framework didattico per lo sviluppo di applicazioni per basi di dati Università degli studi “Roma Tre” Dipartimento di informatica.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Sistema Operativo (Software di base)
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Modulo 5 DataBase ACCESS. Informazioni e Dati INFORMAZIONI vengono scambiate con linguaggio scritto o parlato DATI rappresentazione di informazioni in.
Grafi CORDA – Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati.
Algoritmi per liste CORDA – Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati.
Help (Gestore Help) Documentazione Commerciale Presentazione prodotti.
Interruttore elettronico Dispositivo che permette il collegamento tra ingresso e uscita agendo con un comando du un terzo elettrodo
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Dati e DBMS DBMS relazionali SQL Progettazione di un DBMS Normalizzazione Programma del Corso di Basi di Dati.
Algoritmi e Strutture Dati Strutture Dati Elementari.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Emanuele Silvestri Enrico Frongia 1°E a.s 2011/2012.
Corso di laurea triennale in Chimica - Laboratorio di Informatica 1 ESERCITAZIONE 8 – BASI DI DATI - II ©2003/04 – Gruppo di lavoro Alberti, Boldi, Gaito,
Array (visita e ricerca) CORDA – Informatica A. Ferrari.
Hashing. 2 argomenti Hashing Tabelle hash Funzioni hash e metodi per generarle Inserimento e risoluzione delle collisioni Eliminazione Funzioni hash per.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione Programma del Corso.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione Programma del Corso.
Intelligenza Artificiale 1 Gestione della conoscenza lezione 2 Prof. M.T. PAZIENZA a.a
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Eprogram SIA V anno.
Eprogram informatica V anno.
Le basi di dati.
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

AA2003/04 © M.A. Alberti Programmazione Strutture dati 1 Programmazione Corso di laurea in Informatica

AA2003/04 © M.A. Alberti Programmazione Strutture dati 2 Le strutture dati I programmi lavorano su informazioni Le informazioni sono spesso organizzate in tavole Che non sono semplicemente una massa di dati numerici Ma è che coinvolgono relazioni strutturali tra i dati In genere cè molta più informazione strutturale tra i dati di quella che sia necessario rappresentare

AA2003/04 © M.A. Alberti Programmazione Strutture dati 3 Proprietà delle strutture dati Le strutture dati hanno proprietà statiche e dinamiche che possono essere molto diverse Le strutture dati devono essere rappresentate e implementate nei linguaggi di programmazione Spazio di memoria per larchiviazione La rappresentazione influenza le funzionalità Creazione, manipolazione, ricerca, accesso

AA2003/04 © M.A. Alberti Programmazione Strutture dati 4 Rappresentazione della struttura dati Decidere caso per caso quanta struttura rappresentare Occorre considerare non solo la struttura dati ma anche la classe doperazioni da effettuare sui dati La rappresentazione dipende tanto dalle proprietà intrinseche delle struttura dati quanto dalle funzionalità che si desiderano Forma e funzione

AA2003/04 © M.A. Alberti Programmazione Strutture dati 5 Tabelle dinformazioni Nella forma più semplice una tabella è una lista lineare di elementi La sua relazione strutturale più importante consente di rispondere a domande come Chi è il primo della lista? Chi è lultimo? Chi precede e chi segue un dato elemento? Quanti elementi ci sono nella lista? In altri casi una tabella può essere a 2 o più dimensioni Può avere una struttura gerarchica ad albero Può essere una struttura più complessa con ramificazioni a reticolo

AA2003/04 © M.A. Alberti Programmazione Strutture dati 6 Liste lineari Un insieme di n 0 di nodi le cui proprietà strutturali coinvolgono essenzialmente solo le posizioni lineari (a 1-dimensione) relative dei nodi Se n 0, x[1] è il primo nodo allora k con 1<k< n, il k-esimo nodo x[k] è preceduto dal nodo x[k-1] ed è seguito dal nodo x[k+1]; inoltre x[n] è lultimo nodo

AA2003/04 © M.A. Alberti Programmazione Strutture dati 7 Operazioni sulle liste Le operazioni che vogliamo eseguire su una lista, includono (non esclusivamente): Accedere al k-esimo nodo Inserire un nuovo nodo in una posizione opportuna Eliminare il k-esimo nodo Unire 2 o più liste Fare una copia di una lista Determinare il numero di nodi in una lista Ordinare i nodi di una lista secondo un criterio Cercare le occorrenze di una nodo con un particolare valore

AA2003/04 © M.A. Alberti Programmazione Strutture dati 8 Particolari liste Sono frequenti liste lineari in cui inserimenti, cancellazioni e accesso ai dati avvengono quasi sempre solo in prima o in ultima posizione Stack o pila. Inserimenti e cancellazioni (e spesso anche gli accessi) avvengono solo a un estremo della lista Coda. Inserimenti avvengono a un estremo della lista e le cancellazioni allaltro Deque (coda a doppi estremi). Inserimenti e cancellazioni possono avvenire ai 2 estremi della lista

AA2003/04 © M.A. Alberti Programmazione Strutture dati 9 Esempio Un binario morto ad una stazione di testa èrappresentabile con uno stack. Il primo treno ad uscire è lultimo che è entrato

AA2003/04 © M.A. Alberti Programmazione Strutture dati 10 Nomenclatura Spesso vengono usati altri nomi per indicare stack e liste in genere LIFO. Last In First Out, per stack FIFO. First In First Out, per le code In particolare per gli stack si usano i termini Top o cima per indicare il primo elemento dello stack Bottom o fine per indicare lultimo elemento Pop per eliminare lelemento al top Push per inserire un nuovo dato

AA2003/04 © M.A. Alberti Programmazione Strutture dati 11 Rappresentazione di una lista A seconda della classe di operazioni più frequenti è utile una particolare rappresentazione Non esiste una singola rappresentazione che rende le operazioni tutte ugualmente efficienti Laccesso random alla k-esimo nodo è diffcile se contemporaneamente inseriamo e cancelliamo nodi Distinguiamo rappresentazioni di liste in funzione delle principali operazioni da eseguire

AA2003/04 © M.A. Alberti Programmazione Strutture dati 12 Liste statiche vs dinamiche Le liste statiche sono quelle che adottano una rappresentazione statica Viene allocata unarea di memoria di dimensione prefissata quindi hanno una dimensione fissa Le liste dinamiche adottano una rappresentazione dinamica Larea di memoria per archiviare i nodi viene riservata dinamicamente in esecuzione quando serve Possono avere una dimensione non prefissata

AA2003/04 © M.A. Alberti Programmazione Strutture dati 13 Implementazione di pile public void push(Object o) Aggiunge loggetto passato come parametro sullo stack. Se lo stack è pieno solleva una OutOfBoundsStackException public Object pop() Riporta il riferimento delloggetto che sta al top dello stack. Se lo stack è vuoto solleva una EmptyStackException public boolean empty() Riporta true se lo stack è vuoto, false altrimenti Stack() Il costruttore che costruisce uno stack vuoto

AA2003/04 © M.A. Alberti Programmazione Strutture dati 14 Leccezione per stack vuoto public class EmptyStackException extends RunTimeException { } Uneccezione definita come estensione di RunTimeException quindi non controllata Viene sollevata dal metodo pop()

AA2003/04 © M.A. Alberti Programmazione Strutture dati 15 Leccezione per stack pieno public class OutOfBoundsStackException extends RunTimeException { } Uneccezione definita come estensione di RunTimeException quindi non controllata Può essere sollevata dal metodo push()

AA2003/04 © M.A. Alberti Programmazione Strutture dati 16 Implementazione statica Per unimplementazione statica di stack, possiamo adottare unarray di oggetti Lo stack viene rappresentato come un array di riferimenti a Object Larray sarà predimensionato in modo conveniente Occorre tenere presente la dimensione massima dellarray Potrà sempre essere possibile andare in overflow

AA2003/04 © M.A. Alberti Programmazione Strutture dati 17 Implementazione statica Ogni posizione dellarray rappresenta un nodo dello stack La posizione 0 viene usata per contenere lelemento più in basso dello stack. Un indice indica la cima dello stack Stack.java e leccezioniStack.java EmptyStackException.java OutOfBoundsStackException.java

AA2003/04 © M.A. Alberti Programmazione Strutture dati 18 Implementazione dinamica Si usa una lista lineare concatenata Oltre allinformazioni del nodo è necessario archiviare lindirizzo del nodo successivo Ogni nodo contiene un campo per contenere il riferimento alloggetto con il valore che ci interessa archiviare

AA2003/04 © M.A. Alberti Programmazione Strutture dati 19 Rappresentazione del nodo La classe che rappresenta il nodo dello stack Class NodoStack { Object dato; NodoStack pros; } La definizione è ricorsiva, cioè il nodo è definito in termini di sé stesso

AA2003/04 © M.A. Alberti Programmazione Strutture dati 20 Rappresentazione dello stack Per definire lo stack è sufficiente dare il riferimento alla cima dello stack La cima sarà null nel caso di stack vuoto public class Stack { private NodoStack cima ; … altri metodi }

AA2003/04 © M.A. Alberti Programmazione Strutture dati 21 Costruttore e metodi public Stack() { cima = null; } public boolean empty() { return cima == null; }

AA2003/04 © M.A. Alberti Programmazione Strutture dati 22 Il metodo push() Il metodo ha come parametro il riferimento alloggetto che deve inserire alla cima dello stack Dovrà creare un nuovo nodo Copiare il riferimento passato come parametro nel campo dato del nuovo nodo Inserire il nuovo nodo alla cima della lista

AA2003/04 © M.A. Alberti Programmazione Strutture dati 23 Il metodo pop() Il metodo non ha parametri. Deve eliminare il nodo alla cima dello stack Dovrà memorizzare il riferimento contenuto nella cima Eliminare la cima Riportare allambiente il riferimento memorizzato Se la lista è vuota deve sollevare uneccezione EmptyStackException

AA2003/04 © M.A. Alberti Programmazione Strutture dati 24 Classi interne La classe NodoStack viene usata solo dalla classe Stack e quindi viene dichiarata static e private È una risorsa privata della classe Stack che avrà accesso perciò ai suoi campi Stack.java

AA2003/04 © M.A. Alberti Programmazione Strutture dati 25 Le code Negli stack lelemento che si preleva è lultimo che si è inserito (LIFO) Nelle code gli elementi si inseriscono ad un estremo e prelevano allaltro (FIFO) Quindi si preleva nellordine in cui si è inserito Ad esempio: una lista dattesa

AA2003/04 © M.A. Alberti Programmazione Strutture dati 26 Implementazione dinamica Si può usare una lista concatenata Utile avere anche un riferimento allultimo nodo della lista

AA2003/04 © M.A. Alberti Programmazione Strutture dati 27 Implementazione in Java Rappresentazione del singolo nodo class NodoCoda { Object dato; NodoCoda pros; } Rappresentazione della coda public class Coda { private NodoCoda primo, ultimo; private static NodoCoda { … } … altri metodi }

AA2003/04 © M.A. Alberti Programmazione Strutture dati 28 Operazioni sulla coda Inserire nodi Avviene alla fine della lista Eliminare nodi Avviene allinizio della lista

AA2003/04 © M.A. Alberti Programmazione Strutture dati 29 Costruttore e metodi Il costruttore costruisce una coda vuota public Coda() { primo = ultimo = null; } Funzione per inserire un nodo Costruire il nuovo nodo da inserire Collegare il nuovo nodo dopo lultimo Aggiornare il riferimento allultimo nodo public void aggiugi (Object o) { … }

AA2003/04 © M.A. Alberti Programmazione Strutture dati 30 Inserire nodi Creare il nuovo nodo con il dato riferito da o NodoCoda t = new NodoCoda(); t.dato = o; t.pros = null; t ultimo primo

AA2003/04 © M.A. Alberti Programmazione Strutture dati 31 …inserire nodi… Collegare dopo lultimo nodo ultimo.pros = t; t ultimo primo

AA2003/04 © M.A. Alberti Programmazione Strutture dati 32 …inserire nodi… Aggiornare il riferimento allultimo nodo ultimo = t; t ultimo primo

AA2003/04 © M.A. Alberti Programmazione Strutture dati 33 …inserire nodi… Ma se la coda era vuota allora if (primo == null) primo = ultimo = t; ultimo primo 20 t ultimo primo 20 t

AA2003/04 © M.A. Alberti Programmazione Strutture dati 34 Eliminare nodi Controllare se la coda è vuota e nel caso sollevare leccezione CodaVuotaException if (primo == null) throw new CodaVuotaException(); Eliminare il riferimento al primo nodo e riportare allambiente il riferimento contenuto nel campo dato Object risultato = primo.dato; primo = primo.pros;

AA2003/04 © M.A. Alberti Programmazione Strutture dati 35 …eliminare nodi… Se la lista rimane vuota dopo il prelievo, occorre ricordarsi di aggiornare ultimo if (primo == null) ultimo = null; Coda.javaCoda.java con leccezioni CodaVuotaException.javaCodaVuotaException.java e il driver ProvaCoda.java