Liste, Pile e Code. 1. L ADT Lista. Liste Pile e Code Pag. 1/18

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Liste, Pile e Code. 1. L ADT Lista. Liste Pile e Code Pag. 1/18"

Transcript

1 Liste Pile e Code Pag. 1/18 Liste, Pile e Code Le liste, le pile e le code rappresentano tre ADT elementari che ricorrono frequentemente nella vita reale. Esempi usuali di una lista, una pila ed una coda sono rispettivamente una lista della spesa, una pila di piatti e una coda in un pubblico esercizio. La prima rappresenta un insieme di oggetti da acquistare che possono essere scritti (inseriti) o depennati (cancellati) senza alcuna particolare regola. La seconda anch essa rappresenta un insieme di oggetti, però gestiti attraverso l applicazione di una regola pratica: prelevo in testa ed inserisco in testa. Infine l ultima è gestita mediante una regola dettata dal vivere civile: la prima persona che entra è la prima persona ad essere servita! Nell esamina dei tre ADT introdurremo un altro concetto, quello di struttura dati, termine che utilizzeremo quando nella disamina ci occuperemo sia della organizzazione delle informazioni che della efficiente implementazione di un operatore; concetti che come vedremo sono fortemente connessi tra loro. 1. L ADT Lista Una lista consiste in una sequenza di n oggetti ( a 1,, a n ) appartenenti ad un insieme S. La lunghezza di una lista è determinata dal numero dei suoi elementi. Definiamo vuota una lista che ha lunghezza zero. Un elemento di una lista è caratterizzato da una posizione: indichiamo con a i l elemento in posizione i-esima all interno di una lista L=( a 1, a 2,, a n ). Esempio 1.1 Esempi di lista sono: L 1 = ( 71, 21, 39 ) dove Lunghezza(L) = 3 e a 1 = 71, a 2 = 21, a 3 = 39 L 2 = ( 23, 45, 139, 13 ) dove Lunghezza(L) = 4 e a 1 = 23, a 2 =45, a 3 = 139, a 4 = 13

2 Liste Pile e Code Pag. 2/18 Le operazioni tipiche su una lista sono la ricerca di un elemento, l estrazione di un elemento presente in una data posizione, l inserimento e la cancellazione. Utilizzando i formalismi dell ADT: Tipo di dato: Lista Insieme L di n elementi estratti da un insieme S Operazioni: CercaChiave( elemento e ) posizione Cerca l elemento e all interno della lista L e restituisce l indice compreso tra 1 e la lunghezza della lista nel caso in cui e viene trovato, altrimenti restituisce 0. CercaPosizione( posizione i ) elemento Restituisce l elemento in posizione i-esima se i è un valore compreso tra 1 e la lunghezza della lista Inserisci( elemento e, posizione i ) Inserisce l elemento e all interno della lista L in posizione i Cancella( posizione i ) Cancella l elemento presente all interno della lista L nella posizione i 2.1 Implementazione mediante vettore La struttura dati lista indicizzata rappresenta l implementazione dell ADT lista mediante l uso di un vettore. Tale struttura dati richiede la definizione di un vettore V di dimensione prefissata, m, dove l'elemento i-esimo della lista, ai, occupa la posizione i-1. V L=(1, 6, 2, 23, 3) contatore=4 Gestiamo le posizioni libere del vettore mediante l utilizzo di una variabile, contatore, tramite la quale teniamo traccia della dimensione corrente della lista. Tale variabile assume inizialmente il valore 0, viene incrementata ad ogni operazione di inserimento e decrementata ad ogni operazione di cancellazione. Poiché la dimensione m del vettore deve essere prestabilita, la struttura dati lista indicizzata non consente la rappresentazione di liste contenenti più di m elementi, ovvero la struttura dati lista indicizzata è non dinamica.

3 Liste Pile e Code Pag. 3/18 L organizzazione delle informazioni contenute all interno della lista, così come dettate dalla struttura dati lista indicizzata, influenza ad ogni modo la realizzazione degli operatori dichiarati nella specifica. Vediamo come. Inserimento L'inserimento di un elemento nel vettore V alla posizione i richiede, prima di poter dar luogo all operazione, lo spostamento a destra di tutti gli elementi aventi indice maggiore o uguale ad i-1. In tal modo liberiamo la cella (i-1)-esima del vettore, all interno della quale possiamo memorizzare l elemento da inserire. V Contatore = 5 V Contatore = 5 V Contatore = 6 Figura 2.1 Inserimento in posizione 3 dell elemento 50 Nel caso pessimo, inserimento in prima posizione, il numero di passi da eseguire è dipendente dal numero di elementi presenti all interno della lista. Al crescere del numero degli elementi, crescono in maniera linearmente proporzionale il numero di spostamenti verso destra da eseguire. Diremo quindi che l operazione di inserimento richiede tempo linearmente proporzionale ad n. Cancellazione La cancellazione di un elemento in posizione i prevede, contrariamente all operazione di inserimento, uno spostamento a sinistra degli elementi aventi indice maggiore ad i-1. Nel caso pessimo, rappresentato dalla cancellazione in prima posizione, l operazione di cancellazione richiede un tempo proporzionale ad n.

4 Liste Pile e Code Pag. 4/18 CercaChiave La ricerca della chiave richiede la scansione, a partire dalla prima posizione, dell intero vettore. Pertanto, nel caso pessimo, elemento non presente, tale operazione richiede tempo proporzionale ad n. CercaPosizione Diamo luogo all operazione di CercaPosizione restituendo il valore presente alla posizione i-esima del vettore. Il costo di tale operazione è indipendente dal numero di elementi presenti all interno della lista. Il tempo di accesso alla cella i-esima è indipendente dal numero di elementi presenti nel vettore. Diremo in tal caso che l operazione di CercaPosizione richiede tempo costante. 2.2 Implementazione mediante puntatori La struttura dati lista concatenata specifica una organizzazione delle informazioni contenute all interno della lista alternativa a quella della struttura dati lista indicizzata. Necessitiamo in tal caso della definizione di un record contenente un campo chiave ed un campo che denomineremo successivo. chiave succ. Figura 2.2 Record Infine, realizziamo la lista definendo n record, uno per ogni elemento della lista, in modo tale che l'i-esimo record contenga all interno del campo chiave l'elemento ai della lista e all interno del campo successivo l'indirizzo del record contenente l elemento ai+1 della lista. Il campo successivo dell'ultimo record assume il valore NULL.

5 Liste Pile e Code Pag. 5/18 Gestiamo le dimensioni della lista utilizzando una variabile, Testa, che punta l elemento posto ad inizio lista. Tale variabile assume inizialmente il valore NULL. Testa a 1 a 2... a n null Figura 2.3 lista concatenata Il vantaggio di questo tipo di implementazione è dato dal fatto che non vi sono vincoli sulla dimensione della lista; l'unico vincolo è dato dalla quantità di memoria disponibile. Come già fatto per la struttura dati lista indicizzata, analizziamo ora come tale rappresentazione influenzi l implementazione degli operatori dell ADT Lista. Inserimento Per inserire un elemento nel vettore V alla posizione i occorre: creare (ovvero, allocare dinamicamente) un nuovo record; assegnare al campo chiave del nuovo record il valore dell elemento; scandire la lista sino a giungere al record i-esimo; assegnare al campo successivo del record precedente quello i-esimo l'indirizzo del nuovo record; assegnare al campo successivo del nuovo record l'indirizzo del record i-esimo. Poiché nel caso peggiore, inserimento in ultima posizione, occorre scandire l'intera lista, l'operazione di inserimento richiede tempo proporzionale alla dimensione corrente della lista. Testa a 1 a 2... a n null a Figura 2.4 Inserimento nella lista concatenata

6 Liste Pile e Code Pag. 6/18 Cancellazione La cancellazione necessita dell utilizzo di due puntatori, p e q. Ci si sposta con uno, p, sull elemento i-esimo e con l altro, q, sull elemento precedente a quello i-esimo. Dopodichè il campo successivo del record puntato da q sarà posto uguale al campo successivo del record puntato da p ed infine viene deallocato il record puntato da p. Testa q p a 1 a 2 a 3... a n null a 4 Figura 2.5 Cancellazione in una lista concatenata Poiché nel caso peggiore, cancellazione in ultima posizione, occorre scandire l'intera lista, l'operazione di cancellazione richiede tempo proporzionale alla dimensione corrente della lista. CercaChiave La ricerca della chiave necessita della scansione della lista con l utilizzo di un puntatore che salta da elemento in elemento seguendo l informazione memorizzata nel campo successivo di ogni record. Nel caso pessimo, chiave non esistente, l operazione di ricerca richiede tempo proporzionale alla dimensione della lista. CercaPosizione L operazione di ritorno dell elemento presente in posizione i-esima ha un tempo anch esso proporzionale alla dimensione della lista, poichè con l utilizzo di un puntatore che salta da elemento in elemento, seguendo le informazioni presenti nel campo successivo, dobbiamo dapprima posizionarci sul record i-esimo e poi ritornare il valore assunto dal campo chiave.

7 Liste Pile e Code Pag. 7/18 3. L ADT Lista Ordinata Una lista ordinata L è una sequenza di n elementi (a l,...,a n ) tratti da un insieme totalmente ordinato S. Gli elementi di una lista ordinata sono regolati dalla seguente relazione: a i a i+1 i {1, n-1 }. La presenza di un ordinamento degli elementi non rende applicabile l'operatore di inserimento in posizione arbitraria. Gli operatori tipici per una lista ordinata sono l operatore di ricerca, l operatore di inserimento e l operatore di cancellazione. Tipo di dato: Lista ordinata Insieme L di n elementi ( a l,...,a n ) estratti da un insieme S totalmente ordinato e tali che a i a i+1 i {1, n-1 } Operazioni: Cerca( elemento e ) posizione Cerca l elemento e all interno della lista L e restituisce l indice compreso tra 1 e la lunghezza della lista nel caso in cui e viene trovato, altrimenti restituisce 0 Inserisci( elemento e ) Inserisce l elemento e all interno della lista L Cancella( elemento e ) Cancella l elemento presente all interno della lista L 3.1 Implementazione mediante vettore L utilizzo della struttura dati lista indicizzata rappresenta la pratica più comune per la rappresentazione di una lista ordinata. In tal caso, similmente all ADT Lista, necessitiamo di un vettore V di dimensioni fisse, all interno del quale ospitiamo gli elementi della lista ordinata in ordine crescente. Una variabile contatore indicherà la dimensione corrente della lista. Vediamo come l utilizzo di una simile struttura dati influenzi l implementazione degli operatori di ricerca, inserimento e cancellazione.

8 Liste Pile e Code Pag. 8/18 Ricerca La ricerca per chiave avviene attraverso l algoritmo di ricerca binaria. Sfruttiamo la caratteristica di ordinamento degli elementi dell ADT dando luogo ai seguenti passi: o confronto: confrontiamo il valore da ricercare, k, con il valore, v, presente alla posizione centrale della porzione di vettore effettivamente utilizzata (mediana) se k = v, allora l'elemento è stato trovato se k < v allora ricerchiamo l'elemento ricorsivamente nella prima metà del vettore poiché esso contiene elementi minori di k. Ci disinteressiamo dell'altra metà dell'insieme se k > v allora ricerchiamo l'elemento ricorsivamente nella seconda metà del vettore poiché esso contiene solo elementi maggiori di k. Ci disinteressiamo anche in questo caso dell'altra metà dell'insieme Ricerca Binaria RicercaBinaria( elemento k, intero iniziovettore, intero finevettore ) { Lista L Vettore V se finevettore == iniziovettore allora { se V[iniziovettore]!= k allora elemento non trovato altrimenti elemento trovato } } mediana = (finevettore-iniziovettore)/2 se V[mediana] = k allora { elemento trovato } altrimenti { se V[mediana] >= k allora RicercaBinaria( k, iniziovettore, mediana-1 ) altrimenti RicercaBinaria( k, mediana+1, finevettore ) }

9 Liste Pile e Code Pag. 9/18 Inserimento Diamo luogo all operazione di inserimento mediante l esecuzione dei seguenti quattro passi: o ricerchiamo l'elemento contenente la chiave assegnata. Tale operazione restituisce un indice i che rappresenta la posizione che la chiave dovrebbe occupare; o eseguiamo uno Shift a destra degli elementi aventi indice maggiore di i; o inseriamo il nuovo elemento in posizione i; o incrementiamo la variabile contatore. Cancellazione L'operazione di cancellazione consiste di tre fasi: - ricerchiamo l'elemento contenente la chiave assegnata. Tale operazione restituisce un indice i che rappresenta la posizione che la chiave occupa; - operiamo lo Shift a sinistra degli elementi aventi indice maggiore di i; - decrementiamo la variabile contatore. E dimostrabile che se adoperiamo l algoritmo di ricerca binaria, l operazione di ricerca di un elemento in una lista ordinata richiede nel caso pessimo, elemento non trovato, un tempo logaritmico nel numero di elementi. Mentre, a causa delle operazioni di shift, sia l inserimento che la cancellazione richiedono nel caso pessimo, inserimento e cancellazione in prima posizione, un tempo lineare con il numero di elementi della lista.

10 Liste Pile e Code Pag. 10/18 4. Il tipo di dato astratto Pila Una pila è una collezione di elementi che ammette esclusivamente due operazioni: PUSH: inserimento di un elemento ad una estremità, detta sommità; POP: estrazione dell'elemento presente nella sommità. PUSH POP Elemento 3 Elemento 2 Elemento 1 Figura 4.1: pila Possiamo considerare una pila come una specializzazione dell ADT lista in cui l'ultimo elemento inserito è anche il primo ad essere estratto. Denominiamo con l acronimo LIFO (Last In First Out) la politica di gestione degli elementi di una pila. Tipo di dato: Operazioni: Pila Sequenza P di n elementi ( a l,...,a n ) estratti da un insieme S IsEmpty() result Restituisce true se P è vuota altrimenti restituisce false Push( elemento e ) Inserisce l elemento e in testa alla pila P Pop() elemento Restituisce l elemento in testa alla pila P

11 Liste Pile e Code Pag. 11/ Implementazione tramite vettore Possiamo rappresentare l ADT Pila mediante la struttura dati Lista Indicizzata. E una soluzione facilmente applicabile. Definiamo un vettore V, di dimensione prefissata, MAX, ed una variabile, Testa, che punta in testa alla pila. Assumiamo inoltre che quanto Testa è uguale al valore -1 allora la pila è vuota, mentre se Testa è uguale al valore MAX-1 il vettore è saturo: la pila non può ospitare alcun elemento. Testa = n n-1... MAX -1 a 1 a 2 a 3... a n Figura 4.2 Pila di n elementi rappresentata con vettori Operatore POP Diamo luogo alla operazione di estrazione, restituendo il valore memorizzato all interno della cella indicata dalla variabile Testa, V[Testa], e decrementando di una unità la variabile Testa. Operatore PUSH Diamo altresì luogo alla operazione di inserimento, incrementando prima il valore della variabile Testa e memorizzando all interno della cella indicata dalla variabile incrementata, V[Testa], il valore da inserire. Le operazioni di inserimento ed estrazione richiedono tempo costante. I numeri di passi da eseguire per implementare i due operatori è indipendente dal numero di elementi presenti all interno della pila.

12 Liste Pile e Code Pag. 12/ Implementazione tramite puntatori La struttura dati lista concatenata è un alternativa alla rappresentazione sopra descritta. La variabile di tipo puntatore, denominata Testa, rappresenta l ultimo elemento della pila. In tal caso la condizione di pila vuota è data da: Testa = NULL. Similmente alla rappresentazione mediante utilizzo dei vettori, questa implementazione è caratterizzata da tempi costanti sia per l'operazione di inserimento che per l operazione di estrazione. Inserimento Diamo luogo all'operazione di inserimento modificando la lista come di seguito raffigurato: Testa a1 a2 a3 a4 NULL PUSH Testa Testa Nuova chiave a1 a2 a3 a4 NULL Creiamo un nuovo record, poniamo il campo successivo uguale al valore assunto da Testa ed infine spostiamo Testa verso il nuovo elemento creato. Inserimento Pila Lista concatenata Push( elemento e) { Record r _ } alloca un nuovo record, r poni il campo valore di r uguale ad e, r valore=e poni il campo successivo di r uguale a Testa, r successivo=testa poni Testa uguale ad r, Testa=r

13 Liste Pile e Code Pag. 13/18 Estrazione Diamo luogo all operazione di estrazione modificando la lista come di seguito raffigurato: Creiamo un nuovo record, poniamo il campo successivo uguale al valore assunto da Testa ed infine spostiamo Testa verso il nuovo elemento creato. Estrazione Pila Lista concatenata Pop() elemento { Puntatore p _ } p = Testa Testa = Testa Successivo Dealloca p

14 Liste Pile e Code Pag. 14/18 5. Il tipo di dato astratto Coda Una coda è una collezione di elementi che ammette esclusivamente due operazioni: l'inserimento di un elemento ad una estremità, detta fine l'estrazione dell'elemento presente nell'altra estremità, detta inizio. Estrazione Inserimento Inizio Fine a 1 a 2 a 3... a n Figura 5.1 Coda Denominiamo la politica di gestione degli elementi di una coda con l acronimo FIFO, First In First Out. Tipo di dato: Coda Sequenza Q di n elementi ( a l,...,a n ) estratti da un insieme S Operazioni: IsEmpty() result Restituisce true se Q è vuota altrimenti restituisce false Inserisci( elemento e ) Inserisce l elemento e alla fine di Q Estrazione() elemento Restituisce l elemento posto all inizio di Q 5.1 Implementazione tramite vettore circolare Una coda è realizzabile attraverso l utilizzo della struttura dati vettore circolare. Quest ultimo rappresenta un tradizionale vettore di ampiezza prefissata, la cui caratteristica di circolarità è data dalla regola di incremento utilizzata per la scansione delle celle. Si da luogo a tale operazione utilizzando una variabile intera, index, incrementata secondo la formula: index = (index + 1) mod MAX, dove MAX è la dimensione del vettore. In tal modo index assume valori compresi tra zero e MAX-1.

15 Liste Pile e Code Pag. 15/18 Rappresentiamo la coda mediante vettore circolare definendo un vettore V di ampiezza MAX e due contatori, inizio e fine, che incrementiamo modulo MAX. Inizio farà riferimento alla cella del vettore che precede il primo elemento, fine farà riferimento alla cella del vettore che contiene l ultimo elemento. Inizio = (Inizio+1)mod MAX Fine = (Fine+1)mod MAX Inizio Fine a 1 a 1... a n MAX-1 Figura 5.2 Coda rappresentata con vettore circolare Possiamo pertanto definire quattro stati della coda: 1. Stato iniziale: inizio = fine = 0 2. Coda vuota: inizio = fine 3. Coda non vuota: inizio fine 4. Coda piena: (fine + 1 ) mod n = inizio Nota Una delle particolarità di questa rappresentazione è data dal fatto che non si avrà mai un riempimento fisico del vettore che si potrà riempire fino ad un massimo di MAX-1 elementi. Questo perché se inserissimo un elemento anche nella unica posizione che eventualmente rimarrebbe vuota non saremmo più in grado di distinguere quando la coda è piena e quando la coda è vuota. Implementiamo gli operatori di inserimento ed estrazione. Inserimento Diamo luogo all operazione di inserimento incrementando la variabile fine e memorizzando nella cella del vettore indicata da fine il valore da inserire. L operazione di inserimento ha un tempo di esecuzione costante.

16 Liste Pile e Code Pag. 16/18 Inserimento Coda Vettore Circolare Inserisci( elemento e) { Vettore V se ((fine+1) mod MAX) == inizio allora coda piena altrimenti fine = ( fine + 1 ) mod MAX V[fine] = e } _ Estrazione Diamo luogo all operazione di estrazione incrementando la variabile inizio e ritornando il valore memorizzato nella cella del vettore indicata da inizio. L operazione di estrazione ha un tempo di esecuzione costante. Estrazione Coda Vettore Circolare Estrazione() Elemento Vettore V se inizio = fine allora coda è vuota altrimenti inizio = ( inizio + 1 ) mod MAX ritorna V[inizio] _ 5.2 Implementazione tramite lista L utilizzo della struttura dati lista concatenata richiede l utilizzo di due variabili di tipo puntatore:inizio e fine. Esse faranno riferimento rispettivamente al primo ed all'ultimo elemento della coda. Inizio Fine a 1 a 2... a n null Figura Coda realizzata con lista concatenata

17 Liste Pile e Code Pag. 17/18 I quattro stati della coda sono pertanto: 1. Stato iniziale: inizio = fine = NULL 2. Coda vuota: inizio = NULL 3. Coda non vuota: inizio fine 4. Coda piena: Non applicabile, la struttura dati è dinamica Inserimento Diamo luogo all operazione di inserimento allocando un nuovo record, linkando quest ultimo al record puntato da fine ed infine spostando il puntatore fine verso l ultimo elemento inserito. L operazione di inserimento ha un tempo di esecuzione costante. Inserimento Coda Lista concatenata Inserisci(Elemento e) { Puntatore p _ } p = alloca record p chiave = e p next = NULL fine next = p fine = p Estrazione Diamo luogo all operazione di estrazione spostando il puntatore inizio e deallocando il record precedentemente puntato da inizio e contenente quindi il valore da estrarre. Estrazione Coda Lista concatenata Estrazione() Elemento { Puntatore p Elemento e _ se inizio = NULL allora coda è vuota altrimenti p = inizio inizio = inizio next e = p chiave dealloca p ritorna e

18 Liste Pile e Code Pag. 18/18 }

Struttura dati astratta Coda

Struttura 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

Dettagli

Heap e code di priorità

Heap 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

Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative.

Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative. Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro Definizione

Dettagli

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)

ADT: 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

Dettagli

Contenitori: Pile e Code

Contenitori: 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

Dettagli

Esempio: rappresentare gli insiemi

Esempio: rappresentare gli insiemi Esempio: rappresentare gli insiemi Problema: rappresentare gli insiemi Vedremo che la scelta della rappresentazione per implementarli non è così ovvia come era stato per i numeri razionali In realtà ci

Dettagli

4 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. 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

Dettagli

Array e liste. IASD a.a

Array e liste. IASD a.a Array e liste IASD a.a. 2015-16 Sequenze lineari n elementi a 0, a 1,..., a n 1 dove a j = (j + 1)-esimo elemento per 0 ij n 1. In una sequenza è importante l ordine degli elementi Consideriamo una sequenza

Dettagli

Esercitazione 6. Alberi binari di ricerca

Esercitazione 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)

Dettagli

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Linguaggio 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

Dettagli

Analisi ammortizzata (Tarjan in 1985)

Analisi ammortizzata (Tarjan in 1985) In questa lezione Analisi della complessità di una sequenza di operazioni di estrazione e inserimento in una tabella memorizzata su un array, usando l analisi ammortizzata. Analisi ammortizzata (Tarjan

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Introduzione agli Algoritmi ed alle Strutture Dati Anno Accademico 2015/2016 Appello 23/6/2016

Introduzione 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

Dettagli

Il 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. 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

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

Dettagli

lezione 9 min-heap binario Heap e Alberi posizionali generali

lezione 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

Dettagli

ADT Coda con priorità

ADT 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

Dettagli

Struttura di dati lista concatenata

Struttura 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

Dettagli

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 7, 2016 Liste trabocco (Separate Chaining) Esercizio 1 [Libro 7.5] Un dizionario è realizzato con liste di trabocco.

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1 CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1 PRODUTTORE/CONSUMATORE Il problema del produttore/consumatore è uno dei problemi più comuni di concorrenza tra processi. Il problema presenta uno o più

Dettagli

Strutture Dinamiche. Fondamenti di Informatica

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));

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE Il problema del produttore/consumatore Il primo approccio alla risoluzione del problema del produttore/consumatore considera un buffer infinito presentato

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Dettagli

Modulo 1 Concetti di base della Tecnologia dell Informazione

Modulo 1 Concetti di base della Tecnologia dell Informazione Modulo 1 Concetti di base della Tecnologia dell Informazione 1.0.1.1 1.0.1.2 1.0.1.3 Algoritmi Definizione di algoritmo e sua rappresentazione grafica Per algoritmo si intende un procedimento, che permette

Dettagli

Specifica: la sintassi. Specifica: la semantica. Specifica: la semantica

Specifica: 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

Dettagli

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. Linguaggio C Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. 1 Complessità degli Algoritmi Si definisce Complessità di un Algoritmo C(A) la funzione dei parametri rilevanti per A che determina

Dettagli

Strutture di accesso ai dati: B + -tree

Strutture 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

Dettagli

Analisi asintotica della complessità di tempo degli algoritmi

Analisi asintotica della complessità di tempo degli algoritmi Analisi asintotica della complessità di tempo degli algoritmi Due esempi di funzioni di Python: 1. nel primo mettiamo in evidenza l importanza di una buona organizzazione dei dati in memoria, cioè di una

Dettagli

Allocazione Dinamica della Memoria

Allocazione 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 8 Code con priorità: Heap binomiali Riepilogo Array non ord. Array ordinato Lista non ordinata Lista ordinata Find Min Insert Delete DelMin Incr. Key Decr. Key merge

Dettagli

Per semplicità eliminiamo le ripetizioni nell'albero.

Per 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

Dettagli

Grafi: visita generica

Grafi: 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

Dettagli

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi Fondamenti di Informatica T-1 modulo 2 Laboratorio 10: preparazione alla prova d esame 1 Esercizio 1 - Gestione degli impegni Gli impegni giornalieri dei dipendenti di un azienda devono essere aggiornati

Dettagli

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: Esercizi su Python 14 maggio 2012 1. Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: 1. conti quanti elementi pari sono presenti nella lista; 2. conti quanti quadrati

Dettagli

22 - Strutture Dati (Java Collections Framework)

22 - 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/

Dettagli

Informatica Teorica. Macchine a registri

Informatica Teorica. Macchine a registri Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire

Dettagli

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)

Dettagli

Massimo Benerecetti Tabelle Hash: gestione delle collisioni

Massimo Benerecetti Tabelle Hash: gestione delle collisioni Massimo Benerecetti Tabelle Hash: gestione delle collisioni # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: bene@na.infn.it A.A. 2009-2010

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Introduzione al linguaggio macchina Indice Che cos è l assembly Elementi del linguaggio Memoria di programma Registri interni e di I/O Registri particolari Rappresentazione dell

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Alberi AVL Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 26/7 Alberi AVL Definizione (bilanciamento in altezza): un albero è bilanciato

Dettagli

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] I Dizionari I dizionari sono un caso particolare di insieme in cui sono possibili le seguenti operazioni: verificare l appartenenza

Dettagli

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35 LIBRERIA WEB Alberi binari 3. Alberi binari e tecniche di hashing per la gestione delle chiavi Gli indici di un file possono essere trattati in modo efficiente con tecniche che si basano sull uso di alberi

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ 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

Dettagli

alberi binari di ricerca (BST)

alberi binari di ricerca (BST) Le tabelle di simboli e gli alberi binari di ricerca (BT) ianpiero abodi e Paolo amurati Dip. utomatica e Informatica Politecnico di Torino Tabelle di simboli Definizione: una tabella di simboli è una

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti 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

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 4 Implementazioni delle partizioni Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio 2016.

Dettagli

Lezione 6 Le pile. Informatica. 28 Aprile 2016

Lezione 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

Dettagli

Abstact Data Type. Abstact Data Type. Pubblico e privato. Struttura di un ADT

Abstact Data Type. Abstact Data Type. Pubblico e privato. Struttura di un ADT Abstact Data Type 2 Abstact Data Type Ver. 2.4 ADT, definisce un concetto astratto e il suo comportamento Viene utilizzato come una scatola nera (oggetto) di cui è visibile solo che cosa fa e non come

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

Esercizi Capitolo 7 - Hash

Esercizi Capitolo 7 - Hash Esercizi Capitolo 7 - Hash Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive

Dettagli

Architettura degli elaboratori Docente:

Architettura 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

Dettagli

Implementazione di Liste puntate

Implementazione di Liste puntate Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Implementazione di Liste puntate 2 1 Indice Liste puntate semplici: Gli elementi sono logicamente

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Lorenzo Dusty Costa Federico Paolo Kircheis 30 Novembre 2011 1 Introduzione alle memoria dinamica Uno degli inconvenienti che spesso si incontrano nell'uso degli array

Dettagli

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard Introduzione al Metodo del Simplesso Giacomo Zambelli 1 Soluzioni di base e problemi in forma standard Consideriamo il seguente problema di programmazione lineare (PL), relativo all esempio di produzione

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che

Dettagli

File System. Capitolo 13

File System. Capitolo 13 Capitolo 13 File System Problema 1: Le copie di un file possono essere inconsistenti, quindi per sbaglio si potrebbero leggere dati vecchi. È meglio creare un link a data nella home di ogni utente. Tuttavia,

Dettagli

Algoritmi e Principi dell Informatica

Algoritmi e Principi dell Informatica Algoritmi e Principi dell Informatica Appello del 20 Febbraio 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2h e 30 Chi deve sostenere solo il modulo di Informatica

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione

Dettagli

Soluzione/* PROGRAMMAZIONE IN C */ #include <stdio.h> #include <stdlib.h>

Soluzione/* PROGRAMMAZIONE IN C */ #include <stdio.h> #include <stdlib.h> Ricerca di un elemento in vettore Scrivere un programma in linguaggio C che riceve in ingresso una sequenza di N numeri interi. I numeri sono memorizzati in un vettore. Il valore N è inserito dall utente,

Dettagli

Corso di Laurea in Informatica Modulo di Laboratorio di Programmazione I (a.a ) Docente: Prof. M. Nesi

Corso di Laurea in Informatica Modulo di Laboratorio di Programmazione I (a.a ) Docente: Prof. M. Nesi Corso di Laurea in Informatica Modulo di Laboratorio di Programmazione I (a.a. 2009-10) Docente: Prof. M. Nesi Esercizi su Algoritmi e Diagrammi di Flusso (Versione preliminare) Dati i seguenti problemi,

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

Esercizi C su array e matrici

Esercizi C su array e matrici Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]

Dettagli

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem Un esempio: l ADT Dizionario (mutabile) Algoritmi e Laboratorio a.a. 2006-07 Lezioni Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Parte 19-D Alberi

Dettagli

Ordinamenti per confronto: albero di decisione

Ordinamenti per confronto: albero di decisione Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto

Dettagli

L'allocazione dinamica della memoria

L'allocazione dinamica della memoria L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria

Dettagli

I Tipi di Dato Astratto

I Tipi di Dato Astratto I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati

Dettagli

Grafi pesati Minimo albero ricoprente

Grafi 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

Dettagli

Rappresentazione binaria delle variabili (int e char)

Rappresentazione binaria delle variabili (int e char) Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati

Dettagli

Formule e funzioni. Manuale d uso

Formule e funzioni. Manuale d uso EXCEL Modulo 2 Formule e funzioni Manuale d uso Formule (1/2) Le formule sono necessarie per eseguire calcoli e utilizzano i valori presenti nelle celle di un foglio di lavoro. Una formula inizia col segno

Dettagli

Esempio di Prova Scritta

Esempio di Prova Scritta Esempio di Prova Scritta La prova scritta è composta da alcuni esercizi per un totale di 10 punti (durata:circa 1h15 ). Le tipologie di esercizi possibili comprendono:! sintesi di una funzione ricorsiva/iterativa,

Dettagli

La rappresentazione dell algoritmo Diagrammi di flusso

La rappresentazione dell algoritmo Diagrammi di flusso La rappresentazione dell algoritmo Diagrammi di flusso Forme di rappresentazione Ritornando al problema dell addizione di due numeri interi, la maestra non fa altro che codificare l algoritmo utilizzando

Dettagli

3. Matrici e algebra lineare in MATLAB

3. Matrici e algebra lineare in MATLAB 3. Matrici e algebra lineare in MATLAB Riferimenti bibliografici Getting Started with MATLAB, Version 7, The MathWorks, www.mathworks.com (Capitolo 2) Mathematics, Version 7, The MathWorks, www.mathworks.com

Dettagli

FILE E INDICI Architettura DBMS

FILE E INDICI Architettura DBMS FILE E INDICI Architettura DBMS Giorgio Giacinto 2010 Database 2 Dati su dispositivi di memorizzazione esterni! Dischi! si può leggere qualunque pagina a costo medio fisso! Nastri! si possono leggere le

Dettagli

Puntatori in C Lucidi della Pof.ssa Pazienza

Puntatori in C Lucidi della Pof.ssa Pazienza Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *

Dettagli

Cesare Rota. Programmare con C++

Cesare Rota. Programmare con C++ Cesare Rota Programmare con C++ Questo fascicolo deve essere allegato al volume Programmare con C++ di Cesare Rota ISBN 978-88-203-4248-7, ne è parte integrante e non può essere venduto separatamente EDITORE

Dettagli

Note sull implementazione in virgola fissa di filtri numerici

Note sull implementazione in virgola fissa di filtri numerici Note sull implementazione in virgola fissa di filtri numerici 4 settembre 2006 1 Introduction Nonostante al giorno d oggi i processori con aritmetica in virgola mobili siano molto comuni, esistono contesti

Dettagli

Informatica e Bioinformatica: Algoritmi

Informatica e Bioinformatica: Algoritmi Informatica e Bioinformatica: Algoritmi 20 Marzo 2014 Programmi Applicativi Programmi Applicativi Sistema Operativo (lezione 3) Macchina Hardware (lezione 1 e 2) La macchina hardware permette l esecuzione

Dettagli

Costo di esecuzione. Quanto costa? Spazio. Spazio e tempo. Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche

Costo di esecuzione. Quanto costa? Spazio. Spazio e tempo. Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Quanto costa? Prof. Stefano Guerrini guerrini@di.uniroma1.it Programmazione II (can. P-Z) A.A. 2005-06 Cosa contribuisce

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Prof. G. M. Farinella gfarinella@dmi.unict.it www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare

Dettagli

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet  francesc Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 2 Tabelle hash Una tabella hash (in inglese hash

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Prof.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap

Prof.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap Puntatori e Heap 1.Cosa Sono i Puntatori? I puntatori sono fondamentalmente delle variabili, come quelle intere, reali e carattere. Tuttavia, l unica differenza consiste nel fatto che essi non contengono

Dettagli

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso

Dettagli

Listini Dinamici. Indice degli argomenti

Listini Dinamici. Indice degli argomenti Indice degli argomenti Premessa Impostazione delle tabelle utili per la creazione di un listino dinamico Creazione di un Listino Dinamico Utilizzo in Gestione Documenti, Ordini Clienti e Movimenti di Magazzino

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Alberi binari di ricerca 2 1 Alberi L albero è un tipo astratto di dato utilizzato per rappresentare

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

Esercitazione sui grafi di precedenza, fork/join, cobegin/coend.

Esercitazione sui grafi di precedenza, fork/join, cobegin/coend. Esercitazione sui grafi di precedenza, fork/join, co/coend. Esercizio 1. Realizzare mediante il costrutto fork/join il seguente grafo di precedenze. Risposta. cont5 := 2; cont6 := 3; cont7 := 2; S1; fork(l1);

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L

Dettagli

Definire una chiave primaria. Microsoft Access. Definire una chiave primaria. Definire una chiave primaria. Definire una chiave primaria

Definire una chiave primaria. Microsoft Access. Definire una chiave primaria. Definire una chiave primaria. Definire una chiave primaria Microsoft Access Chiavi, struttura delle tabelle 1. Portare la tabella in Visualizzazione struttura Selezionare la tabella sulla quale si desidera intervenire nella finestra del database Poi: Fare clic

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Gli algoritmi di base sul tipo array: ordinamento e ricerca Claudio De Stefano - Corso di Fondamenti di Informatica 1 Algoritmi di ordinamento gli algoritmi si differenziano

Dettagli

Tracce. 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni

Tracce. 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni Algoritmi e Strutture Dati Tracce 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni int freq(list &L, int k): restituisce il numero di occorrenze dei multipli

Dettagli

Liste Doppiamente Collegate

Liste 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

Dettagli

Fondamenti di Informatica T-1

Fondamenti 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:

Dettagli