Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018"

Transcript

1 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 nome [MAXLENGTH] ; 6 char cognome [MAXLENGTH] ; 7 } Persona ; 8 9 void stampa persona ( Persona p ){ p r i n t f ( "%s %s\n", p. nome, p. cognome ) ; 1 } 1 14 void m o d i f i c a p e r s o n a ( Persona p ){ 1 p. nome [ 0 ] = \0 ; 16 } int main ( ) { 0 1 Persona p = {"Mario", "Rossi" } ; stampa persona ( p ) ; m o d i f i c a p e r s o n a ( p ) ; 4 stampa persona ( p ) ; } La struttura p viene passata alla funzione modifica persona per valore, la funzione modifica persona quindi copia tutti i valori della struttura persona p contenuta nel record di attivazione del main, nella variabile locale persona p contenuta nel record di attivazione della funzione modifica persona. In questo modo, la chiamata a modifica persona non ha nessun effetto sulla variabile p contenuta nel main.. Cosa stampa il seguente programma? #include <s t r i n g. h> #d e f i n e MAXLENGTH typedef struct { 7 char nome ; 8 char cognome ; 9 } Persona ; void a l l o c a p e r s o n a ( Persona p, char nome [ ], char cognome [ ] ) { 1 14 /* alloco in modo dinamico gli array che contengono 1 nome e cognome */ 16

2 17 p >nome =(char ) malloc (MAXLENGTH sizeof ( char ) ) ; 18 p >cognome = ( char ) malloc (MAXLENGTH sizeof ( char ) ) ; 19 s t r c p y (p >nome, nome ) ; 0 s t r c p y (p >cognome, cognome ) ; 1 } 4 void stampa persona ( Persona p ){ 6 p r i n t f ( "%s %s\n", p. nome, p. cognome ) ; 7 } void m o d i f i c a p e r s o n a ( Persona p ){ 1 p. nome [ 0 ] = \0 ; /* N.B. in questo caso la struttura contiene dei puntatori ad una zona di memoria dinamica. Quando la funzione 4 viene richiamata si effettua una copia di ogni suo attributo, quindi una copia dei puntatori, ma non d e l l a r e a di memoria 6 allocata dinamicamente a cui essi puntano 7 */ 8 } 9 40 int main ( ) { 41 4 Persona p ; 4 a l l o c a p e r s o n a (&p, "Mario", "Rossi" ) ; 44 stampa persona ( p ) ; 4 m o d i f i c a p e r s o n a ( p ) ; 46 stampa persona ( p ) ; 47 } In questo caso il codice stamperá prima Mario Rossi e dopo Rossi. Infatti, passando per riferimento l indirizzo della variabile p del main alla funzione modifica persona, questa é in grado di modificare il contenuto di p appartenente al record di attivazione del main.. Che cosa stampa il seguente codice? Rimane della memoria non deallocata al termine del main? 4 int main ( ) { 6 int p ; 7 int q ; 8 9 p = ( int ) malloc ( sizeof ( int ) ) ; /* alloco lo spazio di un intero */ 10 p = 1 0 ; 11 q = p ; 1 q = ( p ) ++; 1 /* 14 int temp = *p; 1 *p += 1; 16 *q = temp; 17 */ p r i n t f ( "%d\n", q ) ; /* stampa 10 */ 0

3 1 q = ++( p ) ; /* *p += 1; 4 *q = *p; */ 6 7 p r i n t f ( "%d\n", q ) ; /* stampa 11 */ 8 f r e e ( q ) ; 9 } 4. Cosa stampa questo codice? Rimane della memoria non deallocata al termine del main? 4 int main ( ) { 6 int i = 10, j = 0 ; 7 int p ; 8 p = ( int ) malloc ( sizeof ( int ) ) ; /* alloco lo spazio di un intero */ 9 p = i ; 10 for ( ; p<j ; ( p)++){ 11 p r i n t f ( "%d\n", i ) ; 1 } 1 14 p = &i ; 1 16 for ( ; p<j ; ( p)++){ 17 p r i n t f ( "%d\n", i ) ; /* stampo i numeri da 10 a 19 */ 18 } 19 0 f r e e ( p ) ; 1 /* il programma termina con un errore perche 4 tenta di deallocare una zona non allocata in modo dinamico. Infatti in riga 16 viene assegnato a p l indirizzo della 6 variabile i. 7 La memoria non viene deallocata in modo corretto. 8 */ 9 0 }. Cosa stampa questo codice? #d e f i n e MAX int main ( ) { 7 8 char p, q ; 9 10 p=(char ) malloc (MAX sizeof ( char ) ) ; 11 /* alloco uno spazio di memoria grande 0 volte un char, 1 in pratica un array di char contente 0 elementi

4 1 char p[0]; 14 */ 1 16 /* 17 leggo una stringa di testo e la salvo nella zona di memoria 18 puntata da p 19 */ 0 s c a n f ( "%s", p ) ; 1 q=p ; p r i n t f ( "%s\n", q ) ; 4 /* dato che q punta alla zona di memoria allocata dinamicamente, stampo la stringa letta in input */ 6 7 /* uso il puntatore q per iterare lungo l array */ 8 for ( ; q!= \0 ; q++){ 9 p r i n t f ( "%c", q ) ; 0 /* stampo uno alla volta tutti i caratteri della 1 stringa letta in input */ } 4 p r i n t f ( "\n" ) ; f r e e ( p ) ; 6 /* libero la memoria 7 nota: se avessimo fatto free(q), avremmo ottenuto un errore 8 */ 9 40 } 6. Cosa stampa questo codice? 1 #include <s t d l i b.> #d e f i n e MAX 4 int main ( ) { 6 7 int m[max] ; /* dichiaro un array di puntatori ad intero */ 8 /* N.B. -> ogni cella dell array e un puntatore */ 9 10 int i, j ; 11 1 for ( i =0; i <MAX; i ++){ 1 14 m[ i ] = ( int ) malloc (MAX sizeof ( int ) ) ; 1 /* 16 Alloco u n a r e a di memoria con l e q u i v a l e n t e 17 di un array di interi di dimensione MAX e 18 restituisco il puntatore ad una cella dell array m */ 19 0 /* alla fine del ciclo ottengo una matrice MAX x MAX */ 1 for ( j =0; j<max; j ++){ m[ i ] [ j ] = ( i +1) ( j +1); 4 /* per ogni cella di indice(i,j) della matrice, calcolo (i +1) * (j +1). 6 Costruisco in pratica una tavola pitagorica. 7 */

5 8 } 9 } 0 1 for ( i =0; i <MAX; i ++){ for ( j =0; j<max; j ++){ /* stampo ogni cella della tavola */ 4 p r i n t f ( "%d ",m[ i ] [ j ] ) ; } 6 p r i n t f ( "\n" ) ; 7 /* devo deallocare ogni array creato dinamicamente */ 8 f r e e (m[ i ] ) ; 9 } } 7. Cosa stampa questo codice? #d e f i n e MAX 4 6 int main ( ) { 7 8 int m; /* puntatore a puntatori */ 9 int i, j ; /* 1 N.B. A differenza d e l l e s e r c i z i o 6, la matrice e 1 completamente dinamica, sia per il numero di 14 righe che di colonne 1 */ m = ( int ) malloc ( sizeof ( int ) MAX) ; /* alloco un area di memoria corrispondente 0 ad un array di MAX puntatori ad interi 1 */ for ( i =0; i <MAX; i ++){ 4 m[ i ] = ( int ) malloc (MAX sizeof ( int ) ) ; 6 /* 7 Alloco u n a r e a di memoria con l e q u i v a l e n t e 8 di un array di interi di dimensione MAX e 9 restituisco il puntatore ad una cella dell array m */ 0 1 for ( j =0; j<max; j ++){ m[ i ] [ j ] = ( i +1) ( j +1); } 4 } 6 for ( i =0; i <MAX; i ++){ 7 for ( j =0; j<max; j ++){ 8 /* stampo ogni cella della tavola */ 9 p r i n t f ( "%d ",m[ i ] [ j ] ) ; 40 } 41 p r i n t f ( "\n" ) ;

6 4 /* devo deallocare ogni array creato dinamicamente */ 4 f r e e (m[ i ] ) ; 44 } 4 46 /* 47 E necessario deallocare anche la memoria dell array di array 48 */ 49 f r e e (m) ; 0 1 } 8. Cosa stampa il seguente programma? #d e f i n e MAX int main ( ) { 8 9 int m; 10 int i, j ; 11 1 /* 1 Rappresento la matrice come un unico array dove le righe della 14 matrice sono state concatenate una dopo l a l t r a 1 */ 16 m = ( int ) malloc ( sizeof ( int ) MAX MAX) ; for ( i =0; i <MAX; i ++){ 19 for ( j =0; j<max; j ++){ 0 /* 1 Per accedere ad un elemento d e l l a r r a y e necessario calcolare la giusta posizione : Es: la cella di riga 1, colonna nella matrice (m [1][]) e l elemento di 4 posizione (1 * MAX + ) nell array */ 6 m[ i MAX + j ] = ( i +1) ( j +1); 7 } 8 } 9 0 for ( i =0; i <MAX; i ++){ 1 for ( j =0; j<max; j ++){ p r i n t f ( "%d ",m[ i MAX + j ] ) ; } 4 p r i n t f ( "\n" ) ; } 6 f r e e (m) ; 7 8 } 9. Creare una lista dinamica di interi in cui gli elementi sono mantenuti in ordine crescente: implementare i metodi che permetto di creare la lista, inserire un nuovo elemento e stampare la lista.

7 4 /* Dichiaro la struttura che rappresenta un elemento della lista */ 6 typedef struct EL{ 7 int v a l o r e ; 8 struct EL next ; 9 } Elemento ; /* 1 Il tipo Lista e semplicemente un puntatore 14 al primo elemento della lista 1 */ typedef Elemento L i s t a ; /* 0 procedura crea_lista : 1 assegna alla testa di una lista il valore NULL, per simboleggiare che la lista e vuota */ 4 void c r e a l i s t a ( L i s t a l i s t a ){ 6 l i s t a = NULL; 7 } 8 9 /* 0 La procedura stampa_lista, stampa in modo ricorsivo tutti gli elementi 1 della lista, dal primo a l l u l t i m o */ 4 void s t a m p a l i s t a ( L i s t a l i s t a ){ 6 if ( l i s t a!= NULL){ 7 /* stampa il valore d e l l e l e m e n t o corrente */ 8 p r i n t f ( "%d ", l i s t a >v a l o r e ) ; 9 /* Passo ricorsivo su cio che rimane */ 40 s t a m p a l i s t a ( l i s t a >next ) ; 41 } 4 else{ 4 p r i n t f ( "\n" ) ; 44 } 4 46 } void i n s e r i s c i ( L i s t a l i s t a, int v a l o r e ) { 49 0 /* 1 Se la lista e terminata o il valore corrente e maggiore del valore da inserire, allora e il momento di creare il nuovo elemento */ 4 if ( l i s t a == NULL ( l i s t a ) >v a l o r e > v a l o r e ){ 6 /* 7 N.B. se la condizione considerata nella if e vera 8 vuol dire che: 9 o * lista == NULL

8 60 la lista e vuota o * lista ora corrisponde 61 all ultimo elemento 6 o (* lista)-> valore > valore) 6 in questo caso * lista corrisponde al puntatore 64 al primo elemento il cui valore e maggiore 6 di valore e quindi all elemento che deve 66 essere posizionato nella lista subito dopo 67 a quello che stiamo inserendo ora /* Alloca nuova area di memoria */ 70 Elemento e l = ( Elemento ) malloc ( sizeof ( Elemento ) ) ; 71 el >v a l o r e = v a l o r e ; /* Assegna il valore */ 7 el >next = l i s t a ; /* nuovo elemento punta all elemento corrente */ 7 l i s t a = e l ; /* L elemento precedente punta al nuovo elemento */ 74 } 7 else{ 76 /* Altrimenti procedi ricorsivamente sul resto della lista */ 77 i n s e r i s c i (&(( l i s t a ) >next ), v a l o r e ) ; 78 } 79 } int main ( ) { 8 84 L i s t a l i s t a ; 8 c r e a l i s t a (& l i s t a ) ; p r i n t f ( "Lista " ) ; 88 s t a m p a l i s t a ( l i s t a ) ; i n s e r i s c i (& l i s t a, ) ; 9 i n s e r i s c i (& l i s t a, 1 ) ; 9 i n s e r i s c i (& l i s t a, ) ; 94 i n s e r i s c i (& l i s t a, ) ; 9 i n s e r i s c i (& l i s t a, ) ; 96 p r i n t f ( "Lista" ) ; 97 s t a m p a l i s t a ( l i s t a ) ; 98 } 10. Creare una lista bidirezionale di interi, ovvero una lista che permette lo scorrimento in entrambe le direzioni (dal primo elemento allultimo e dallultimo al primo). Implementare i metodi che permettano di creare la lista, inserire un nuovo elemento al termine della lista, stampare la lista in entrambi i sensi 4 typedef struct EL{ int v a l o r e ; 6 struct EL next ; /* Puntatore all elemento successivo in lista */ 7 struct EL prev ; /* Puntatore all elemento precedente in lista */ 8 } Elemento ; 9

9 10 11 /* 1 La testa della lista e un elemento in cui il puntatore next 1 punta al primo elemento della lista, mentre il puntatore 14 prev punta all ultimo elemento della lista 1 */ typedef Elemento L i s t a ; /* 0 Procedura che inizializza la lista come lista vuota 1 ( entrambi i puntatori a NULL */ 4 void c r e a l i s t a ( L i s t a l i s t a ){ 6 l i s t a > next = NULL; /* puntatore al primo elemento della lista */ 7 l i s t a > prev = NULL; /* puntatore all ultimo elemento della lista */ 8 } /* Procedura che stampa la lista dal primo elemento all ultimo */ void s t a m p a l i s t a f o r w a r d ( L i s t a l i s t a ){ 4 if ( l i s t a. next!=null){ 6 p r i n t f ( "%d ", l i s t a. next >v a l o r e ) ; 7 s t a m p a l i s t a f o r w a r d ( ( l i s t a. next ) ) ; 8 } 9 } /* Procedura che stampa la lista dall ultimo elemento al primo */ 4 void s t a mpa l i sta b a ckward ( L i s t a l i s t a ){ 4 44 if ( l i s t a. prev!=null){ 4 p r i n t f ( "%d ", l i s t a. prev >v a l o r e ) ; 46 stampa lista backward ( ( l i s t a. prev ) ) ; 47 } 48 } 49 0 /* 1 Procedura per l i n s e r i m e n t o di un nuovo elemento al termine della lista */ 4 void i n s e r i s c i ( L i s t a l i s t a, int v a l o r e ){ 6 7 /* Non c e bisogno di iterare fino a l l u l t i m o elemento p e r c h e il 8 suo puntatore e disponibile nella testa della lista */ 9 60 Elemento elemento = ( Elemento ) malloc ( sizeof ( Elemento ) ) ; 61 elemento >v a l o r e = v a l o r e ; 6 elemento >next = NULL; /* l elemento che stiamo inserendo 6 e sempre l ultimo */ 64 elemento >prev = l i s t a >prev ; /* lista -> prev contiene 6 sempre il puntatore 66 all ultimo elemento 67 dell array, che ora deve 68 diventare l elemento

10 69 precedente a quello 70 che stiamo inserendo 71 */ 7 7 if ( l i s t a >prev!=null){ 74 /* 7 aggiorno il puntatore di quello che era l ultimo 76 elemento della lista, il cui elemento 77 successivo ora dovra corrispondere 78 all elemento che stiamo inserendo 79 */ 80 l i s t a >prev >next=elemento ; 81 } 8 else{ 8 /* 84 Nel caso la lista sia vuota, 8 il nuovo elemento diventa il primo 86 della lista 87 */ 88 l i s t a >next=elemento ; 89 } 90 /* l elemento diventa l ultimo elemento della lista 91 e aggiorno dunque il corrispondente puntatore prev 9 contenuto nella testa della lista 9 */ 94 l i s t a >prev=elemento ; 9 } int main ( ) { L i s t a l i s t a ; c r e a l i s t a (& l i s t a ) ; 10 i n s e r i s c i (& l i s t a, 1 ) ; 10 i n s e r i s c i (& l i s t a, ) ; 104 i n s e r i s c i (& l i s t a, ) ; s t a m p a l i s t a f o r w a r d ( l i s t a ) ; 107 p r i n t f ( "\n" ) ; 108 s t a m pa l i sta backward ( l i s t a ) ; 109 p r i n t f ( "\n" ) ; 110 }

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista

Dettagli

Allocazione dinamica memoria

Allocazione dinamica memoria Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 4 2/0/20 Esercizi sui tipi in C I codici e le soluzioni degli esercizi sono nella cartella parte. Dato il seguente codice, trovare gli errori, correggerli

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" Cosa e aux? Di che tipo e e cosa contiene?

Previously 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

Dettagli

Strutture dati dinamiche

Strutture 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

Dettagli

Strutture Dinamiche. Strutture Dinamiche

Strutture 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

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux.

Previously 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

Dettagli

Programmazione I - Laboratorio

Programmazione 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

Dettagli

Unità 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. 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;

Dettagli

Strutture dati dinamiche in C. Emilio Di Giacomo

Strutture 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

Dettagli

E12 Esercizi su Strutture dati dinamiche in C

E12 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

Dettagli

Liste concatenate e allocazione dinamica

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

Dettagli

Allocazione dinamica della memoria

Allocazione 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

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

Allocazione dinamica della memoria

Allocazione 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

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

Politecnico di Milano. Strutture dati dinamiche

Politecnico 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

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

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

Dettagli

Gestione dinamica della memoria

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

Dettagli

Introduzione al C Lez. 4

Introduzione 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

Dettagli

Liste concatenate. Violetta Lonati

Liste 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

Dettagli

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Introduzione 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

Dettagli

Liste concatenate e allocazione dinamica

Liste concatenate e allocazione dinamica Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2017/2018 Calendario delle lezioni Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Il linguaggio C. Puntatori e dintorni

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

Dettagli

Allocazione Dinamica della memoria

Allocazione 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

Dettagli

La programmazione nel linguaggio C. Liste

La 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

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Memoria stack ed heap (1) L'area di memoria stack é quella in cui viene allocato un pacchetto di dati non appena l'esecuzione passa dal programma chiamante a una funzione.

Dettagli

Il puntatore. Il puntatore

Il puntatore. Il puntatore Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una

Dettagli

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 11 Esercitazione: 27 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo del numero di

Dettagli

Diversi modi di rappresentare sequenze di elementi

Diversi 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

Dettagli

Fondamenti di Programmazione

Fondamenti 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

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

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti

INFORMATICA 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

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

Linguaggio C: PUNTATORI

Linguaggio C: PUNTATORI Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori

Dettagli

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C:

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C: Fondamenti Informatica B Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2 Esercizio 1 tema 1 Siano date le seguenti definizioni di costanti e tipi in linguaggio C: #define MAX_LENGTH 40

Dettagli

Gestione della memoria

Gestione 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

Dettagli

Laboratorio di Programmazione

Laboratorio 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

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

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

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci

Dettagli

Uso avanzato dei puntatori Allocazione dinamica della memoria

Uso 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

Dettagli

Programmazione I - Laboratorio

Programmazione 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

Lezione 6: Array e puntatori

Lezione 6: Array e puntatori Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci

Dettagli

Una breve introduzione all implementazione in C di algoritmi su grafo

Una 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

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

cons: L E L (...), e (e,...) Operatori tradizionali sulle liste car: (e,...) cdr: What s LISTE? null: () TRUE (...) FALSE Una lista e' una

cons: 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 (...),

Dettagli

Linguaggio C. Esercizio 1

Linguaggio C. Esercizio 1 Linguaggio C Esercizi su puntatori e liste Walter Didimo (e-mail:didimo@dia.uniroma3.it) supplemento al Corso di Calcolatori Elettronici (Riccardo Torlone) 1 Esercizio 1 Siano p e q due puntatori a variabili

Dettagli

La struttura dati CODA

La 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

Dettagli

Il linguaggio C Strutture

Il 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

Dettagli

Strutture Dati Dinamiche

Strutture 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

Dettagli

Esercizio 1 File: ordinamento di un archivio di studenti (file binario)

Esercizio 1 File: ordinamento di un archivio di studenti (file binario) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 9 Esercitazione: 19 gennaio 2005 Esercizi sui file e sulle liste. Scaletta Esercizio 1 File: ordinamento di un archivio

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 6 Aprile 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int x = -1; Scrivere la porzione di codice che inserisce

Dettagli

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Linguaggio 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

Dettagli

Fondamenti di Programmazione

Fondamenti 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

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

Introduzione al C. Unità Gestione Dinamica della Memoria

Introduzione 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

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 25 Luglio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,-8,-4; int N = 7; int i; Scrivere la porzione di codice che sostituisca

Dettagli

Corso di Programmazione I

Corso di Programmazione I Corso di Programmazione I I puntatori in C e C++ I puntatori in C Il C prevede puntatori a funzione e puntatori a dati di qualsiasi natura, semplici o strutturati. In particolare il puntatore viene utilizzato

Dettagli

Liste collegate. Liste

Liste 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

Dettagli

dott. Sabrina Senatore

dott. 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;

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Variabili 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 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

Dettagli

L'Allocazione Dinamica della Memoria nel linguaggio C

L'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

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 11: Liste a Puntatori e Input/Output Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)

Dettagli

Lezione 12: Allocazione Dinamica della Memoria

Lezione 12: Allocazione Dinamica della Memoria Lezione 12: Allocazione Dinamica della Memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Aprile 2013 Puntatori e vettori Puntatori ed indirizzi Semplificando, la memoria di un computer

Dettagli

IL CONCETTO DI LISTA!

IL CONCETTO DI LISTA! Liste semplici Obiettivi: Discutere la realizzazione collegata (puntatori a strutture) di liste semplici Introdurre l ADT lista semplice e le operazioni tipiche su essa 1 IL CONCETTO DI LISTA Una lista

Dettagli

PARTE

PARTE Programmazione CdS in Matematica Appello d esame 24 Settembre 2008 Nome.. Cognome... Matricola.. INDICARE SUBITO NOME, COGNOME, E MATRICOLA NON è permesso (pena espulsione) usare la calcolatrice e consultare

Dettagli

Puntatore. Ritorniamo sul problema dell accesso alle variabili

Puntatore. Ritorniamo sul problema dell accesso alle variabili Puntatori Puntatore Ritorniamo sul problema dell accesso alle variabili Nel linguaggio di von Neumann attraverso il loro indirizzo Nei linguaggi di alto livello attraverso il loro nome Però in taluni casi

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 19 Settembre 2006 Esercizio 1 (4 punti) Date le seguenti variabili int pari; int dispari; Stat; Stat s; A[] = 2,3,7,-2,5,-8,-4; int N = 7; int i; Scrivere

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez /12/2018

Esercitazioni di Fondamenti di Informatica - Lez /12/2018 Esercitazioni di Fondamenti di Informatica - Lez. 0 //08 Esercizi su Python. ESAME 3/08/07 es. 6. Scrivere un programma Python 3 che definisce un apposito dizionario che contiene, attraverso le coppie

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI 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

Dettagli

Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t))

Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t)) Allocazione dinamica della memoria: malloc() In C è possibile allocare dinamicamente un area di memoria (ossia, durante l esecuzione di un programma) tramite le funzioni malloc() e calloc() (occorre includere

Dettagli

Aritmetica dei puntatori

Aritmetica dei puntatori Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore

Dettagli

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi Array 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

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

Esercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi Array. Parte 7. 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

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 ! 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

Dettagli

Corso di Informatica A.A

Corso 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

Dettagli

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

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 14 Febbraio 2006 Esercizio 1 (4 punti) Formulare la seguente istruzione del linguaggio C utilizzando il costrutto while: for(i=0,j=n-1; i

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti 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

Dettagli

Lezione 23 - ADT LISTA

Lezione 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

Dettagli

Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover

Per 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

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

Capitolo 10 - Strutture

Capitolo 10 - Strutture 1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la

Dettagli

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()

Allocazione 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

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 30/10/018 Esercizi sulle funzioni in C I codici e le soluzioni degli esercizi sono nella cartella parte1 1. Scrivere i prototipi delle seguenti funzioni.

Dettagli

Il linguaggio C Strutture

Il 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

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

Titolo 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

Dettagli

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi 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

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

Laboratorio di algoritmi e strutture dati

Laboratorio 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

Dettagli

5. Quinta esercitazione autoguidata: liste semplici

5. Quinta esercitazione autoguidata: liste semplici 22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto

Dettagli