Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

1 La Standard Template Library vettori, liste, mappe, …. find, replace, reverse, sort, …. puntatori intelligenti La libreria standard STL e una libreria.
Puntatori in C e C++.
Universita di Camerino
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
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 II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
Corso di Fondamenti di programmazione a.a.2009/2010
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Astrazioni sul controllo Iteratori. 2 Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di.
Corso di Informatica Applicata Lezione 6
nome: sequenza di caratteri usata per denotare un oggetto
Puntatori - Cenni Nicola Fanizzi Corso di Programmazione C.d.L. in Informatica DIB - Università degli Studi di Bari.
memoria gestita staticamente:
Struct, enum, Puntatori e Array dinamici
1 Strutture Dinamiche Corso di Informatica A Vito Perrone.
Java Collections.
AN FI Array Array in Java. AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non è specificata.
AN Fondam98 Puntatori Azioni e procedure Assegnamenti, indirizzi e puntatori.
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.
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
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.
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
Corso di informatica Athena – Periti Informatici
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
C. Gaibisso Programmazione di Calcolatori Lezione XVI Allocazione dinamica della memoria Programmazione di Calcolatori: allocazione dinamica della memoria.
Elementi di programmazione ad oggetti a. a. 2009/2010
Grafi Rappresentazione mediante liste di adiacenza:
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Puntatori e Stringhe.
Dato un vettore di reali di dimensione DIM, si inseriscano N elementi presi da tastiera, si utilizzi 0 per terminare l’inserimento. Ordinare gli elementi.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Allievi Elettrici - AA Le funzioni ricorsive in C
CORSO DI PROGRAMMAZIONE II
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Relazione sulle strutture dati Svolta da: Buccella Simone Strutture di dati Aree di memoria Puntatore numericibooleani alfabetici Statici dinamici Puntatori.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Strutture Dati.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
Fondamenti di Informatica
Lezione sulle allocazioni dinamiche
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
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.
Transcript della presentazione:

Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria Informatica, Gestionale e dellAutomazione

Lezione 10.4 La libreria standard: iteratori e allocatori.

Iteratori Literatore è unastrazione della nozione di puntatore ad un elemento di un array Non cè nessun iteratore NULL Un iteratore fa riferimento ad un elemento valido se è diverso dalliteratore che segnala la fine della sequenza Un iteratore valido può essere dereferenziato con *, ->, [] Un iteratore può non essere valido perché non è stato inizializzato, oppure il contenitore a cui fa riferimento è stato ridimensionato o distrutto, o infine se si tratta del demarcatore di fine sequenza

Categorie di iteratori Gli iteratori vengono classificati sulla base delle operazioni che consentono di effettuare in tempo costante Complessità O(1) Ingresso (In): solo letture e avanzamento Uscita (Out): solo scrittura e avanzamento In avanti (For): come In e Out insieme Bidirezionali (Bi): come For, ma consentono di scorrere la sequenza anche allindietro Ad accesso casuale (Ran): consentono laccesso indicizzato Non sono delle classi con una nozione di ereditarietà Se es. un template della libreria standard ha come argomento di tipo In, si presuppone che si tratti un iteratore che supporta operazioni di lettura ed avanzamento

Operazioni su categorie di iteratori OutInForBiRan lettura= *p accesso-> -> [] scrittura*p = iterazione = -= confronto== != == != =

const e non const Indipendentemente dalla loro categoria, gli iteratori possono essere const o non const

Distanza tra iteratori Solo gli iteratori ad accesso casuale definiscono loperatore – La distanza tra iteratori può essere calcolata mediante una funzione template int dinstance(In first, In last) { int result = 0; while (first++ != last) d++; return result; }

iterator_traits Il tipo di ritorno di difference() non dovrebbe essere int ma In::difference_type tipo numerico con segno in grado di contenere la differenza tra iteratori … non funzionerebbe però con i puntatori

iterator_traits La libreria standard definisce un template iterator_traits, che contiene tra laltro: template struct iterator_traits { typedef typename I::difference_type difference_type; }; Si può usare iterator_traits ::difference_type anche su puntatori perché viene definita una specializzazione per i puntatori template struct iterator_traits { typedef ptrdiff_t diffference_type; }; la differenza tra puntatori viene rappresentata dal tipo ptrdiff_t dichiarato in

Inseritori Una sequenza di destinazione deve essere valida e sufficientemente capiente Per poter avere come destinazione un iteratore che sottintende dei nuovi elementi che vengono inseriti, nella libreria standard vengono definiti tre classi template di iteratori e tre funzioni che ne semplificano luso template back_insert_iterator back_inserter(C& c); template front_insert_iterator front_inserter(C& c); template insert_iterator inserter(C& c, Out o); Consentono luso es. di copy(v.begin(), v.end(), back_inserter(l)) per ocpiare il contenuto del vector v in coda alla lista l

reverse_iterator i contenitori standard forniscono i metodi rbegin() e rend() per ottenere degli iteratori che scorrono la sequenza allincontrario Partendo da rbegin(), con applicazioni successive delloperatore ++ si va dalla fine allinizio del contenitore

Iteratori e I/O È possibile costruire un iteratore che opera su un certo tipo di dato e applicarlo ad un flusso ostream_iterator oo(cout); *oo = Salve ; oo++; *oo = e buona giornata; istream_iterator ii(cin); listream_iterator predefinito indica la fine del flusso, es. istream_iterator eos;

Allocatori Un allocatore fornisce un metodo per allocare e deallocare memoria La libreria standard definisce in un allocatore standard che fa uso degli operatori predefiniti new() e delete template class std::allocator { typedef size_t size_type; typedef T* pointer; typedef const T* const_pointer; pointer allocate(size_type n, allocator ::const_pointer hint = 0); void deallocate(pointer p, size_type n); }