Tipi di dati astratti
|
|
- Marcellina Pellegrino
- 4 anni fa
- Visualizzazioni
Transcript
1 Tipi di dati astratti ADT 1 Dati strutturati e algoritmi Una struttura di dati è un insieme di regole per organizzare e manipolare dei dati Un algoritmo è un procedimento composto in passi elementari in grado di risolvere un determinato problema in un numero finito di passi. I passi elementari devono essere ben definiti ADT 2 1
2 Tipi di dati astratti Un tipo di dato astratto (in inglese ADT per Abstract Data Type) è un modello matematico di una struttura di dati che definisce l insieme dei valori che i dati possono assumere, le operazioni che si possono eseguire sui dati e i parametri ad esse applicabili Nel definire un ADT si specificano le operazioni senza specificare come queste verranno poi realizzate, questo corrisponde alla definizione di una interfaccia cioè di un elenco delle possibili operazioni ADT 3 Stack Abbiamo già visto le proprietà di uno stack cioè di un contenitore di oggetti che possono essere inseriti e tolti con una politica di tipo LIFO (last in first out). Il primo oggetto ad uscire dal contenitore sarà sempre quello che è stato inserito per ultimo ADT 4 2
3 Stack come ADT Uno stack può essere manipolato con due metodi push(o): inserisce nello stack l oggetto o Ingresso: l oggetto Uscita: nessuna pop(): toglie dallo stack l ultimo elemento inserito e ne restituisce il valore; può produrre un errore se lo stack è vuoto Ingresso: nessuno Uscita: un oggetto metodi addizionali size(): restituisce il numero di oggetti nello stack Ingresso: nessuno Uscita: un intero isempty(): restituisce un booleano vero se lo stack è vuoto Ingresso: nessuno Uscita: un booleano top(): restituisce il valore dell oggetto in allo stack senza modificare lo stack; produce un errore se lo stack è vuoto Ingresso: nessuno Uscita: un oggetto ADT 5 Inserimento di un elemento in uno stack Vettore s 0 primo 1 secondo top 1 terzo Inserzione di terzo Vettore s primo secondo terzo top 2 top indica la posizione della dello stack, il valore iniziale deve essere -1 nell esempio la capienza dello stack è pari a 6 ADT 6 3
4 Estrazione di due elementi dallo stack primo secondo terzo top 3 secondo terzo estrazione di due oggetti escono: terzo e secondo primo top 0 ADT 7 StackDiStringhe.java gestione di uno stack di stringhe realizzato con un vettore class StackDiStringhe { private static final int CAPIENZA = 6; private String[] s; private int top; public StackDiStringhe () { s = new String[CAPIENZA]; top = -1 public int size () { return top + 1; public boolean isempty () { return top < 0; public void push (String elemento) { if (size() == CAPIENZA) Prims.errore("Overflow di uno stack"); else s[++top] = elemento; public String top () { if (isempty()) Prims.errore("Lo stack e' vuoto"); return s[top]; public String pop () { if (isempty()) Prims.errore("Lo stack e' vuoto"); String elemento = s[top]; s[top--] = ; return elemento; ADT 8 4
5 Main1.java rovescia l'ingresso in uscita con uno stack di stringhe class Main1 { public static void main (String[] arg) { String str; StackDiStringhe st = new StackDiStringhe(); while ((str = Prims.prendi())!= ) st.push(str); Prims.metti("Si sono lette: "+ st.size() + " righe" + Prims.fineRiga()); Prims.metti( Testa: +st.top()+prims.fineriga()); while (!st.isempty()) Prims.metti(st.pop() + Prims.fineRiga()); Prims.metti("Lo stack contiene " + st.size() + " elementi" + Prims.fineRiga()); st.pop(); // produce un errore ADT 9 Problemi La realizzazione data soffre di alcune limitazioni che possono però essere superate utilizzando le caratteristiche di JAVA: l ADT stack potrebbe essere realizzato in modo diverso, è opportuno svincolare l interfaccia dalla realizzazione per ogni tipo di dato dobbiamo realizzare una nuova classe (StackDiInteri, StackDiCoppie, ecc.) la gestione degli errori è del tutto inadeguata ADT 10 5
6 interface La dichiarazione di un interfaccia introduce un nuovo tipo di riferimento che ha come membri solo costanti e metodi astratti. Un interfaccia non dispone di una realizzazione ma una o più classi, del tutto indipendenti, possono realizzare l interfaccia Un interfaccia può estendere un altra interfaccia (aggiungendo nuovi metodi e/o mascherando le costanti) Una classe può realizzare una o più interfacce (oltre che estendere una classe) ADT 11 Tipi di dati astratti e interfacce Un interfaccia JAVA si presta molto bene alla definizione di un tipo di dato astratto senza dover definire la sua realizzazione Nel definire l interfaccia non abbiamo bisogno di impegnarci sul tipo degli oggetti che verranno gestiti dall interfaccia: saranno genericamente di tipo Object Possiamo indicare esplicitamente che un metodo può produrre un errore ADT 12 6
7 exception Quando un programma viola le regole semantiche di JAVA la macchina virtuale JAVA segnala l errore lanciando un eccezione che può essere catturata da un diverso punto del programma; un eccezione può anche essere lanciata esplicitamente Le eccezioni sono esemplari della classe Throwable o di una classe da essa derivata Il segmento di programma che gestisce un eccezione è il blocco catch che segue il blocco try all interno del quale si è verificato l errore ADT 13 Il costrutto try{...catch{... try { // istruzioni che // possono produrre // un errore catch { // gestione // dell eventuale // errore errore gestione dell errore Il verificarsi di un errore lancia un eccezione che viene catturata per la gestione dell anomalia ADT 14 7
8 Stack.java un esempio di interface public interface Stack { public int size(); public boolean isempty(); public Object top() throws StackEmptyException; public void push (Object element); public Object pop() throws StackEmptyException; ADT 15 Realizzazione di Stack con un vettore class ArrayStack implements Stack { static final int CAPIENZA = 10; private int capienza; private Object[] s; private int top; public ArrayStack (int capienza) { top = -1; this.capienza = capienza; s = new Object[capienza]; public ArrayStack () { this(capienza); public int size () { return top + 1; ADT 16 8
9 Realizzazione di Stack con un vettore (segue) public boolean isempty () { return top < 0; public void push (Object elemento) { if (size() == capienza) throw new StackFullException("stack overflow"); s[++top] = elemento; public Object top () throws StackEmptyException { if (isempty()) throw new StackEmptyException("stack vuoto"); return s[top]; public Object pop () throws StackEmptyException { if (isempty()) throw new StackEmptyException("stack vuoto"); Object elemento = s[top]; s[top--] = ; return elemento; ADT 17 Main2.java rovescia l'ingresso in uscita con uno stack di stringhe class Main2 { public static void main (String[] arg) { String str; Stack st = new ArrayStack(); while ((str = Prims.prendi())!= ) st.push(str); Prims.metti( N:"+st.size()+"righe"+Prims.fineRiga()); Prims.metti(": "+ st.top() + Prims.fineRiga()); while (!st.isempty()) Prims.metti(st.pop() + Prims.fineRiga()); Prims.metti("contiene " + st.size() + " elementi" + Prims.fineRiga()); try { st.pop(); // produce un errore catch (StackEmptyException e) { Prims.metti("Errore" + Prims.fineRiga()); ADT 18 9
10 Main3.java rovescia l'ingresso in uscita con uno stack di interi class Main3 { public static void main (String[] arg) { String str; Stack st = new ArrayStack(); while ((str = Prims.prendi())!= ) st.push(new Integer(Prims.intero(str))); Prims.metti("lette: "+st.size()+" righe"+prims.fineriga()); Prims.metti(": " + st.top() + Prims.fineRiga()); while (!st.isempty()) Prims.metti(st.pop() + Prims.fineRiga()); Prims.metti("N el: "+st.size()+prims.fineriga()); try { st.pop(); // produce un errore catch (StackEmptyException e) { Prims.metti("Errore 1" + Prims.fineRiga()); try { Integer i = (Integer)st.top(); // produce un errore catch (StackEmptyException e) { Prims.metti("Errore 2" + Prims.fineRiga()); ADT 19 Gestione degli errori public class StackFullException extends RuntimeException { public StackFullException(String err) { super(err); public class StackEmptyException extends RuntimeException { public StackEmptyException(String err){ super(err); ADT 20 10
11 Coda - queue La coda è un altra struttura di dati di tipo contenitore nella quale l inserzione e l eliminazione degli elementi avviene con il principio che chi arriva per primo viene servito per primo (FIFO - first in first out) Pensando alla coda come ad una sequenza di oggetti si dice che gli elementi vengono inseriti alla fine o in coda e vengono estratti dalla della coda La coda modella la situazione ad un sportello che fornisce un servizio ADT 21 Tipo di dato astratto coda Una coda può essere manipolata con due metodi: enqueue(o): inserisce l oggetto o alla fine della coda Ingresso: un oggetto Uscita: nessuna dequeue(): estrae dalla coda l elemento di e ne restituisce il valore; produce un errore se la coda è vuota Ingresso: nessuno Uscita: un oggetto metodi addizionali: size(): restituisce il numero di oggetti presenti in coda Ingresso: nessuno Uscita: un intero isempty(): restituisce un booleano vero se la coda è vuota Ingresso: nessuno Uscita: un booleano front(): restituisce il valore dell oggetto in alla coda senza rimuoverlo, produce un errore se la coda è vuota Ingresso: nessuno Uscita: un oggetto ADT 22 11
12 Operazioni su di una coda coda f e d c b a coda f e d c b a Due dequeue() coda g g f e d c enqueue(g) coda g f e d c Un dequeue() Come si è fatto per il TDA stack anche per le code possiamo definire un interfaccia JAVA ADT 23 interface Queue.java public interface Queue { public int size (); public boolean isempty (); public Object front () throws QueueEmptyException; public void enqueue (Object elemento); public Object dequeue () throws QueueEmptyException; // QueueEmptyException.java public class QueueEmptyException extends RuntimeException { public QueueEmptyException(String err) { super(err); ADT 24 12
13 Realizzazione di una coda con un array Per realizzare una coda possiamo utilizzare un array Q; tenendo in Q[0] la della coda l accodamento di un nuovo elemento richiede di incrementare il cursore che segna la posizione della fine della coda e di copiare il nuovo elemento nell array, l estrazione di un elemento dalla coda richiede invece n-1 operazioni per riempire lo spazio lasciato libero in. Conservando gli elementi in senso inverso l operazione di estrazione richiede una sola operazione ma l accodamento comporta di spostare gli n elementi presenti. ADT 25 Coda in un array Q Q coda a b g d e f coda b c d e f Testa Q[0] Coda Q[coda] ADT 26 13
14 Uso di un array circolare Per evitare che accodamento o estrazione richiedano n operazioni basta utilizzare due cursori f e r utilizzando la convenzione che f = r = 0 indichi la coda vuota, in presenza di elementi f indicherà la posizione dell elemento in e r la prima posizione libera in coda. Per evitare che la coda trabocchi in presenza di ripetute operazioni di enqueue e dequeue si deve pensare l array chiuso ad anello utilizzando la posizione Q[0] come se fosse successiva alla posizione Q[n-1] ADT 27 Coda in un array circolare Q g d e f coda Si sono inseriti 6 oggetti e tolti 2 oggetti coda Q 0 k 1 l i j Si sono inseriti altri 6 oggetti e tolti 6 oggetti Per distinguere la condizione di coda piena da quella di coda vuota conviene tenere una posizione di guardia e dire: coda vuota quando f = r e coda piena quando (r+1)mod N = f ADT 28 14
15 Algoritmi per gestire una coda in un array circolare Algoritmo size (): return (N + f + r) mod N Algoritmo isempty (): return (f = r) Algoritmo front (): if isempty() then lancia QueueEmptyException return Q[f] Algoritmo dequeue (): if isempty() then lancia QueueEmptyException tmp Q[f] f (f + 1) mod N return tmp Algoritmo enqueue (o) if (r + 1 ) mod N = f then lancia QueueFullException Q[r] o r (r + 1) mod N ADT 29 Liste concatenate o catene L impiego di una struttura statica come un array per gestire tipi di dati dinamici come stack e code è causa di spreco di risorse o di errori per trabocco. Tali limiti possono essere superati utilizzando come supporto una struttura dinamica composta da celle fra di loro concatenate detta lista concatenata o catena Una catena sarà composta da celle elementari dette nodi ciascuno composto da un oggetto e da un riferimento al prossimo nodo della catena. ADT 30 15
16 Catene Un nodo della catena elemento riferimento alla prossima cella ADT 31 Node.java nodo per una catena class Node { private Object elemento; private Node prossimo; public Node (Object elemento, Node prossimo) { this.elemento = elemento; this.prossimo = prossimo; void setelement (Object elemento) { this.elemento = elemento; void setnext (Node prossimo) { this.prossimo = prossimo; Object getelement () { return elemento; Node getnext () { return prossimo; ADT 32 16
17 LinkedStack.java stack in una catena public class LinkedStack implements Stack { private Node top; private int size; public int size () { return size; public boolean isempty () { return (top == ); public void push (Object elemento) { top = new Node(elemento, top); size++; public Object top () throws StackEmptyException { if (isempty()) throw new StackEmptyException("Stack vuoto"); return top.getelement(); public Object pop () throws StackEmptyException { if (isempty()) throw new StackEmptyException("Stack vuoto"); Object tmp = top.getelement(); top = top.getnext(); size--; return tmp; ADT 33 17
SOMMARIO STACK. STACK: specifica STACK
SOMMARIO STACK Pila (stack): una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per memorizzare e per estrarre dati. Specifica (descrizione). Implementazione (realizzazione).
DettagliOrario delle lezioni LABORATORIO TEORIA. mercoledì. martedì aula P/4. lab Turing. Strutture Dati
Orario delle lezioni LABORATORIO martedì 15.00-18.00 TEORIA mercoledì 16.00 18.00 lab Turing aula P/4 Libro di testo Data Structures & Algorithms in Java Michael T. Goodrich Roberto Tamassia John Wiley
DettagliPile e code. ADT e strutture dati per la rappresentazione di sequenze ad accesso LIFO e FIFO
Pile e code ADT e strutture dati per la rappresentazione di sequenze ad accesso LIFO e FIFO Le Pile Una pila è una struttura dati lineare, alla quale gli elementi possono essere aggiunti o sottratti da
Dettaglitipi di dato astratti
tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 ADT (Abstract Data Types) tipo di dato astratto Un ADT è un modello matematico con una collezione di operatori definiti su tale
DettagliImplementazione Java di un ADT
Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice
DettagliAlgoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2001/2002 APA - 2 1 Sommario ADT Pile Code. A.A. 2001/2002 APA - 3 ADT Le regole che
DettagliPile e code. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Pile e code Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2002/2003 APA - Pile e code 2 Politecnico di Torino Pagina 1 di 23 Sommario
DettagliListe concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:
Liste concatenate Collezione ordinata di nodi head tail next next next next element element element element Ø Anna Carlo Paolo Simona ciascun nodo contiene due riferimenti: - un riferimento "element" a
DettagliCorso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione
Domanda n. 1 Corso: Fondamenti di Informatica (Canale 5) a.a. 2016-17 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab10 Argomento: Algoritmi e complessita'
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Tipi astratti di dato (pile e code realizzate tramite array) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 09 ADT: Lista, Pila, Coda A. Miola Marzo 2007 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti Tipo
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
DettagliListe. Costo operazioni Tutte le operazioni hanno costo O(1)
Liste Liste (List, Linked List) Una sequenza di nodi, contenenti dati arbitrari e 1-2 puntatori all'elemento successivo e/o precedente Contiguità nella lista contiguità nella memoria Costo operazioni Tutte
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Inserimento in ordine
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 33 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Pila (Stack ) La struttura
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Capitolo 4 - Strutture di dati elementari This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit
DettagliEsercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list
Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Argomenti Strutture dati elementari e loro implementazioni in Java: Vettori Liste Stack (Pile) Queue (Code) Esempi di applicazione Tipo di dato astratto Tipo di dato astratto
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA7 B3 Gestione di una coda 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Tecnica di allocazione dinamica Concetto di coda e operazioni relative
DettagliFondamenti di Informatica II
Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.
DettagliArgomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code
Argomenti della lezione! Tipi di dato astratti! Strutture dati elementari Liste Implementazione di liste in Java Stack Code! Esempi di applicazione Tipo di dato astratto! Tipo di dato astratto o ADT (Abstract
DettagliCoda a doppio ingresso (Deque)
Coda a doppio ingresso (Deque) Definizione informale Una coda a doppio ingresso o Deque è un TDA simile alla Coda che supporta inserimenti e cancellazioni ad entrambe le estremità Deque si pronuncia deck
Dettaglitipi di dato astratti
tipi di dato astratti liste pile code alberi grafi Alberto Ferrari Informatica ADT o un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità
DettagliCorso di Algoritmi e Strutture Dati con Laboratorio. Tipi di dato pila e coda
Corso di Algoritmi e Strutture Dati con Laboratorio Tipi di dato pila e coda Uno stack è una collezione di elementi ( tipo di dato astratto) che supporta le seguenti operazioni tipiche: push, pop, peek
DettagliCoda a doppio ingresso (Deque)
Coda a doppio ingresso (Deque) Definizione informale Una coda a doppio ingresso o Deque è un TDA simile alla Coda che supporta inserimenti e cancellazioni ad entrambe le estremità Deque si pronuncia deck
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
DettagliADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)
ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente
DettagliSTRUTTURE DATI: OLTRE GLI ARRAY LISTE
STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi
DettagliAlberi Binari Alberi Binari
Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro
DettagliIn questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono
DettagliLaboratorio di Programmazione Lezione 3. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 04 Introduzione ai Tipi astratti di dato A. Miola Febbraio 2007 http://www.dia.uniroma3.it/~java/fondinf2/ Introduzione ADT 1
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione IX Tatiana Zolo zolo@cs.unipr.it 1 TIPI STRINGA Il C++ fornisce due rappresentazioni: stringa di caratteri stile C e la classe stringa introdotta nel C++ standard.
DettagliIl TDA List è la versione orientata agli oggetti della struttura dati lista. Una sequenza di nodi
List Il TDA List Il TDA List è la versione orientata agli oggetti della struttura dati lista Una sequenza di nodi La versione astratta del nodo sarà il TDA Position Possiamo scrivere dei metodi che prendono
DettagliList. Il TDA List. Interfaccia Position. Il TDA Position. Il TDA List 1. Ancora su Position
Il TDA List List Il TDA List è la versione orientata agli oggetti della struttura dati lista Una sequenza di nodi La versione astratta del nodo sarà il TDA Position Possiamo scrivere dei metodi che prendono
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
DettagliFondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati
Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario
DettagliAlgoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
DettagliAgent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Input/output (in Java) Michele Tomaiuolo Eccezione Un eccezione è
DettagliImplementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista
Liste concatenate Implementazione della coda con liste concatenate head (front della coda) tail (rear della coda) Ø e y a x v il front della coda è memorizzato nel primo nodo (head) della lista il rear
Dettagli10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica
Caratteristiche degli array Principali caratteristiche degli array: LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli
DettagliRETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
Dettagliheap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata
heap heap concetti ed applicazioni heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. tutte le foglie sono a sinistra ma non è un BST!! 3. ogni nodo contiene una chiave maggiore
DettagliProgrammare. Compilatori e interpreti. Editor :: vi. Hello1.c. #include <stdio.h> >> cc Hello1.c. main() { printf( \n Hello World!
Programmare Hello1.c #include printf( \n Hello World! \n ); >> cc Hello1.c >> a.out Hello World! >> Hello1.c = file sorgente per scriverlo occorre un editor cc = compilatore per altri linguaggi
Dettaglialgoritmi e strutture di dati
algoritmi e strutture di dati tipi astratti di dato (pile, code, liste implementate tramite array) m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright
DettagliInformatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda
Informatica 3 LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 Lezione 13 - Modulo 1 Free list Free list Le funzioni di sistema
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliTipi di dato e Strutture dati elementari
Tipi di dato e Strutture dati elementari Ing. Paolo Craca Anno accademico 2007/2008 Tipi di dato e Strutture dati elementari 1 / 40 Cosa vedremo in questo seminario 1 Introduzione 2 Pile 3 Code 4 5 Bibliografia
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
Dettagli1 Strutture di dati dinamiche. 2 Vector come esempio di array dinamico
1 Strutture di dati dinamiche Le strutture dinamiche servono per memorizzare i dati dei quali non si sa a priori la loro dimensione. Ad esempio non sappiamo a priori quanti contatti avremo nella nostra
DettagliE` un tipo astratto di dati che supporta tutti i metodi dell'adt Array list e dell'adt Lista di nodi più i seguenti:
E` un tipo astratto di dati che supporta tutti i metodi dell'adt Array list e dell'adt Lista di nodi più i seguenti: Position atindex(int r): restituisce la posizione dell'elemento di indice r; si verifica
DettagliPile e Code. Definiamo una collezione come un gruppo di oggetti, detti gli elementi della collezione.
Pile e Code lezione 4 Collezioni Defiamo una collezione come un gruppo di oggetti, detti gli elementi della collezione. Durante il corso defiremo delle tecniche di base per gestire modo efficiente collezioni
DettagliEsercizio: Lista Circolare
Esercizio: Lista Circolare Si realizzi in Java un gestore di una lista circolare. La dimensione minima della lista è 2 elementi (ed è anche la dimensione iniziale). La dimensione massima è 20 elementi.
DettagliLe eccezioni. Eccezioni
Le eccezioni Che cosa sono le eccezioni In un programma si possono generare situazioni critiche che provocano errori Non è però accettabile, soprattutto in applicazioni complesse, che un qualunque errore
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Stack e Code Corso di Laurea Codice insegnamento Email docente Anno accademico Informatica 13917 murano@na.infn.it 2007/2008 Lezione numero:
DettagliEsercizio. Strutture Dati
Esercizio Si scriva un metodo public Position sibling(position v) che preso in input un nodo v restituisca il fratello di v. Il metodo dovrà lanciare una BoundaryViolationException nel caso in cui
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
DettagliGerarchie e polimorfismo: liste
Gerarchie e polimorfismo: liste 1 Generalizzare le liste di interi List lista di oggetti non modificabile vorremo poi definire un sottotipo versione ordinata 2 List classe astratta usate i sottotipi per
DettagliEccezioni. Programmazione in rete e laboratorio Eccezioni. Classi eccezioni
Programmazione in rete e laboratorio 2004-05 Alberto Martelli Eccezioni Eccezioni Eccezioni: meccanismo per trattare condizioni eccezionali - divisione per zero - indice di array fuori dai limiti - errori
DettagliEccezioni. Comportamento di default (esempio) Propagazione delle eccezioni
Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel
DettagliProva d Esame Compito A
Prova d Esame 19.07.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
DettagliIL COMPONENTE STACK (pila)
COMPONENTI SOFTWARE Diverse tipologie di componenti: Librerie semplici collezioni di procedure e funzioni.non fanno uso di variabili globali o statiche e non definiscono nuovi tipi (visibili all esterno)
DettagliUniversità Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1
Università Ca Foscari DAIS Programmazione ad Oggetti Esame del modulo 1 Nome: Matricola: Samuel Rota Bulò, a.a. 2012/2013 Programmazione ad Oggetti a.a. 2012/2013 Esame del modulo 1 Nome: Samuel Rota Bulò
DettagliADT STACK (PILA) ADT STACK (PILA)
ADT STACK (PILA) Collezione di elementi dello stesso tipo (multi-insieme) gestito con politica LIFO (Last-In -- First-Out): il primo elemento entrato è l ultimo a uscire Svariate applicazioni del concetto
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
DettagliIl TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliEccezioni in Java A. FERRARI
Eccezioni in Java A. FERRARI Eccezioni Una eccezione è un oggetto che descrive una situazione anomala o una situazione di errore Le eccezioni vengono «lanciate» (throw) in un punto del programma e possono
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliDefinizione informale
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliDefinizione informale. Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliCORSO DI PROGRAMMAZIONE
ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE PILE E CODE DI DATI DISPENSA 11.02 11-02_Pile_Code_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative Common CC BY-NC-SA.
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliAltro di ADT. Dominio. Funzioni. Dominio. Funzioni. Costanti - Collezioni
di astratto Abstract Data Type Paolo Bison Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova definizione di un indipendente dalla sua rappresentazione interna e dalla effettiva implementazione
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Strutture dati elementari Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy
DettagliFONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA7 B1 Gestione di liste 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Tecnica di allocazione dinamica Gestione di liste Classificazione delle
DettagliHeap e Code di Priorità
Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non
DettagliLe liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5
Le liste ADT e strutture dati per la rappresentazione di sequenze L ADT delle liste Una lista di valori di tipo A è una sequenza finita: a1, a2, L, an dove ai A, per ogni i valore lunghezza posizione L
DettagliADT STACK (PILA) Svariate applicazioni del concetto di stack:
ADT STACK (PILA) Collezione di elementi dello stesso tipo (multi-insieme) gestito con politica LIFO (Last-In -- First-Out): il primo elemento entrato è l ultimo a uscire Svariate applicazioni del concetto
DettagliTipi astratti pila e coda
Tipi astratti pila e coda Una pila è un tipo astratto che consente di rappresentare un insieme di elementi in cui ogni eliminazione ha per oggetto l elemento che è stato inserito per ultimo. Questa disciplina
DettagliProva d Esame Compito A
Prova d Esame 19.04.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
DettagliLINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR
LINKEDLIST: iteratore Il metodo iterator() restituisce un oggetto iteratore sulla lista per scandire gli elementi in sequenza a partire dall inizio della lista. public Iterator iterator() { return new
Dettagliin più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,...
ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,... una stringa è qualcosa che si può concatenare, spezzare in più stringhe,...
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello
DettagliFondamenti di Informatica
Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste
DettagliGestire le situazioni di errore
Gestire le situazioni di errore #include using namespace std; Classe VettoreDiInteri const int MAX = 10; class VettoreInteri { int v[max]; public: ; Gestire le situazioni di errore Ottenere
DettagliUniversità Ca Foscari DAIS. Programmazione ad Oggetti. Esame del modulo 1
Università Ca Foscari DAIS Programmazione ad Oggetti Esame del modulo 1 Nome: Matricola: Samuel Rota Bulò, a.a. 2012/2013 Programmazione ad Oggetti a.a. 2012/2013 Esame del modulo 1 Nome: Samuel Rota Bulò
DettagliMetodi di una Collection
Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare
DettagliSpecifica: la sintassi. Specifica: la semantica. Specifica: la semantica
Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti
DettagliLaboratorio di reti I
Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java
Dettagli