Sul pattern Iterator
|
|
- Gennaro Bernardi
- 6 anni fa
- Visualizzazioni
Transcript
1 Sul pattern Iterator 1 Introduzione Capita spesso di aver a che fare con strutture dati complesse, come ad esempio, liste, code, ecc. È buona norma accedere a queste strutture senza esporre la loro organizzazione. Inoltre, è a volte necessario percorrere la struttura in modi diversi, senza per questo caricare l interfaccia della medesima con un numero eccessivo di metodi. Il pattern Iterator ha lo scopo di fornire un oggetto (o più oggetti) per percorrere la struttura in modo sequenziale. Un iterator corrisponde al concetto di cursore: il cursore punta a un elemento nella struttura e fornisce i metodi per percorrerla, esaminare l elemento corrente, ecc. Figura 1: Schema di un iteratore Nello schema di Figura 1 l iteratore ha un riferimento all aggregato che esso è in grado di percorrere; il significato dei metodi dell iteratore è sostanzialmente questo: first() inizializza l iteratore restituendo il primo elemento dell aggregato; getnext() restituisce l elemento corrente e fa avanzare il cursore 1 ; hasnext() dice se nell aggregato ci sono o meno ancora elementi, ma non fa avanzare il cursore. Il concetto di iteratore ci consente di disaccoppiare la struttura dal suo accesso. Un iteratore viene di norma istanziato passando l aggregato su cui deve operare. In Figura 1, il programma client tiene un riferimento all iteratore per accedere all aggregato. Dato un certo aggregato, è ovviamente possibile definire per esso differenti iteratori aventi il compito di implementare differenti tecniche di accesso. 2 Il polimorfismo Nel modello di Figura 1 il client vede un iteratore direttamente collegato all aggregato e quindi sa che di che tipo di aggregato si tratta. Il concetto di iteratore può essere generalizzato ricorrendo al polimorfismo, definendo un aggregato astratto dal quale si deriva un aggregato concreto, per i quale viene istanziato (dallo stesso aggregato concreto) il relativo iteratore, come schematizzato in Figura 2. Nello schema di Figura 2, l aggregato (concreto) deve passare se stesso al costruttore dell iteratore (in modo che esso sappia su quale specifico aggregato concreto sta lavorando). L aggregato restituisce il riferimento all iteratore appena creato al programma client. Mostriamo ora come lo schema di Figura 2 si traduce in classi Java. La classe Aggregato è astratta e definisce il metodo astratto createiterator() che restituisce un oggetto di tipo Iteratore. 1 Ad esempio: se getnext() viene eseguito subito dopo first(), restituisce il secondo elemento dell aggregato e posiziona il cursore sul terzo elemento. 1
2 Figura 2: Il pattern Iterator abstract class Aggregato { public abstract Iteratore createiterator(); \\ altro La classe AggregatoConcreto deve implementare il metodo appena menzionato. class AggregatoConcreto extends Aggregato { public Iteratore createiterator() { Iteratore i = new IteratoreConcreto(this); return i; \\ altro L iteratore prende la forma seguente. abstract class Iteratore { public abstract Elemento first(); public abstract Boolean hasnext(); public abstract Elemento getnext(); Mentre l iteratore concreto ha questa forma: class IteratoreConcreto extends Iteratore { private Aggregato a; public IteratoreConcreto(Aggregato a){ this.a= a; public Elemento first() { // public Elemento getnext() { // public Boolean hasnext() { // Il Client opera in questo modo: Istanzia un AggregatoConcreto (in modo polimorfico, dichiarandolo Aggregato). 2
3 Chiede all aggregato appena istanziato di creare l iteratore ottenendone il riferimento. Usa l iteratore per ispezionare l aggregato. Nel client: Aggregato a = new AggregatoConcreto(); Iteratore i = a.createiterator(); i.first().un_metodo(); i.getnext().un_metodo(); \\un metodo del primo elemento \\un metodo del secondo elemento 3 Estensioni In Figura 3 viene data una rappresentazione che mostra due (diversi) aggregati concreti manipolati dai rispettivi iteratori. Figura 3: Esempio. Interessante è il caso di un aggregato per il quale sono definiti più iteratori che, presumibilmente, percorrono l aggregato in modo diverso. In Figura 4, il metodo di creazione dell iteratore prevede un parametro in base al quale viene scelto quale genere di iteratore istanziare. In questo caso l aggregato concreto è una fabbrica che riporta un tipo di iteratore in base la parametro. In questo caso nel client seguirà lo schema sotto riportato. Il parametro del metodo createiterator() dice quale tipo di iteratore deve essere creato. Aggregato a = new AggregatoConcreto(); Iteratore i1 = a.createiterator(1); // tipo 1 Iteratore i2 = a.createiterator(2); // tipo 2 i1.first(); i1.getnext(); i2.first(); i2.getnext(); Una soluzione alternativa è prevedere distinti metodi di creazione. Definizione Il Pattern Iterator fornisce un modo di accedere sequenzialmente agli oggetti presenti in un aggregato, senza esporre la rappresentazione interna della struttura dell aggregato. 3
4 Figura 4: Più iteratori sulla stessa struttura. 4 Le Collections di Java Java, attraverso il package java.util dispone di una architettura unificata (detta Collections Framework) che permette di rappresentare e manipolare collezioni, indipendentemente dal dettaglio della loro rappresentazione. Il tutto è basato su un certo numero di interfacce e di classi (parametrizzate) tra cui alcune astratte. Ad esempio è definita l interfaccia List<E>, implementata da diverse classi, tra cui AbstractList, AbstractSequentialList, ArrayList, Stack e Vector (tutte parametriche). La classe di più alto livello del framework è AbstractCollection<E>, che discende direttamente dalla radice di tutta la gerarchia java, cioè da java.lang.object. Da AbstractCollection<E> discendono tutte altre collezioni. La classe AbstractCollection<E> implementa l interfaccia Iterable<T> e pertanto per essa è definito un iteratore per il tipo T. Più specificatamente l interfaccia Iterable<T> prevede il solo metodo iterator(), che restituisce un iteratore per il tipo T (cioè, restituisce un oggetto Iterator<T> 2 ). Ovviamente tutte le classi derivate da AbstractCollection<E> continuano ad implementare l interfaccia Iterable, dunque se si definisce per esse un iteratore, questo possederà i tre metodi dell interfaccia Iterator. Una ulteriore specializzazione di Iterator è ListIterator, che aggiunge altri metodi a quelli appena detti. 4.1 Esempio Nel caso del nostro modello che manipolava una struttura composta di solidi, è stata definita una classe astratta di nome Struttura, all interno della quale viene dichiarato l attributo solidi come AbstractCollection<Solido> 3 public abstract class Struttura { protected AbstractCollection<Solido> solidi; void addsolido(solido solidi.add(s); s){ double getvolume() { double vol = 0; Iterator<Solido> it = solidi.iterator(); 2 Iterator<T> è in realtà a sua volta un interfaccia con questi metodi hasnext, next e remove. Pertanto viene effettivamente restituito un oggetto che presenta questa interfaccia. 3 Solido è la classe astratta che definisce un solido. 4
5 while (it.hasnext()){ vol = vol + it.next().getvolume(); return vol; \\ ecc. Come si vede, è possibile usare il metodo add() di AbstractCollection<Solido> per aggiungere solidi alla struttura. Più interessante è l uso dell iteratore. L iteratore it definito per il tipo Solido si ottiene attraverso il metodo iterator() (dell interfaccia Iterable), implementato da AbstractCollection<Solido> (e perciò da tutte le classi nella gerarchia). Il metodo riporta un iteratore posizionato sul primo elemento della collezione. Nel nostro esempio la classe astratta AbstractCollection<Solido> veniva istanziata nelle due classi concrete Vector e ArrayList. Non c è stato bisogno di definire per queste l iteratore in quanto ereditato dalla classe padre. Il nostro esempio ci ha dato l opportunità di introdurre uno dei design pattern e di mostrare come java fornisce il concetto di iteratore nel contesto di framework molto utile e facilmente impiegabile ogni volta che si deve trattare collezioni di oggetti. 5 Una lista A titolo di esercizio costruiamo una lista e il relativo iteratore. Anzitutto stabiliamo che il generico elemento della lista costruito con tre componenti: f: forward (fa le veci del puntatore in avanti, al prossimo Elem in lista) e: generico elemento da mettere in lista (dichiarato come Object) b: backward (fa le veci del puntatore indietro, al precdente Elem in lista) package lista; class Elem { Elem f; Object e; Elem b; //puntatore in avanti //Elemento Generico informazione //puntatore indietro Elem(Object o){ f= null; e = o; b= null; Elem getf(){ return f; //costruttore di un Elem di Lista La lista viene costruita come sotto. Si noti che quando la lista viene costruita c è un elemento dummy che fa da radice della lista. Quando nella lista ci sono elementi esso punta con f al primo, con b all ultimo. package lista; public class Lista { protected Elem x; public Lista(){ x = new Elem(null); //Radice della lista //Per x le componenti f e b sono usate in modo (semi) degenere // la componente f punta al primo in lista 5
6 public void add(object o){ Elem e = new Elem(o); if (x.f == null){ x.f = e; x.b = e; e.b = x; else{ e.b = x.b; x.b.f = e; x.b = e; // la componente b punta all ultimo in lista //costruzione elemento //x punta a e //e è anche la fine //e punta indietro a x //e punta indietro all ultimo già in lista //il precedente ultimo punta in avanti a e //e è alla fine della lista public Object remove(){ //rimuove sempre l ultimo (se c è) if (x.b == null) return null; //se vuota Elem e = x.b; //ultimo elemento x.b = e.b; //puntatore al nuovo ultimo x.b.f = null; //fine lista return e.e; public Iteratore createiterator(){ return new Iteratore(this); //crea il suo iteratore L iteratore segue qui sotto. Notare che il cursore i punta sempre all ultimo elemento estratto, in modo che i.f è il prossimo elemento da estrarre. Quando il cursore viene creato, esso va a coincidere con x (il dummy di partenza). Quindi i.f punta al primo da estrarre package lista; public class Iteratore { private Elem i, copiax; public Iteratore(Lista l){ i = l.x; //cursore parte dall inizio (che è in x) copiax = l.x; //copia di x (per il first) public boolean hasnext(){ if (i.f == null) return false; else return true; public Object getnext(){ Elem e = i.f; //dove punta il cursore if(e == null)return null; // se è in fondo i = e; //avanti col corsore return e.e; //la componente informativa public Object first(){ i = copiax; //punta al dummy if(i.f == null) return null; //in lista non c è nulla 6
7 else { Elem e = i.f; i = e; return e.e; //prende il primo //avanti col cursore 7
Strutture 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
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
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
DettagliProgrammazione Orientata agli Oggetti
Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato
DettagliIngegneria del Software
Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi
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
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e
DettagliSul pattern Decorator
Sul pattern Decorator 1 Introduzione Consideriamo una famosa panineria fa tre tipi di panini: al prosciutto crudo, al prosciutto cotto, al tonno. A ciascuno di questi tre tipi corrisponde un costo. Figura
DettagliL ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo
Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,
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
DettagliIntroduzione alla programmazione Object Oriented. Luca Lista
Introduzione alla programmazione Object Oriented Luca Lista Concetti base del software OO Classi e oggetti Incapsulamento Relazione di ereditarietà Polimorfismo Cos è un Oggetto? Definizione da vocabolario:
DettagliUso di metodi statici. Walter Didimo
Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un
DettagliIl pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione
Il pattern Factory Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione degli oggetti e delle problematiche
DettagliClassi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++
Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -
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,
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
DettagliLettura e scrittura di file di dati input/output
Lettura e scrittura di file di dati input/output Lettura e scrittura da disco Molto semplice in C++: si fa esattamente come se fosse una tastiera (se sto leggendo da disco) o lo schermo (se sto scrivendo
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
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
DettagliTEOREMA DEL RESTO E REGOLA DI RUFFINI
TEOREMA DEL RESTO E REGOLA DI RUFFINI ALCUNI TEOREMI IMPORTANTI Prendiamo una divisione intera tra numeri: 6 : 3 = 2. Il resto di questa divisione è 0, e questo significa che moltiplicando il quoziente
Dettagli4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
DettagliDefinizione di metodi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 9 Definizione di metodi Carla Limongelli Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di metodi 1 Contenuti
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
DettagliVBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
DettagliOggetti e classi. Cos è un oggetto
Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,
DettagliAlgoritmi e Strutture Dati. HeapSort
Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
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
DettagliIl sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.
PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,
DettagliDESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.
DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE. PIANIFICAZIONE La pianificazione è la prima fase. Questa è la più delicata
DettagliEsercizio 1: archivio CD e DVD
Esercizio 1: archivio CD e DVD Realizzare un applicazione Java per la creazione e la consultazione di un archivio di dischi ottici (CD e DVD). L applicazione riceve da standard input in maniera interattiva
DettagliCLASSI ASTRATTE - ESERCIZIO
CLASSI ASTRATTE - ESERCIZIO Definire una tassonomia di forme geometriche non esiste la generica forma geometrica! esistono triangoli, quadrilateri, pentagoni,... Forme può ben essere una classe astratta
DettagliQuesto paragrafo e quello successivo trattano gli stessi argomenti del capitolo B6 relativo alla soluzione grafica dei sistemi di primo grado.
D1. Retta D1.1 Equazione implicita ed esplicita Ogni equazione di primo grado in due incognite rappresenta una retta sul piano cartesiano (e viceversa). Si può scrivere un equazione di primo grado in due
DettagliAlcune idee sui sistemi software e la loro architettura
Luca Cabibbo Analisi e Progettazione del Software Alcune idee sui sistemi software e la loro architettura Capitolo 92 marzo 2016 Gli orchi sono come le cipolle. Le cipolle hanno gli strati. Gli orchi hanno
DettagliLaboratorio di Programmazione Lezione 1. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 1 Cristian Del Fabbro Reperibilità homepage corso: https://users.dimi.uniud.it/~cristian.delfabbro/teaching.php email: cristian.delfabbro@uniud.it telefono: 0432 558676
Dettagli3. Terza esercitazione autoguidata: progetto gestione voli
9 3. Terza esercitazione autoguidata: progetto gestione voli Qui ci occupiamo di scrivere un programma abbastanza lungo, dedicato alla gestione di una tabella di dati. Una tabella e una struttura dati
DettagliIndividuazione di sottoproblemi
Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che
DettagliSOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n
SPAZI E SOTTOSPAZI 1 SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n Spazi di matrici. Spazi di polinomi. Generatori, dipendenza e indipendenza lineare, basi e dimensione. Intersezione e somma di sottospazi,
DettagliLezione 6 Le pile. Informatica. 28 Aprile 2016
Lezione 6 Le pile Informatica 28 Aprile 2016 Il porto di Anversa Il terminal del porto merci di Anversa usa delle gru a cavaliere per movimentare i container: I container arrivano per nave e vengono messi
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
DettagliCONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI
CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI Introduzione alle basi di dati (2) 2 Modelli dei dati, schemi e istanze (1) Nell approccio con basi di dati è fondamentale avere un certo livello di
DettagliUNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi
DettagliRefactoring 5 Sposta Metodo. 5 Sposta Metodo. 5 Sposta Metodo - Codice iniziale
Refactoring Un metodo sta usando più caratteristiche (attributi e operazioni) di un altra classe che non quella in cui è definito Crea un nuovo metodo con un corpo simile nella classe che il metodo usa
DettagliScorciatoie. Mike McBride Jost Schenck Traduzione del documento: Samuele Kaplun Traduzione e revisione del documento: Luigi Toscano
Mike McBride Jost Schenck Traduzione del documento: Samuele Kaplun Traduzione e revisione del documento: Luigi Toscano 2 Indice 1 Scorciatoie 4 1.1 Introduzione.........................................
DettagliLinguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA
Lezione n.11 n.11 Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di base relativi
DettagliIntroduzione alle macchine a stati (non definitivo)
Introduzione alle macchine a stati (non definitivo) - Introduzione Il modo migliore per affrontare un problema di automazione industriale (anche non particolarmente complesso) consiste nel dividerlo in
DettagliPG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20
PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 Introduzione Materiale richiesto Notebook o computer Controllore PCD1 E Cavo USB Scheda «Training»
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
DettagliLaboratorio di Progettazione di Sistemi Software Design Patterns
TITLE Laboratorio di Progettazione di Sistemi Software Design Patterns Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Tipi di Design Patterns Creazionali Strutturali Comportamentali
DettagliIntroduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare!
Introduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare! Elena M. Brambilla Technical Account Manager & Training Manager - Zend Technologies Chi sonoio.elena M. Brambilla Technical
DettagliAnno 3 Equazione dell'ellisse
Anno Equazione dell'ellisse 1 Introduzione In questa lezione affronteremo una serie di problemi che ci chiederanno di determinare l equazione di un ellisse sotto certe condizioni. Al termine della lezione
DettagliLinguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti
LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE Anno Accademico 2000-2001 Alberto Martelli Programmazione ad Oggetti Parte I Linguaggi ad oggetti (object oriented) I linguaggi di programmazione
DettagliAlgoritmi. Pagina 1 di 5
Algoritmi Il termine algoritmo proviene dalla matematica e deriva dal nome di in algebrista arabo del IX secolo di nome Al-Khuwarizmi e sta ad indicare un procedimento basato su un numero finito operazioni
DettagliWARRI. Presentazione. Il Gioco
WARRI Presentazione Il Warri è il principale gioco dell Africa e dei Caraibi. Può essere chiamato gli Scacchi del Terzo Mondo, sebbene sia più veloce e vivace degli Scacchi. Storicamente appartiene alla
DettagliCreare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.
Funzioni Esercizio 1 Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x. Creare un altra funzione, di nome float cube(float x), che restituisce invece il
DettagliMinistero delle Infrastrutture e dei Trasporti
Ministero delle Infrastrutture e dei Trasporti DIPARTIMENTO PER I TRASPORTI, LA NAVIGAZIONE, GLI AFFARI GENEALI E IL PERSONALE Direzione Generale per la Motorizzazione Centro Elaborazione Dati Manuale
DettagliEquazioni, funzioni e algoritmi: il metodo delle secanti
Equazioni, funzioni e algoritmi: il metodo delle secanti Christian Ferrari 1 Introduzione La risoluzione di equazioni in R ci ha mostrato che solo per le equazioni polinomiali di primo e secondo grado,
DettagliGuida introduttiva su Eclipse. Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it
Guida introduttiva su Eclipse Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it Introduzione Eclipse è un ambiente di sviluppo (IDE) multilinguaggio e multipiattaforma scritto in Java. E Open Source. Può
DettagliLaboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Tipi Tipo Astratto di Permette di specicare dati in modo astratto Astratto Indipendentemente
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliGestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
DettagliValutazione e Controllo Fornitori
PROCEDURA PGSA 02 Valutazione e Controllo Rev. Data Oggetto Redatto da Approvato da 01 30/09/212 Prima emissione Resp. RSGSA Direzione Copia controllata n ( Questa copia è controllata, registrata e soggetta
DettagliPer sistema di acquisizione dati, si deve intendere qualsiasi sistema in grado di rilevare e memorizzare grandezze analogiche e/o digitali.
Sistema di acquisizione e distribuzione dati Per sistema di acquisizione dati, si deve intendere qualsiasi sistema in grado di rilevare e memorizzare grandezze analogiche e/o digitali. Consiste nell inviare
DettagliAXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori
AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli
DettagliCos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
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
DettagliVideo Scrittura (MS Word) Lezione 2 Tabelle e Immagini
Video Scrittura (MS Word) Lezione 2 Tabelle e Immagini Word consente di inserire nello stesso documento, oltre al testo, molte altri generi di informazioni: - Tabelle - Immagini - Disegni, forme particolari
DettagliModulo 2 Data Base - Modello Relazionale
Modulo 2 Data Base - Modello Relazionale Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2004/2005 Modello Relazionale
DettagliRiconoscere e formalizzare le dipendenze funzionali
Riconoscere e formalizzare le dipendenze funzionali Giorgio Ghelli 25 ottobre 2007 1 Riconoscere e formalizzare le dipendenze funzionali Non sempre è facile indiduare le dipendenze funzionali espresse
DettagliAUTOCAD: INTERFACCIA AUTOCAD: INTERFACCIA 2 AUTOCAD: INTERFACCIA. 2.1 premessa: ABBREVIAzIONI E ICONE 2.2 SCELTA DELL INTERFACCIA. ICONE Cmd Mnu.
2 AUTOCAD: INTERFACCIA AUTOCAD: INTERFACCIA 2.1 premessa: ABBREVIAzIONI E ICONE Significato delle abbreviazioni e delle icone usate in queste pagine. ICONE Indica il menu dell applicazione (AutoCAD 2012)
DettagliLezione 9 programmazione in Java Classi come contenitori
Lezione 9 programmazione in Java Classi come contenitori Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio
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
DettagliLaboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE
Laboratorio di Architettura lezione 5 Massimo Marchiori W3C/MIT/UNIVE Da Alto a Basso livello: compilazione Come si passa da un linguaggio di alto livello a uno di basso livello? Cioe a dire, come lavora
DettagliArchitettura degli elaboratori Docente:
Politecnico di Milano Il File System Architettura degli elaboratori Docente: Ouejdane Mejri mejri@elet.polimi.it Sommario File Attributi Operazioni Struttura Organizzazione Directory Protezione Il File
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
DettagliDistribuzioni campionarie. Antonello Maruotti
Distribuzioni campionarie Antonello Maruotti Outline 1 Introduzione 2 Concetti base Si riprendano le considerazioni fatte nella parte di statistica descrittiva. Si vuole studiare una popolazione con riferimento
DettagliACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.
ACCESS Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Database Relazionale: tipo di database attualmente più diffuso grazie alla
DettagliStrutture di accesso ai dati: B + -tree
Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 0 9-2 0 0 Osservazione Quando l indice aumenta di dimensioni, non può risiedere
DettagliMini-Corso di Informatica
Mini-Corso di Informatica CALCOLI DI PROCESSO DELL INGEGNERIA CHIMICA Ing. Sara Brambilla Tel. 3299 sara.brambilla@polimi.it Note sulle esercitazioni Durante le esercitazioni impareremo a implementare
DettagliGEOPORTALE Arpa Piemonte Sistema Informativo Ambientale Geografico
GEOPORTALE Arpa Piemonte Sistema Informativo Ambientale Geografico Guida all'accesso ai Map Services WMS, WMTS e WFS con Q-GIS e il plug-in Versione 01 ottobre 2014 Redazione Arpa Piemonte - Sistema Informativo
DettagliProgrammazione ad oggetti
DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Classi astratte Le classi astratte sono un ibrido tra le classi concrete e le interfacce. Hanno le stesse caratteristiche di una
DettagliTelematica II 15. Esercitazione/Laboratorio 5
Protocollo FTP FTP Client TCP control connection (port 21) FTP Server Telematica II 15. Esercitazione/Laboratorio 5 File System locale TCP data connection (port( 20) File System remoto La connessione di
DettagliCostruttore di numeri della WebDewey
Costruttore di numeri della WebDewey Elaborazione da parte della Redazione WebDewey Italiana sulla base di documenti originali prodotti da OCLC o pubblicati sul blog 025.431 L approccio generale alla costruzione
DettagliDiagrammi di classe e sistemi orientati agli oggetti
Appendice D Diagrammi di classe e sistemi orientati agli oggetti ANDREA GINI Un effetto della strategia di incapsulamento è quello di spingere il programmatore a esprimere il comportamento di un sistema
DettagliLa fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo
Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo & Monica Scannapieco Anno Accademico 2003/04 LA FASE DI PROGETTO E
DettagliFinanziamenti on line -
Finanziamenti on line - Manuale per la compilazione del Modulo di Profilazione Ente Pubblico Pagina 1 Indice 1. Introduzione... 3 1.1 Scopo e campo di applicazione... 3 1.2 Copyright (specifiche proprietà
DettagliLaboratorio di Progettazione di Sistemi Software Materiale per il progetto con esercizi 1
TITLE Laboratorio di Progettazione di Sistemi Software Materiale per il progetto con esercizi 1 Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Progetto labp2001 e refactoring in
DettagliPer poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione
MYSQL E PHP Per poter interagire con un database in rete mediante uno script php bisogna innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MySQL_connect(nome del host, nome utente,
DettagliCorso di Programmazione a oggetti
Corso di Programmazione a oggetti Overloading delle funzioni e parametri di default a.a. 2014/2015 Francesco Fontanella Overloading delle funzioni In C++, è possibile dare a funzioni diverse lo stesso
DettagliCompito Sistemi Informativi LA. Tempo concesso : 90 minuti 28 Giugno 05 Nome: Cognome: Matricola: Esercizio 1
Compito Sistemi Informativi LA. Tempo concesso : 90 minuti 28 Giugno 05 Nome: Cognome: Matricola: Esercizio 1 Si considerino le seguenti specifiche relative alla realizzazione del sistema informativo di
Dettaglitesto Saveris Web Access Software Istruzioni per l'uso
testo Saveris Web Access Software Istruzioni per l'uso 2 1 Indice 1 Indice 1 Indice... 3 2 Descrizione delle prestazioni... 4 2.1. Utilizzo... 4 2.2. Requisiti di sistema... 4 3 Installazione... 5 3.1.
DettagliEsercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
DettagliEsercitazione n 1. Obiettivi
Esercitazione n 1 Obiettivi Introduzione all utilizzo di Java Development Kit (JDK) versione 1.3 Sviluppare programmi Java tramite linea di comando Es: javac, java, jdb, javadoc Primo esempio di programma
DettagliStrutturare il codice: sottoprogrammi
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Motivazioni Alcuni problemi si presentano frequentemente durante lo sviluppo di un programma
DettagliAnno 2. Radicali algebrici e aritmetici: condizioni di esistenza
Anno 2 Radicali algebrici e aritmetici: condizioni di esistenza 1 Introduzione Perché studiare i radicali? In matematica ogni volta che facciamo un operazione dobbiamo anche vedere se è possibile tornare
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
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:
DettagliUnità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa
Dettagli