Implementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista
|
|
- Enrico Martinelli
- 6 anni fa
- Visualizzazioni
Transcript
1 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 della coda è memorizzato nell ultimo nodo (tail) della lista
2 ADT Coda Implementazione con liste concatenate public class NodeQueue<E> implements Queue<E>{ protected Node<E> head, tail; // the head and tail nodes protected int size; /** Creates an empty queue. */ public NodeQueue() { head = null; tail = null; size = 0; public int size() { return size; //# Return the current queue size public boolean isempty() { //# Returns true iff queue is empty if ( (head==null) && (tail==null) ) return true; return false;...
3 ADT Coda Implementazione con liste concatenate... public void enqueue(e elem) { Node<E> node = new Node<E>(); node.setelement(elem); node.setnext(null); // node will be new tail node if (size == 0) head = node; // special case of a previously empty queue else tail.setnext(node); // add node at the tail of the list tail = node; // update the reference to the tail node size++; public E front() //# Return the first queue element throws EmptyQueueException { if (size == 0) throw new EmptyQueueException("Queue is empty."); return head.getelement();...
4 ADT Coda Implementazione con liste concatenate... public E dequeue() throws EmptyQueueException { if (size == 0) throw new EmptyQueueException("Queue is empty."); E tmp = head.getelement(); head = head.getnext(); size--; if (size == 0) tail = null; // the queue is now empty return tmp;
5 La lista di nodi (Node List) Il concetto di posizione La lista di nodi (node list) è un contenitore di oggetti che: memorizza ciascun elemento in una posizione mantiene le posizioni degli oggetti in un ordinamento lineare il concetto di posizione formalizza l'idea di posto di un elemento La posizione non è altro che il nome che permette di riferirsi all'elemento ad essa associato
6 La lista di nodi (Node List) Il concetto di posizione Attenzione: la posizione è associata sempre allo stesso elemento posizione L
7 La lista di nodi (Node List) Il concetto di posizione Attenzione: la posizione è associata sempre allo stesso elemento posizione L non cambia mai, neanche in seguito a inserimenti
8 La lista di nodi (Node List) Il concetto di posizione Attenzione: la posizione è associata sempre allo stesso elemento posizione L non cambia mai, neanche in seguito a inserimenti o cancellazioni
9 La lista di nodi (Node List) Il concetto di posizione Attenzione: la posizione è associata sempre allo stesso elemento posizione L Morale: continueremo a riferirci allo stesso elemento con la stessa posizione
10 La lista di nodi (Node List) La posizione come tipo astratto di dati La posizione definisce essa stessa un tipo astratto di dati che supporta il seguente unico metodo: element(): Restituisce l'elemento in questa posizione
11 Tipo di dati e operazioni Tipi di dati: oggetti arbitrari (come al solito) Operazioni: Metodi generici: - integer size() - boolean isempty() Metodi di accesso: - Position first(): Restituisce la posizione del primo elemento della lista - Position last(): Restituisce la posizione dell ultimo elemento della lista - Position prev(position p): Restituisce la posizione dell elemento che precede l elemento in posizione p - Position next(position p): Restituisce la posizione dell elemento che segue l elemento in posizione p
12 Tipo di dati e operazioni Metodi di aggiornamento: - E set(position p, E e): Rimpiazza l'elemento in posizione p con e, restituendo l'elemento che prima era in posizione p - addbefore (Position p, E e): Inserisce l elemento e nella posizione che precede la posizione p - addafter(position p, E e): Inserisce l elemento e nella posizione che segue la posizione p - addfirst(e e): Inserisce l elemento e come primo elemento - addlast(e e): Inserisce l'elemento e come ultimo elemento - E remove(position p): Rimuove e restituisce l elemento in posizione p
13 Eccezioni InvalidPositionException Viene lanciata quando viene specificata come argomento una posizione non valida (ad esempio la posizione è null oppure è inesistente) BoundaryViolationException Viene lanciata quando si tenta di accedere ad una posizione al di fuori della lista (ad esempio si chiama il metodo next sull'ultima posizione della lista) EmptyListException Viene lanciata quando si invocano i metodi first() o last() su una lista vuota
14 L'interfaccia Position package position; public interface Position<E> { E element();
15 L'interfaccia PositionList public interface PositionList<E> {... public int size(); public boolean isempty(); public Position<E> first() throws EmptyListException; public Position<E> last() throws EmptyListException; public Position<E> next(position<e> p) throws InvalidPositionException, BoundaryViolationException; public Position<E> prev(position<e> p) throws InvalidPositionException, BoundaryViolationException; public void addfirst(e e); public void addlast(e e);
16 L'interfaccia PositionList public interface PositionList<E> {... public void addafter(position<e> p, E e) throws InvalidPositionException; public void addbefore(position<e> p, E e) throws InvalidPositionException; public E remove(position<e> p) throws InvalidPositionException; public E set(position<e> p, E e) throws InvalidPositionException;
17 Implementazione basata su liste dopp. concatenate header trailer Liste doppiam. concatenate NODI ADT Lista POSIZIONI I nodi della lista doppiamente concatenata implementano le posizioni dell'adt node list
18 Implementazione dell'interfaccia Position public class DNode<E> implements Position<E> { private DNode<E> prev, next; private E element; public DNode(DNode<E> newprev, DNode<E> newnext, E elem) { prev = newprev; next = newnext; element = elem; public E element() { if ((prev == null) && (next == null)) throw new InvalidPositionException("La posizione non e` in una lista!"); return element; public DNode<E> getnext() { return next; public DNode<E> getprev() { return prev; public void setnext(dnode<e> newnext) { next = newnext; public void setprev(dnode<e> newprev) { prev = newprev; public void setelement(e newelement) { element = newelement;
19 Implementazione di addafter Algorithm addafter(p,e): header posizione p A B C trailer
20 Implementazione di addafter Algorithm addafter(p,e): Crea un nuovo nodo v header posizione p A B C trailer
21 Implementazione di addafter Algorithm addafter(p,e): Crea un nuovo nodo v v.setelement(e) header posizione p A B C trailer e
22 Implementazione di addafter Algorithm addafter(p,e): Crea un nuovo nodo v v.setelement(e) v.setprev(p) header posizione p A B C trailer e
23 Implementazione di addafter Algorithm addafter(p,e): Crea un nuovo nodo v v.setelement(e) v.setprev(p) v.setnext(p.getnext()) header posizione p A B C trailer e
24 Implementazione di addafter Algorithm addafter(p,e): Crea un nuovo nodo v v.setelement(e) v.setprev(p) v.setnext(p.getnext()) (p.getnext()).setprev(v) header posizione p A B C trailer e
25 Implementazione di addafter Algorithm addafter(p,e): Crea un nuovo nodo v v.setelement(e) v.setprev(p) v.setnext(p.getnext()) (p.getnext()).setprev(v) p.setnext(v) header posizione p A B C trailer e
26 Implementazione di remove Algorithm remove(p): header posizione p.getprev() posizione p posizione p.getnext() trailer A B C D
27 Implementazione di remove Algorithm remove(p): temp := p.element (p.getprev()).setnext(p.getnext()) header posizione p.getprev() posizione p posizione p.getnext() trailer A B C D
28 Implementazione di remove Algorithm remove(p): temp := p.element (p.getprev()).setnext(p.getnext()) (p.getnext()).setprev(p.getprev()) header posizione p.getprev() posizione p posizione p.getnext() trailer A B C D
29 Implementazione di remove Algorithm remove(p): temp := p.element (p.getprev()).setnext(p.getnext()) (p.getnext()).setprev(p.getprev()) p.setprev( null ) header posizione p.getprev() posizione p posizione p.getnext() trailer A Ø B C D
30 Implementazione di remove Algorithm remove(p): temp := p.element (p.getprev()).setnext(p.getnext()) (p.getnext()).setprev(p.getprev()) p.setprev( null ) p.setnext( null ) header posizione p.getprev() posizione p posizione p.getnext() trailer A Ø B Ø C D
31 Implementazione di remove Algorithm remove(p): temp := p.element (p.getprev()).setnext(p.getnext()) (p.getnext()).setprev(p.getprev()) p.setprev( null ) p.setnext( null ) return temp header posizione p.getprev() posizione p posizione p.getnext() trailer A Ø B Ø C D
32 Implementazione dell'interfaccia PositionList import position.*; public class NodePositionList<E> implements PositionList<E> {... protected int numelts; // Numero di elementi nella lista protected DNode<E> header, trailer; // Nodi sentinella public NodePositionList() { numelts = 0; header = new DNode<E>(null, null, null); trailer = new DNode<E>(header, null, null); header.setnext(trailer);
33 Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... public int size() { return numelts; public boolean isempty() { return (numelts == 0); public Position<E> first() throws EmptyListException { if (isempty()) throw new EmptyListException("La lista e` vuota"); return header.getnext(); public Position<E> last() throws EmptyListException { if (isempty()) throw new EmptyListException("La lista e` vuota"); return trailer.getprev();...
34 Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... protected DNode<E> checkposition(position<e> p) throws InvalidPositionException { if (p == null) throw new InvalidPositionException ("Null passato come posizione"); if (p == header) throw new InvalidPositionException ("header non e` una posizione valida di una lista"); if (p == trailer) throw new InvalidPositionException ("trailer non e` una posizione valida di una lista"); try { DNode<E> temp = (DNode<E>) p; if ((temp.getprev() == null) (temp.getnext() == null)) throw new InvalidPositionException ("La posizione non fa parte di una lista"); return temp; catch (ClassCastException e) { throw new InvalidPositionException ("Il tipo della posizione non e` valido per questa lista");...
35 Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... public Position<E> prev(position<e> p) throws InvalidPositionException, BoundaryViolationException { DNode<E> v = checkposition(p); DNode<E> prev = v.getprev(); if (prev == header) throw new BoundaryViolationException ("non posso retrocedere oltre l'inizio della lista"); return prev;... public Position<E> next(position<e> p) throws InvalidPositionException, BoundaryViolationException { DNode<E> v = checkposition(p); DNode<E> next = v.getnext(); if (next == trailer) throw new BoundaryViolationException ("non posso avanzare oltre la fine della lista"); return next;
36 Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... public void addafter(position<e> p, E element) throws InvalidPositionException { DNode<E> v = checkposition(p); numelts++; DNode<E> newnode = new DNode<E>(v, v.getnext(), element); v.getnext().setprev(newnode); v.setnext(newnode);... public void addfirst(e element) { numelts++; DNode<E> newnode = new DNode<E>(header, header.getnext(), element); header.getnext().setprev(newnode); header.setnext(newnode);
37 Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> { public E remove(position<e> p) throws InvalidPositionException { DNode<E> v = checkposition(p); numelts--; DNode<E> vprev = v.getprev(); DNode<E> vnext = v.getnext(); vprev.setnext(vnext); vnext.setprev(vprev); E velem = v.element(); // scollega la posizione dalla lista rendendola invalida v.setnext(null); v.setprev(null); return velem;
Metodi 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
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
DettagliCorso: Strutture Dati Docente: Annalisa De Bonis
Heap Corso: Strutture Dati Docente: Annalisa De Bonis Definizione l Un heap è un albero binario che contiene entrate della forma (key, value) nei suoi nodi e soddisfa le seguenti proprietà: l Heap-Order:
Dettaglilezione 9 min-heap binario Heap e Alberi posizionali generali
lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato
DettagliStruttura dati astratta Coda
CODE Struttura dati astratta Coda La coda o queue è una struttura dati astratta in cui l'inserimento e l estrazione sono consentite solo in specifiche posizioni; in particolare, l'inserimento è consentito
DettagliStrutture dati elementari
Strutture dati elementari Damiano Macedonio Università Ca' Foscari di Venezia mace@unive.it Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml)
DettagliContenitori: Pile e Code
Contenitori: Pile e Code D O T T. I N G. L E O N A R D O R I G U T I N I D I PA R T I M E N T O I N G E G N E R I A D E L L I N F O R M A Z I O N E U N I V E R S I T À D I S I E N A V I A R O M A 5 6 5
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliProgrammazione ad Oggetti Modulo A (Esame del 11/9/2015)
Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");
DettagliQUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio
QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre
DettagliTipi di dati astratti e strutture dati (capitolo 14, e ancora capitolo 9)
SETTIMANA 8 Tipi di dati astratti e strutture dati (capitolo 14, e ancora capitolo 9) Tipi di dati astratti Definizione una struttura dati (data structure) è un modo sistematico di organizzare i dati in
DettagliInformatica 3. Informatica 3. LEZIONE 12: Liste. Lezione 12 - Modulo 1. Posizione corrente. Introduzione
Informatica 3 Informatica 3 LEZIONE 12: Liste Lezione 12 - Modulo 1 Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata ADT lista e implementazione basata su array Politecnico
DettagliStrutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
DettagliAlgoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari
Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code
Dettagli22 - Strutture Dati (Java Collections Framework)
22 - Strutture Dati (Java Collections Framework) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 12 ADT: Lista, Pila, Coda A. Miola Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti!Tipo
DettagliLaboratorio di Sistemi Distribuiti Leonardo Mariani
Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante
Dettaglialberi tipo astratto, implementazione, algoritmi
alberi tipo astratto, implementazione, algoritmi argomenti tipo astratto albero definizione implementazione in Java algoritmi di visita alberi binari implementazione di alberi binari in Java ASD - Alberi
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
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
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliFondamenti di Informatica T1 Mappe
Fondamenti di Informatica T1 Mappe Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 16 Mappe Matrice N x 2 : Gli elementi della prima colonna,
DettagliAstrazioni sul controllo. Iteratori
Astrazioni sul controllo Iteratori Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di un operazione che consenta cicli (iterazioni) Es.: gli
DettagliPer semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Mappe Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 1 Mappe: definizione Tabelle a due colonne:
Dettaglipublic double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40
DettagliGrafi: visita generica
.. Grafi: visita generica Una presentazione alternativa (con ulteriori dettagli) Algoritmi di visita Scopo: visitare tutti i vertici di un grafo (si osservi che per poter visitare un vertice occorre prima
DettagliCompito di Fondamenti di Informatica
Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette
Dettagli4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste
4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1
DettagliCompito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI
Compito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI Esercizio 1 Si consideri la seguente classe che specifica liste di interi: public class List { private int head; private List tail; public
DettagliIl Java Collections Framework
Il Java Collections Framework Il Java Collections Framework è una libreria formata da un insieme di interfacce e di classi che le implementano per lavorare con gruppi di oggetti (collezioni). Le interfacce
DettagliInterfacce per il riutilizzo del codice
Interfacce per il riutilizzo del Nelle SoluzioniLab3 c è una classe di nome Operasunumeri con la quale si esegue il calcolo della somma, del massimo e del numero di dati inseriti. public class Operasunumeri{
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliIL CONCETTO DI CLASSE
IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi
DettagliLaboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]
Vogliamo realizzare un prototipo di applicativo web che consenta a un gruppo di utenti di autenticarsi. In prima istanza, carichiamo in memoria tutti gli utenti ammessi ad accedere al sistema, in seconda
DettagliEsonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio
DettagliChiamata delle funzioni JavaScript da un applet
Chiamata delle funzioni JavaScript da un applet Il codice Java delle applet può essere eseguito nei browser Web su cui è presente il Java Plug-in, un meccanismo che gestisce le interazioni tra i browser
DettagliMain System Monitor Keyboard
Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti
DettagliIl TDA Tree. Alberi. Esempio. Alberi. Applicazioni. Definizione di albero
Il T Tree lberi In informatica, un albero è un modello astratto di una struttura dati gerarchica Struttura dati non lineare Si pensi al file system di un sistema operativo Le relazioni in un albero sono
Dettagliobiettivi di questa seconda metà del corso fare un passo avanti rispetto a :... meccanismi di composizione dei dati
obiettivi di questa seconda metà del corso fare un passo avanti rispetto a :... meccanismi di composizione dei dati puntatori ( strutture dinamiche collegate) strutture dinamiche collegate (liste, pile,
DettagliCorso di Progettazione del Software
T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 1/28 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso di
Dettaglistrutturare dati e codice
Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;
Dettagli7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:
7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)
DettagliIntroduzione alla Programmazione in Java attraverso un esempio commentato
Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello dell 8 Febbraio 2005 Esercizio 1 (ASD) 1. Dire quale delle seguenti affermazioni è vera giustificando la risposta. (a) lg
DettagliARRAYLIST. Programmazione con Java ArrayList e Generics 2 08/06/2014. Daniela Micucci daniela.micucci@unimib.it
Programmazione con Java ArrayList e Generics Daniela Micucci daniela.micucci@unimib.it ARRAYLIST Programmazione con Java ArrayList e Generics 2 1 La classe ArrayList Fa parte delle librerie standard di
DettagliSAPIENZA Università di Roma, Facoltà di Ingegneria
SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione
DettagliLezione 4 Le code. Informatica. 24 Aprile Le pizze devono essere preparate e consegnate seguendo l ordine di arrivo degli ordini
Lezione 4 Le code Informatica 24 Aprile 2015 Bender il pizzaiolo robot Bender ha aperto una pizzeria da asporto con i suoi amici: Dr. Zoidberg risponde al telefono e riceve gli ordini Bender prepara le
Dettagli24 - Possibili approfondimenti
24 - Possibili approfondimenti 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
DettagliErrata Corrige di Manuale di Java 8
Errata Corrige di Manuale di Java 8 pag. 43 - par. 2.5.1 - primo riquadro che riporta linee di codice public class Punto { public Punto() //metodo costruttore { deve essere corretto come di seguito: public
DettagliEsercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
DettagliStruttura di dati lista concatenata
Struttura di dati lista concatenata Lista concatenata Consideriamo una nuova modalità di memorizzare i dati in cui l accesso non avviene più tramite un indice, che individua la posizione del dato nella
DettagliClassi Wrapper. int Integer float Float char Char byte Byte double Double. classe "wrapper"
1 Classi Wrapper classe "wrapper" int Integer float Float char Char byte Byte double Double Generano oggetti che hanno come variabile di istanza un tipo di dato primitivo con nome uguale Integer int Float
DettagliCorso di Algoritmi e Strutture Dati con Laboratorio. Java Collections Framework (I parte)
Corso di Algoritmi e Strutture Dati con Laboratorio Java Collections Framework (I parte) L infrastruttura JCF è una raccolta di interfacce e classi, tra loro correlate, appartenenti al pacchetto java.util.
DettagliUtilizzo e scrittura di classi
Utilizzo e scrittura di classi Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 14 novembre, 2001 Gino Perna Implementazione di classi in C++ UN ESEMPIO DI CLASSE: RISULTATI
DettagliLezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi
Università degli Studi di Pisa Dipartimento di Informatica Lezione n.2b LPR-A-09 Threads: Callable & Future 6/10/2008 Vincenzo Gervasi Lezione U 2b: Callable & Future Vincenzo Gervasi 1 CALLABLE E FUTURE
DettagliEsercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 6 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti
DettagliPile (stacks) e code (queues)
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Pile e Code Marco Antoniotti Pile (stacks) e code (queues) Tipi di dati fondamentali Applicazioni molteplici Le operazioni standard Aggiungi
DettagliCreazione, eliminazione, lettura e scrittura di file di testo
Creazione, eliminazione, lettura e scrittura di file di testo Creazione Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file
DettagliSubtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo
Subtype Polymorphism Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch Conversioni di tipo Variabile: locazione con un tipo associato Tipo della variabile
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliPrima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.
I mattoni di base di un programma Java Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 2 1 ottobre
DettagliGrafi pesati Minimo albero ricoprente
Algoritmi e Strutture Dati Definizioni Grafi pesati Minimo albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliI B+ Alberi. Sommario
I B+ Alberi R. Basili (Basi di Dati, a.a. 2002-3) Sommario Indici organizzati secondo B + -alberi Motivazioni ed Esempio Definizione Ricerca in un B + -albero Esempio Vantaggi Inserimento/Cancellazione
DettagliEsercitazione 15. Il problema dello Sleeping Barber
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,
DettagliChat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
DettagliControllo degli accessi
Il linguaggio Java Il controllo degli accessi alle classi ed ai membri di una classe Controllo degli accessi Accesso alle classi Accesso alle classi package package miopackage; public public class class
DettagliParcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento
Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate
DettagliIntroduzione agli Algoritmi ed alle Strutture Dati Anno Accademico 2015/2016 Appello 23/6/2016
1. Indicare quali delle seguenti affermazioni sono vere e quali sono false. a. n 3 = Θ (n 3log n ) b. n! = Ω(n n ) c. log n = Θ (log( n 2 )) d. n 3 =Ω(n) e. 9 log 3 n = Θ (n) 2. Si dimostri in modo formale
DettagliADT Coda con priorità
Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni
DettagliEccezioni ed asserzioni
Eccezioni ed asserzioni I concetti relativi ad eccezioni, errori ed asserzioni e le relative gestioni, permettono allo sviluppatore di scrivere del software robusto, ovvero che riesca a funzionare correttamente,
DettagliEreditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
DettagliListe Doppiamente Collegate
Liste Doppiamente Coegate Consideriamo una ista sempicemente coegata Testa dea ista 3, 5, 20 Aggiungiamo ad ogni eemento un puntatore a eemento precedente Chiudiamo, in modo circoare, a ista (da notare
DettagliCorso di Fondamenti di Informatica. La ricorsione
Corso di Fondamenti di Informatica La ricorsione La ricorsione Si dice che un oggetto (una struttura dati, una funzione matematica, un concetto ) è ricorsivo se è possibile darne una definizione in termini
DettagliLe basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
DettagliStringTokenizer: esempio. Lettura di matrici da file. Come procedere? Lettura matrice: esempio - I. La classe StringTokenizer
4 StringTokenizer: esempio Lettura di matrici da file import java.util.*; class prova public static void main(string[] a) String s="ciao a tutti"; StringTokenizer st=new StringTokenizer(s); while(st.hasmoretokens())
DettagliUtilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:
1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente
DettagliAlgoritmi di ordinamento (II parte)
Algoritmi di ordinamento (II parte) E3: sommario Studio di due implementazioni di algoritmi avanzati Algoritmo ordinamento veloce (QuickSort) Algoritmo per fusione (MergeSort) Metodi offerti in java.util
DettagliScope e visibilità per classi
Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:
DettagliOOP: L13: Eccezioni e loro trattamento in Java
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica A. Acc. 2005/2006 Programmazione Orientata agli Oggetti OOP: L13: Eccezioni e loro trattamento
DettagliGestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint
parseint parseint showinputdialog JOptionPanenull null throw BankAccount IllegalArgumentException amount public class BankAccount { public void withdraw(double amount) { if (balance < amount) { // Parametro
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
DettagliPolitecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola
Politecnico di Milano Ingegneria del Software a.a. 2006/07 Appello del 14 settembre 2007 Cognome Nome Matricola Sezione (segnarne una) Baresi, Ghezzi, Morzenti, SanPietro Istruzioni 1. La mancata indicazione
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
DettagliCorso di Fondamenti di Informatica II
Corso di Fondamenti di Informatica II Algoritmi sulle liste a.a. 2009/2010 Francesco Fontanella Creare una lista da un vettore (ricorsivo) nodo* create_list(tipovalue v[], int n) nodo *l; if (n == 0) return
DettagliMarco Faella I pattern Template Method e Factory Method
Marco Faella I pattern Template Method e Factory Method 12 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliIndice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma
Indice Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java Introduzione all ambiente di sviluppo - Compilazione ed esecuzione di un programma - Compilazione ed esecuzione
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
DettagliProgrammazione CORBA in Java
Programmazione CORBA in Java Ing. Andrea Santoro http://www.dis.uniroma1.it/~santoroa santoro@dis.uniroma1.it (codice preparato dall ing. Alessandro Termini) Overview Naming Service Motivazioni Name Service
DettagliProgrammazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):
Programmazione I 11 gennaio 2012 Matricola:........................................................................ Cognome:........................................................................ Nome:...........................................................................
DettagliPHP: Interfacce; Gestione errori ed eccezioni. Pasqualetti Veronica
PHP: Interfacce; Gestione errori ed eccezioni i Pasqualetti Veronica Interfacce In PHP non si possono ereditare proprietà da più classi. 2 Per ovviare al problema si possono creare delle interfacce che
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti I Template a.a. 2008/2009 Claudio De Stefano 1 Programmazione generica E una tecnica di programmazione che permette di definire una classe di oggetti (o una funzione)
DettagliProva d Esame 07.04.2006 Compito A
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public
Dettaglipublic BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }
Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double
DettagliProva d Esame 07.04.2006 Compito B
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public
DettagliCorso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)
1) Si considerino le classi Java: Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) class Card Card (String seed, int value) this.seed=seed; this.value=value; String seed; int
DettagliHeap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
Dettagli