Liste concatenate e allocazione dinamica
|
|
- Leonora Castellano
- 6 anni fa
- Visualizzazioni
Transcript
1 Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2017/2018
2 Calendario delle lezioni Ogni lezione consta di una spiegazione assistita da slide, e seguita da esercizi in classe Lezione 1 (19-20/09/2017) - Introduzione all ambiente Linux Lezione 2 (26-27/09/2017) - Introduzione al C Lezione 3 (3-4/10/2017) - Tipi primitivi e costrutti condizionali Lezione 4 (10-11/10/2017) - Costrutti iterativi ed array Lezione 5 (17-18/10/2017) - Funzioni, stack e visibilità variabili Lezione 6 (24-25/10/2017) - Puntatori e Aritmetica dei puntatori Lezione 7 (7-8/11/2017) - Tipi di dati utente Lezione 8 (14-15/11/2017) - Liste concatenate e librerie. Lezione 9 (21-22/11/2017) - Debugging Lezione 10 (28-29/11/2017) - Ricorsione Lezione 11 (5-6/12/2017) - Esercizi su Liste Lezione 12 (12-13/12/2017) - Simulazione prova pratica
3 Sommario 1 Liste concatenate e allocazione dinamica
4 Outline Liste concatenate e allocazione dinamica 1 Liste concatenate e allocazione dinamica
5 Liste Concatenate Fin ora abbiamo visto come gli array ci permettano di rappresentare sequenze di elementi dello stesso tipo. Esempi: array di interi, array di caratteri, ma anche array di struct.
6 Liste Concatenate Fin ora abbiamo visto come gli array ci permettano di rappresentare sequenze di elementi dello stesso tipo. Esempi: array di interi, array di caratteri, ma anche array di struct. Hanno dei vantaggi (accesso diretto, ossia tramite indice, e allocazione contigua in memoria) ma anche degli svantaggi:
7 Liste Concatenate Fin ora abbiamo visto come gli array ci permettano di rappresentare sequenze di elementi dello stesso tipo. Esempi: array di interi, array di caratteri, ma anche array di struct. Hanno dei vantaggi (accesso diretto, ossia tramite indice, e allocazione contigua in memoria) ma anche degli svantaggi: hanno una dimensione fissata;
8 Liste Concatenate Fin ora abbiamo visto come gli array ci permettano di rappresentare sequenze di elementi dello stesso tipo. Esempi: array di interi, array di caratteri, ma anche array di struct. Hanno dei vantaggi (accesso diretto, ossia tramite indice, e allocazione contigua in memoria) ma anche degli svantaggi: hanno una dimensione fissata; inserire/eliminare un elemento all interno di un array può essere un operazione costosa:
9 Liste Concatenate Fin ora abbiamo visto come gli array ci permettano di rappresentare sequenze di elementi dello stesso tipo. Esempi: array di interi, array di caratteri, ma anche array di struct. Hanno dei vantaggi (accesso diretto, ossia tramite indice, e allocazione contigua in memoria) ma anche degli svantaggi: hanno una dimensione fissata; inserire/eliminare un elemento all interno di un array può essere un operazione costosa:
10 Liste Concatenate Fin ora abbiamo visto come gli array ci permettano di rappresentare sequenze di elementi dello stesso tipo. Esempi: array di interi, array di caratteri, ma anche array di struct. Hanno dei vantaggi (accesso diretto, ossia tramite indice, e allocazione contigua in memoria) ma anche degli svantaggi: hanno una dimensione fissata; inserire/eliminare un elemento all interno di un array può essere un operazione costosa:
11 Liste Concatenate Fin ora abbiamo visto come gli array ci permettano di rappresentare sequenze di elementi dello stesso tipo. Esempi: array di interi, array di caratteri, ma anche array di struct. Hanno dei vantaggi (accesso diretto, ossia tramite indice, e allocazione contigua in memoria) ma anche degli svantaggi: hanno una dimensione fissata; inserire/eliminare un elemento all interno di un array può essere un operazione costosa:
12 Liste Concatenate Una lista concatenata (linked list) è una sequenza di nodi, ciascuno dei quali memorizza un dato e contiene un riferimento (puntatore) al nodo successivo. Sono strutture dinamiche: possiamo gestirle facilmente in maniera tale che crescano/decrescano in accordo alla quantità di dati che vogliamo memorizzare; in particolare per aggiungere o cancellare nodi in una qualunque posizione basta aggiustare i riferimenti all interno della lista, senza toccare gli elementi non coinvolti.
13 Modello di memoria - Liste concatenate Array:
14 Modello di memoria - Liste concatenate Array: Strutture di interi:
15 Modello di memoria Lista concatenata:
16 Modello di memoria Lista concatenata: Rappresentazione semplificata della lista concatenata: testa Da ora in poi useremo questa rappresentazione!
17 Inserzione/Cancellazione Inserzione:
18 Inserzione/Cancellazione Inserzione:
19 Inserzione/Cancellazione Inserzione: Rimozione:
20 Rappresentazione in C In C le liste vengono realizzate mediante struct. Andiamo a definire il generico nodo: s t r u c t elemento { / / dato i n t i n f o ; / / puntatore a l prossimo elemento s t r u c t elemento next ; } ;
21 Rappresentazione in C In C le liste vengono realizzate mediante struct. Andiamo a definire il generico nodo: s t r u c t elemento { / / dato i n t i n f o ; / / puntatore a l prossimo elemento s t r u c t elemento next ; } ; typedef s t r u c t elemento ElementoDiLista ;
22 Rappresentazione in C In C le liste vengono realizzate mediante struct. Andiamo a definire il generico nodo: s t r u c t elemento { / / dato i n t i n f o ; / / puntatore a l prossimo elemento s t r u c t elemento next ; } ; typedef s t r u c t elemento ElementoDiLista ; typedef ElementoDiLista L i s t a D i E l e m e n t i ; l ultimo elemento della lista non ha successore e quindi il suo campo next sarà uguale a NULL;
23 Rappresentazione in C In C le liste vengono realizzate mediante struct. Andiamo a definire il generico nodo: s t r u c t elemento { / / dato i n t i n f o ; / / puntatore a l prossimo elemento s t r u c t elemento next ; } ; typedef s t r u c t elemento ElementoDiLista ; typedef ElementoDiLista L i s t a D i E l e m e n t i ; l ultimo elemento della lista non ha successore e quindi il suo campo next sarà uguale a NULL; l inizio della lista è individuato da una variabile puntatore chiamata head (tipo ListaDiElementi) che punta al primo elemento della lista. L accesso alla lista avviene attraverso il puntatore al primo elemento.
24 Sommario Liste concatenate e allocazione dinamica 1 Liste concatenate e allocazione dinamica
25 Perchè usare l allocazione dinamica Ma con quello che sappiamo adesso per creare una lista di 3 elementi devo dichiarare 3 variabili di tipo ElementoDiLista: ElementoDiLista el1, el2, el3 ;
26 Perchè usare l allocazione dinamica Ma con quello che sappiamo adesso per creare una lista di 3 elementi devo dichiarare 3 variabili di tipo ElementoDiLista: ElementoDiLista el1, el2, el3 ; Il numero degli elementi della lista deve essere deciso a tempo di compilazione.
27 Perchè usare l allocazione dinamica Ma con quello che sappiamo adesso per creare una lista di 3 elementi devo dichiarare 3 variabili di tipo ElementoDiLista: ElementoDiLista el1, el2, el3 ; Il numero degli elementi della lista deve essere deciso a tempo di compilazione. Non è possibile, per esempio, creare una lista con un numero di elementi letti in ingresso. Ma allora qual è il vantaggio rispetto all array?
28 Perchè usare l allocazione dinamica Ma con quello che sappiamo adesso per creare una lista di 3 elementi devo dichiarare 3 variabili di tipo ElementoDiLista: ElementoDiLista el1, el2, el3 ; Il numero degli elementi della lista deve essere deciso a tempo di compilazione. Non è possibile, per esempio, creare una lista con un numero di elementi letti in ingresso. Ma allora qual è il vantaggio rispetto all array? Quello che abbiamo visto non è l unico modo....
29 Primitive Liste concatenate e allocazione dinamica Il C mette a disposizione delle primitive per la gestione dinamica della memoria Incluse in stdlib.h Primitive per allocare dinamicamente memoria malloc, calloc, realloc (in questo corso vedremo solo la malloc) free - primitiva di deallocazione della memoria
30 Primitive - malloc void * malloc(size_t size)
31 Primitive - malloc void * malloc(size_t size) Alloca size bytes di memoria size_t è semplicemente un tipo intero senza segno
32 Primitive - malloc void * malloc(size_t size) Alloca size bytes di memoria size_t è semplicemente un tipo intero senza segno Restituisce un puntatore all inizio dell area di memoria allocata void* definisce un puntatore ad un tipo generico che puó essere castato implicitamente od esplicitamente a qualsisi tipo puntatore Se l allocazione di memoria fallisce, malloc restituisce NULL
33 Heap Ricordiamo come vede la memoria un programma C in esecuzione stack Heap Dati globali Variabili globali la dimensione di quest'area è fissata a tempo di compilazione e non si può espandere a run time (esecuzione) Text
34 Allocazione dinamica: malloc Come si usa tipicamente: ListaDiElementi head; head 0xFF00 head= malloc (sizeof(elementolista)); head->info=12; head->next=null; stack? Primo indirizzo disponibile Contiene la memoria allocata Dinamicamente fino ad ora 0xAA00 Heap
35 Allocazione dinamica: malloc Come si usa tipicamente: ListaDiInteri head; head 0xFF00 head=malloc (sizeof(elementodilista));) head->info=12; head->next=null; 0xAB00 stack? Primo indirizzo disponibile Dopo l'allocazione 0xAA00 Heap
36 Allocazione dinamica: malloc Situazione di partenza: ListaDiInteri head; stack head 0xFF00 0xAA00 head= malloc (sizeof(elementodilista)); head->info=12; head->next=null; Primo indirizzo disponibile Per l'allocazione 0xAB00 0xAA00 Heap
37 Allocazione dinamica: malloc Situazione di partenza: stack ListaDiElementi head; head 0xFF00 0xAA00 head= malloc(sizeof(elementodilista)); head->info=12; head->next=null; Primo indirizzo disponibile Per l'allocazione 0xAB00 0xAA00 NULL 12 Heap
38 Primitive - free In C, la gestione dello heap è lasciata al programmatore Lo spazio allocato sullo heap non viene deallocato all uscita delle funzioni La deallocazione deve essere gestita esplicitamente
39 Primitive - free In C, la gestione dello heap è lasciata al programmatore Lo spazio allocato sullo heap non viene deallocato all uscita delle funzioni La deallocazione deve essere gestita esplicitamente void free(void *ptr)
40 Primitive - free In C, la gestione dello heap è lasciata al programmatore Lo spazio allocato sullo heap non viene deallocato all uscita delle funzioni La deallocazione deve essere gestita esplicitamente void free(void *ptr) Dealloca lo spazio puntato da ptr ed allocato usando malloc L i s t a D i E l e m e n t i head ; head =( L i s t a D i E l e m e n t i ) malloc ( s i z e o f ( ElementoDiLista ) ) ;... f r e e ( head ) ;
41 Allocazione dinamica: free Situazione di partenza: ListaDiElementi head; head=malloc(sizeof(elementodilista)); head->info=12; head->next=null;... free(head); head 0xFF00 0xAB00 Primo indirizzo disponibile Per l'allocazione 0xAA00 stack 0xAA00 NULL 12 Heap
42 Allocazione dinamica: free Situazione di partenza: ListaDiElementi head; stack head 0xFF00 head= malloc (sizeof(elementodilista)); 0xAA00 head->info=12; head->next=null... free(head); Primo indirizzo disponibile per l'allocazione 0xAB00 0xAA00 NULL 12 Heap
43 Allocazione dinamica: free Situazione di partenza: ListaDiElementi head; head=malloc(sizeof(elementodilista)); head->info=12; head->next=null... free(head); head Notate che il puntatore head non viene modificato, contiene ancora l'indirizzo e può essere usato! Il risultato però di tale accesso è indeterminato... 0xFF00 0xAB00 0xAA00 stack 0xAA00 NULL 12 Heap
44 Liste concatenate - codice Esempio: creazione di una lista con tre elementi {5, 1, 20}: L i s t a D i E l e m e n t i head ; L i s t a D i E l e m e n t i el1, el2, el3 ; el1= ( L i s t a D i E l e m e n t i ) malloc ( s i z e o f ( ElementoDiLista ) ) ; el2= ( L i s t a D i E l e m e n t i ) malloc ( s i z e o f ( ElementoDiLista ) ) ; el3= malloc ( s i z e o f ( ElementoDiLista ) ) ;
45 Liste concatenate - codice Esempio: creazione di una lista con tre elementi {5, 1, 20}:
46 Liste concatenate - codice Esempio: creazione di una lista con tre elementi {5, 1, 20}:
47 Liste concatenate - codice Esempio: creazione di una lista con tre elementi {5, 1, 20}:
48 Array vs. Liste Liste concatenate e allocazione dinamica Anche le liste hanno i propri vantaggi e svantaggi: + inserzione e rimozione molto piu semplice che negli array (non c e bisogno di riorganizzare tutta la struttura); + sono strutture dinamiche, possiamo crescere e decrescere facilmente durante l esecuzione del programma.
49 Array vs. Liste Liste concatenate e allocazione dinamica Anche le liste hanno i propri vantaggi e svantaggi: + inserzione e rimozione molto piu semplice che negli array (non c e bisogno di riorganizzare tutta la struttura); + sono strutture dinamiche, possiamo crescere e decrescere facilmente durante l esecuzione del programma. - sono una sequenza di dati, quindi per arrivare ad un particolare nodo (es. l ultimo) e necessario percorrere tutta la lista; - non sono memorizzate in maniera contigua in memoria (piu tempo per passare da un elemento all altro)
50 Array vs. Liste Liste concatenate e allocazione dinamica Anche le liste hanno i propri vantaggi e svantaggi: + inserzione e rimozione molto piu semplice che negli array (non c e bisogno di riorganizzare tutta la struttura); + sono strutture dinamiche, possiamo crescere e decrescere facilmente durante l esecuzione del programma. - sono una sequenza di dati, quindi per arrivare ad un particolare nodo (es. l ultimo) e necessario percorrere tutta la lista; - non sono memorizzate in maniera contigua in memoria (piu tempo per passare da un elemento all altro) Da questo punto di vista array e liste si complementano
Liste concatenate e allocazione dinamica
Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide, e seguita
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliLa programmazione nel linguaggio C. Liste
Liste È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse. Esempi: sequenza di interi (23 46 5 28 3) sequenza di caratteri ( x r f ) sequenza di
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliVariabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free
Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in
DettagliIntroduzione al C Lez. 4. Allocazione Dinamica della memoria
Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria
DettagliIntroduzione al C Lez. 4
Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso
DettagliStrutture dati dinamiche in C. Emilio Di Giacomo
Strutture dati dinamiche in C Emilio Di Giacomo Strutture dati Una struttura dati è un contenitore in cui i dati sono organizzati in maniera che possano essere recuperati e manipolati efficientemente Un
DettagliLezione IX Gestione dinamica della memoria
Programmazione e Laboratorio di Programmazione Lezione IX Gestione dinamica della memoria Programmazione e Laboratorio di Programmazione: Gestione dinamica della memoria 1 Operatore sizeof() Buffer: una
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliDiversi modi di rappresentare sequenze di elementi
Liste È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse. Esempi: sequenza di interi (23 46 5 2 3) sequenza di caratteri ( x r f ) sequenza di
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliLezione IX Gestione dinamica della memoria
Programmazione e Laboratorio di Programmazione Lezione IX Gestione dinamica della memoria Programmazione e Laboratorio di Programmazione: Gestione dinamica della memoria 1 Direttiva per il preprocessore
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
DettagliListe concatenate. Violetta Lonati
Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste
DettagliAllocazione Dinamica della memoria
Allocazione dinamica Allocazione Dinamica della memoria I Il C mette a disposizione delle primitive per la gestione dinamica della memoria, grazie all utilizzo di alcune funzioni messe a disposizione dalla
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliAllocazione dinamica. VLA, malloc() e dintorni
Allocazione dinamica VLA, malloc() e dintorni Rappresentazione di sequenze... È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse: Es: sequenza
DettagliStrutture dati dinamiche
Strutture dati dinamiche - Liste concatenate - Pile -> LIFO (last in first out) - Code -> FIFO (first in first out) - Alberi binari: gestione dati in algoritmi complessi Liste Concatenate Formata da elementi
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliPer quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente la loro esistenza deve essere prevista e dichiarata a priori Questo può rappresentare un problema
DettagliTitolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.
Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliIntroduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso
DettagliGestione della memoria
Gestione della memoria Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2017 2018 Allocazione di memoria A una variabile puntatore si può assegnare
DettagliPolitecnico di Milano. Strutture dati dinamiche
Politecnico di Milano Strutture dati dinamiche Strutture dati statiche e dinamiche In C le dimensioni di ogni dato sono note prima dell esecuzione Sarebbe utile avere contenitori la cui dimensione varia
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliL 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
DettagliAllocazione 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
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char
DettagliL'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
DettagliProgrammazione II. Lezione 9. Daniele Sgandurra 16/11/2010.
Programmazione II Lezione 9 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 16/11/2010 1/31 Programmazione II Lezione 9 16/11/2010 Sommario 1 Gestione della Memoria 2/31 Programmazione II Lezione 9 16/11/2010
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 21 Strutture dinamiche Gli array ci permettono di memorizzare un insieme di dati dello stesso tipo Deve essere noto staticamente il
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliIntroduzione al C. Unità Gestione Dinamica della Memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione
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
DettagliPreviously on TDP. LISTA rappresentata mediante "struct e puntatori" Cosa e aux? Di che tipo e e cosa contiene?
Previously on TDP lis ^ ^ 7 21 ** ** 14 *** memoria 9 NULL LISTA rappresentata mediante "struct e puntatori" *** lis->info == cosa? lis->next == ^^; /*cosa e ^^?*/ che cosa e' (*lis)? Cosa e aux? Di che
Dettagli10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica
Caratteristiche degli array Principali caratteristiche degli array: LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli
DettagliPreviously on TDP. LISTA rappresentata mediante "struct e puntatori" TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux.
Previously on TDP lis 7 21 ** ** 14 *** *** memoria 9 LISTA rappresentata mediante "struct e puntatori" TipoLista lis lis->info == cosa? lis->next == ; /*cosa e?*/ che cosa e' (*lis)? Dichiarare DISEGNARE
DettagliAllocazione statica della memoria
2015 - Roberta Gerboni 1 2 Allocazione statica della memoria Cosa succede nella memoria del computer quando il un programma vengono dichiarate delle variabili? memoria Ad esempio: int main() 57 { int x=
DettagliLinguaggio C: Strutture e Liste Concatenate Valeria Cardellini
Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica
DettagliLezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe
Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani
DettagliIl linguaggio C Strutture
Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi
DettagliUnità 11 Allocazione dinamica
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 11 Allocazione dinamica S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi
DettagliAllocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()
Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili
DettagliStrutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
Dettaglicons: L E L (...), e (e,...) Operatori tradizionali sulle liste car: (e,...) cdr: What s LISTE? null: () TRUE (...) FALSE Una lista e' una
What s LISTE? Una lista e' una ( es. λ = {4, 9, 1 E = dominio degli elementi di lista (persone, voli, interi, lettere...) L = {λ / λ e' una lista di elementi in E Bool = {TRUE, FALSE cons: L E L (...),
DettagliListe collegate. Liste
Liste È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse. Esempi: sequenza di interi (23 46 5 28 3) sequenza di caratteri ( x r f ) sequenza di
DettagliLaboratorio di algoritmi e strutture dati
Laboratorio di algoritmi e strutture dati G. Melideo CdL in Informatica A.A. 2009/2010 G. Melideo (CdL in Informatica) Laboratorio di algoritmi e strutture dati A.A. 2009/2010 1 / 23 Indice 1 Richiami
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 15 Corso di Informatica 2009-2010 Lezione 15 1 Liste concatenate Liste concatenate Una lista concatenata costituisce un metodo molto utile per immagazzinare
DettagliCorso di Informatica
Corso di Informatica Modulo T4 A1 Allocazione dinamica 1 Prerequisiti Programmazione elementare Programmazione ad oggetti Dati semplici e strutturati 2 1 Introduzione In molti problemi capita di non conoscere
DettagliIMPLEMENTAZIONE CONCATENATE DELLE LISTE
IMPLEMENTAZIONE CONCATENATE DELLE LISTE Liste collegate Come già visto, la realizzazione sequenziale prevede che la sequenzialità degli elementi della lista venga rappresentata dalla adiacenza delle locazioni
DettagliLa gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
DettagliE12 Esercizi su Strutture dati dinamiche in C
E12 Esercizi su Strutture dati dinamiche in C Esercizio 1. Si vuole realizzare una lista caratteri in C utilizzando una rappresentazione semplicemente collegata. Scrivere una struttura nodo che contiene
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti Ricorsione La ricorsione è un approccio per la risoluzione
DettagliPuntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliMemoria dinamica. Mauro Fiorentini, Univ. di Milano, 2019 M. Fiorentini Il linguaggio C - 467
Memoria dinamica Mauro Fiorentini, 2019 Univ. di Milano, 2019 M. Fiorentini Il linguaggio C - 467 Gestione della memoria dinamica Totalmente sotto il controllo del programmatore. Basata su due funzioni,
DettagliRappresentazione di sequenze...
Liste Rappresentazione di sequenze... Ritorniamo al nostro problema di rappresentare le sequenze, se vi ricordate avevano sottolineato un paio di problemi della rappresentazione di sequenze usando array
DettagliStrutture Dinamiche. Strutture Dinamiche
Corso di Informatica A Vito Perrone 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato)); Crea in memoria una variabile
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 12 Corso di Informatica 2009-2010 Lezione 12 1 Allocazione dinamica della memoria La funzione calloc() La funzione calloc() alloca memoria dinamicamente. Numero
DettagliLa struttura dati LISTA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati LISTA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una lista è una struttura dati astratta che rappresenta
DettagliUna breve introduzione all implementazione in C di algoritmi su grafo
Una breve introduzione all implementazione in C di algoritmi su grafo A cura di Gianmaria Leo Introduzione La lezione è un introduzione a concetti e strumenti che permettono l implementazione di algoritmi
DettagliIl linguaggio C. Puntatori e Array
Il linguaggio C Puntatori e Array Puntatori I puntatori sono variabili i cui valori sono indirizzi di locazioni in cui sono memorizzate altre variabili architettura a 32 bit: 232-1 indirizzi, ma non si
DettagliLezione 23 - ADT LISTA
Lezione 23 - ADT LISTA Rappresentazione concreta del Tipo di Dati Astratto LISTA. - Cenni sulla rappresentazione mediante array (puah!) - Rappresentazione concreta mediante struct e puntatori. - concetto
DettagliFondamenti di Informatica II
Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 5 Struct, Union e allocazione dinamica della memoria Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Dettagli&v restituisce l indirizzo della zona di memoria allocata per v.
Puntatori Sia v una variabile di tipo T. Al momento della creazione della variabile v il sistema alloca memoria sufficiente a contenere i valori appartenenti al tipo T. &v restituisce l indirizzo della
DettagliPuntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliStrutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.
Consideriamo l esercizio assegnato la scorsa lezione per rappresentare il libretto di uno studente. Per memorizzare i dati si sono utilizzati tre array: char* nomiesami[max ESAMI] Array dei nomi degli
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Liste StudentiDIA
DettagliAppunti sul C: le liste
Università degli Studi di L Aquila Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Appunti sul C: le liste Giovanna Melideo melideo@di.univaq.it
DettagliProgrammazione II. Lezione 7. Daniele Sgandurra 9/11/2010.
Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010
Dettaglipuntatori Lab. Calc. AA 2006/07 1
puntatori Lab. Calc. AA 2006/07 1 Attributi di un oggetto nome o identificatore; tipo; valore (o valori); indirizzo; Lab. Calc. AA 2006/07 2 Indirizzo Consideriamo la dichiarazione con inizializzazione:
Dettaglidott. Sabrina Senatore
dott. Sabrina Senatore Dipartimento di Informatica Riepilogo strutture 1 Sintassi della dichiarazione: typedef struct nome_tipo { Dichiarazione dei campi nome_tipo; typedef struct point{ int x; int y;
DettagliPUNTATORI. Ivan Lanese
PUNTATORI Ivan Lanese Argomenti Puntatori Liste Puntatori Un puntatore è un tipo di dato che contiene l'indirizzo di memoria di un altro tipo di dato In c+o i puntatori sono tipati: avremo puntatori a
DettagliProf.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
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliCorso 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
DettagliIl linguaggio C Strutture
Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2017, 2018 Moreno
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliVARIABILI AUTOMATICHE E DINAMICHE. Manuale linguaggio C
VARIABILI AUTOMATICHE E DINAMICHE Manuale linguaggio C Variabili automatiche e dinamiche In C è possibile classificare le variabili in base al loro tempo di vita in: variabili automatiche variabili dinamiche
DettagliAllocazione dinamica della memoria
Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Allocazione dinamica della memoria Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135
DettagliLibrerie Stringhe. Librerie e stringhe. Lezione 9. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. 2015/2016
e stringhe Lezione 9 Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2015/2016 Calendario delle lezioni Lezione 1 (7 e 9/10/2015) - Introduzione all ambiente Linux Lez. 2 (14 e 16/10/2015)
DettagliALGORITMI E STRUTTURE DATI
Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura
DettagliFondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
DettagliLISTE E RIPASSO. Sesto Laboratorio
LISTE E RIPASSO Sesto Laboratorio STRUTTURE E LISTE RIVEDIAMO LE STRUTTURE typedef struct anagrafico{ char nome[20]; int anni; char indirizzo[30]; dati; cittadino.anni = 3; dati popolazione[1000]; Scrivere
Dettagli