1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a. 2001-2002 - 4° Ciclo Pile e Code.

Slides:



Advertisements
Presentazioni simili
Tipi di dato astratti Lista, Pila, Coda, Albero.
Advertisements

Estendere i linguaggi: i tipi di dato astratti
Procedure In assembler.
Strutture dati lineari
Numeri casuali.
Procedure e funzioni In linguaggio C.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica CDL in Ingegneria Gestionale (B)- A.A CDL in Ingegneria Gestionale (B)- A.A Programmazione Ricorsiva.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Introduzione al linguaggio C
Le funzioni.
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
Strutture dati elementari
Algoritmi in C++ (1) da completare
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
1 Il nostro esempio guida: La costruzione di uno stack.
Costruzione di Interfacce Lezione 12 C++STL
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
CORSO DI PROGRAMMAZIONE II
Algoritmi e Strutture Dati
memoria gestita staticamente:
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Corso di informatica Athena – Periti Informatici
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
void binario(int n); …………………
Programmazione di Calcolatori
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Complessità di un algoritmo
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
Esercizi.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Nota (rif. alla lezione precedente): Vector vs ArrayList Le classi generiche Vector e ArrayList sono sostanzialmente equivalenti, ma: I metodi.
Schiavone & Scalas 2 In informatica, il termine stack o pila viene usato in diversi contesti per riferirsi a strutture dati le cui modalità d'accesso.
Esercizio Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi: Creare lista L1 con inserimento in testa; cons Creare lista L2 con.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Template.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
AlgoLab - Pile e Code Pile e code Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Allievi Elettrici - AA Le funzioni ricorsive in C
Algoritmi e Strutture Dati Strutture Dati Elementari.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Alberi.
1. 2 Ricordiamo che: La pila o stack è una struttura astratta composta da più elementi omogenei. Una pila è uno stack di dati con accessi del tipo LIFO.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Strutture Dati.
Liste Concatenate 11 Aprile E’ una delle strutture dati fondamentali in tutti i linguaggi di programmazione di alto livello Una Lista Concatenata.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ordinamento dei vettori (SELECTION-SORT) Ordinamento per selezione (selection- sort) Si cerca l’elemento più piccolo e si scambia con l’elemento in posizione.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
LIP: 18 Aprile 2008 Interfacce. Rappresentazione Lista val next vuota Lista vuota: any true Lista non vuota: any true 154 false 24 false.
Ex.1 - Astrazioni su Dati Si abbia il tipo di dato stack di interi, IntStack, specificato sotto: public class IntStack { \\ OVERVIEW: uno Stack è una collezione.
Corso di Algoritmi e Strutture Dati con Laboratorio Tipi di dato pila e coda.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
10. Programmazione Ricorsiva Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Operatori – numeri pseudocasuali - costanti
Transcript della presentazione:

1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code

2 Le Pile Le Pile (o Stack) sono liste concatenate sulle quali i nuovi nodi possono essere aggiunti o rimossi soltanto dalla sua testa. Una struttura di questo tipo viene detta Last In First Out (LIFO), poiché l’ultimo nodo aggiunto è anche il primo ad essere rimosso. Operazioni per le pile Push: crea un nodo in cui memorizza i dati passati dalla funzione chiamante e lo posiziona alla testa della pila. Pop: rimuove un nodo dalla testa della pila, acquisisce i dati in esso contenuti, rilascia la memoria allocata dal nodo estratto e restituisce il valore booleano true se l’operazione è andata a buon fine, altrimenti false.

3 Pile e Code Utilizzo delle pile Sono fondamentali, sotto il controllo del sistema operativo, per l’esecuzione della corretta sequenza delle operazioni nel corso di un programma. Un esempio è l’utilizzo per tenere traccia delle chiamate di funzione memorizzando l’indirizzo di ritorno della funzione chiamante. __________ __________ FunzioneA() __________ __________ __________ __________ __________ Programma Addr1 __________ FunzioneB() __________ __________ Return FunzioneA Addr2 __________ __________ __________ Return FunzioneB push(Addr1) push(Addr2) pop(Addr2) pop(Addr1)

4 Pile e Code Esempio per le pile // Stack class template definition // Derived from class List #ifndef STACK_H #define STACK_H #include "list.h" template class Stack : private List { public: void push( const STACKTYPE &d ) { insertAtFront( d ); } bool pop( STACKTYPE &d ) { return removeFromFront( d ); } bool isStackEmpty() const { return isEmpty(); } void printStack() const { print(); }}; #endif

5 Pile e Code // Driver to test the template Stack class #include #include "stack.h" using std::endl; int main() { Stack intStack; int popInteger, i; cout << "processing an integer Stack" << endl; for ( i = 0; i < 4; i++ ) { intStack.push( i ); intStack.printStack();} while ( !intStack.isStackEmpty() ) { intStack.pop( popInteger ); cout << popInteger << " popped from stack" << endl; intStack.printStack();}

6 Pile e Code Stack doubleStack; double val = 1.1, popdouble; cout << "processing a double Stack" << endl; for ( i = 0; i < 4; i++ ) { doubleStack.push( val ); doubleStack.printStack(); val += 1.1; } while ( !doubleStack.isStackEmpty() ) { doubleStack.pop( popdouble ); cout << popdouble << " popped from stack" << endl; doubleStack.printStack(); } return 0;}

7 Pile e Code processing an integer Stack The list is: 0 The list is: 1 0 The list is: The list is: popped from stack The list is: popped from stack The list is: popped from stack The list is: 0 0 popped from stack The list is empty

8 Pile e Code processing a double Stack The list is: 1.1 The list is: The list is: The list is: popped from stack The list is: popped from stack The list is: popped from stack The list is: popped from stack The list is empty All nodes destroyed

9 Pile e Code Le code Le code sono liste concatenate nelle quali i nodi sono inseriti soltanto in coda e rimossi soltanto dalla testa. Una struttura di questo tipo viene detta First In First Out (FIFO), poiché il primo nodo aggiunto è anche il primo ad essere rimosso. Operazioni per le pile Enqueue: crea un nodo in cui memorizza i dati passati dalla funzione chiamante e lo posiziona alla fine della coda. Dequeue: rimuove un nodo dalla testa della coda, acquisisce i dati in esso contenuti, rilascia la memoria allocata dal nodo estratto e restituisce il valore booleano true se l’operazione è andata a buon fine, altrimenti false.

10 Pile e Code Utilizzo delle code Le code, che hanno la proprietà di portare all’elaborazione i nodi che da più tempo sono stati inseriti (ossia i nodi più “vecchi”), hanno numerose applicazioni nell’ambito delle gestioni di un sistema operativo. Tra queste ricordiamo: - Le code di elaborazione dei processi nei sistemi Time Sharing - Le code di stampa. - Le code di instradamento dei messaggi gestiti da un router …ecc.

11 Pile e Code Esempio per le code // Queue class template definition // Derived from class List #ifndef QUEUE_H #define QUEUE_H #include "list.h" template class Queue: private List { public: void enqueue( const QUEUETYPE &d ) { insertAtBack( d ); } bool dequeue( QUEUETYPE &d ) { return removeFromFront( d ); } bool isQueueEmpty() const { return isEmpty(); } void printQueue() const { print(); } }; #endif

12 Pile e Code // Driver to test the template Queue class #include #include "queue.h" using std::endl; int main() { Queue intQueue; int dequeueInteger, i; cout << "processing an integer Queue" << endl; for ( i = 0; i < 4; i++ ) { intQueue.enqueue( i ); intQueue.printQueue(); } while ( !intQueue.isQueueEmpty() ) { intQueue.dequeue( dequeueInteger ); cout << dequeueInteger << " dequeued" << endl; intQueue.printQueue(); }

13 Pile e Code Queue doubleQueue; double val = 1.1, dequeuedouble; cout << "processing a double Queue" << endl; for ( i = 0; i < 4; i++ ) { doubleQueue.enqueue( val ); doubleQueue.printQueue(); val += 1.1; } while ( !doubleQueue.isQueueEmpty() ) { doubleQueue.dequeue( dequeuedouble ); cout << dequeuedouble << " dequeued" << endl; doubleQueue.printQueue(); } return 0; }

14 Pile e Code processing an integer Queue The list is: 0 The list is: 0 1 The list is: The list is: dequeued The list is: dequeued The list is: dequeued The list is: 3 3 dequeued The list is empty

15 Pile e Code processing a float Queue The list is: 1.1 The list is: The list is: The list is: dequeued The list is: dequeued The list is: dequeued The list is: dequeued The list is empty All nodes destroyed