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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 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 dinamica di interi che funzioni come una coda FIFO, First In First Out. Implementare anche le funzioni che permettano: di creare la coda stampare il contenuto della coda partendo dallelemento partendo dall elemento intesta alla coda inserire in coda estrarre dalla testa 1 #include <s t d l i b. h> /* 5 La coda e definita esattamente come una lista con singolo puntatore 6 */ 7 typedef struct EL{ 8 9 int v a l o r e ; 10 struct EL next ; 11 } Elemento ; 12 typedef Elemento Coda ; /* Inizializza la coda */ 15 void c r e a c o d a ( Coda coda ){ 16 coda = NULL; 17 } /* Procedura che stampa la coda dal primo elemento a l l u l t i m o */ void stampa coda ( Coda coda ){ 23 if ( coda!=null){ 24 p r i n t f ( "%d ", coda >v a l o r e ) ; 25 stampa coda ( coda >next ) ; 26 } 27 } /* Procedura che inserisce un elemento al termine della coda */ 30 void push ( Coda coda, int v a l o r e ){ if ( coda == NULL){ 33 /* si inserisce solo quando si e raggiunto il fondo */ 34 Elemento e = ( Elemento ) malloc ( sizeof ( Elemento ) ) ; 35 e >v a l o r e = v a l o r e ; 36 e >next = NULL; 37 /* 38 Aggiorno anche il puntatore dell elemento che era 39 l ultimo elemento

2 40 della coda prima di questo inserimento 41 */ 42 coda = e ; 43 } 44 else{ 45 push (&(( coda) >next ), v a l o r e ) ; 46 } 47 } /* Procedura per estrarre il primo elemento dalla coda */ int pop ( Coda coda ){ if ( coda!= NULL){ 55 /* Assicurarsi che la coda non sia vuota */ 56 /* Salvo l i n d i r i z z o di memoria del primo elemento 57 per poter liberare l area di memoria allocata 58 dinamicamente 59 */ 60 Elemento e = coda ; /* Salvo il valore contenuto n e l l e l e m e n t o 63 per poterlo restituire al termine 64 della procedura */ 65 int v a l o r e = e >v a l o r e ; 66 coda = e >next ; 67 /* La testa della coda e aggiornata : ora punta al 68 secondo elemento della coda */ 69 f r e e ( e ) ; /* L area di memoria del primo 70 elemento viene cancellata */ 71 return v a l o r e ; /* Il valore di quello che era il primo elemento 72 viene restituito */ 73 } 74 else{ /* Ritorno un valore arbitrario in caso 75 la coda sia vuota */ 76 return 0 ; 77 } 78 } int main ( ) { Coda coda ; 83 c r e a c o d a (&coda ) ; 84 push(&coda, 1 ) ; 85 push(&coda, 4 ) ; 86 push(&coda, 2 ) ; 87 push(&coda, 5 ) ; 88 p r i n t f ( " Estraggo %d\n", pop(&coda ) ) ; 89 stampa coda ( coda ) ; 90 p r i n t f ( "\n" ) ; 91 } 2. Creare una lista dinamica di persone che memorizzi il loro nome,il loro peso e la loro altezza. Creare le funzioni che permettano la sua creazione e linserimento di nuove persone. La lista deve permettere di poter scorrere le persone sia in ordine di peso, sia di altezza. 1 #include <s t d l i b. h>

3 2 #include <s t r i n g. h> 3 4 #d e f i n e MAX typedef struct EL{ 8 9 char nome [MAX] ; 10 int peso ; /* peso in kg */ 11 int a l t e z z a ; /* altezza in cm */ 12 /* Elemento successivo in ordine di peso */ 13 struct EL n e x t p e s o ; 14 /* Elemento successivo in ordine di altezza */ 15 struct EL n e x t a l t e z z a ; 16 } Persona ; /* Sfruttiamo ancora la struttura per creare una 20 testa di lista con due puntatori ( come in es1) */ typedef Persona L i s t a ; /* Inizializza la testa della lista */ void c r e a l i s t a ( L i s t a l i s t a ){ 27 l i s t a >n e x t p e s o = NULL; 28 l i s t a >n e x t a l t e z z a = NULL; 29 } /* Stampa la lista in ordine di peso */ void s t a m p a l i s t a p e s o ( L i s t a l i s t a ){ 34 if ( l i s t a. n e x t p e s o!=null){ 35 /* Dichiaro una variabile temporanea 36 per rendere piu compatta la printf 37 */ 38 Persona p = l i s t a. n e x t p e s o ; 39 p r i n t f ( "Nome: %s - Peso: %d kg - Altezza : %d cm\n", 40 p >nome, p >peso, p >a l t e z z a ) ; /* Chiamata ricorsiva per stampare 43 anche il resto della lista */ 44 s t a m p a l i s t a p e s o ( p ) ; 45 /* Nota: invertendo ordine printf e chiamata ricorsiva 46 avremmo ottenuto la stampa dal peso maggiore 47 al minore */ 48 } 49 } /* 53 Stampa la lista in ordine di altezza ( identica alla precedente, 54 tranne che per i puntatori usati) 55 */ 56 void s t a m p a l i s t a a l t e z z a ( L i s t a l i s t a ) { if ( l i s t a. n e x t a l t e z z a!= NULL) { 59 Persona p = l i s t a. n e x t a l t e z z a ; 60 p r i n t f ( "Nome: %s - Peso: %d kg - Altezza : %d cm\n",

4 61 p >nome, p >peso, p >a l t e z z a ) ; 62 s t a m p a l i s t a a l t e z z a ( p ) ; 63 } 64 } /* Inserisce un nuovo elemento mantenendo entrambi 68 gli ordinamenti all interno della lista */ void i n s e r i s c i ( L i s t a l i s t a, char nome [MAX], int peso, int a l t e z z a ){ /* Creazione nuova persona da inserire in lista */ 73 Persona temp ; 74 Persona p = malloc ( sizeof ( Persona ) ) ; 75 p >peso = peso ; 76 p >a l t e z z a = a l t e z z a ; 77 s t r c p y (p >nome, nome ) ; /* Ricerca della prima persona con peso maggiore di 80 quello dato come parametro */ 81 for ( temp = l i s t a ; 82 temp >n e x t p e s o!= NULL && temp >next peso >peso < peso ; 83 temp = temp >n e x t p e s o ) ; /* Inserimento nuovo elemento in lista */ 86 p > n e x t p e s o = temp >n e x t p e s o ; 87 temp >n e x t p e s o = p ; /* Ricerca della prima persona con altezza maggiore di 90 quello dato come parametro */ 91 for ( temp = l i s t a ; 92 temp >n e x t a l t e z z a!=null && 93 temp >n e x t a l t e z z a >a l t e z z a <a l t e z z a ; 94 temp = temp >n e x t a l t e z z a ) ; /* Inserimento nuovo elemento in lista */ 97 p >n e x t a l t e z z a = temp >n e x t a l t e z z a ; 98 temp >n e x t a l t e z z a = p ; 99 } int main ( ) { L i s t a l i s t a ; 104 c r e 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, "Mario Rossi",70, ) ; 107 i n s e r i s c i (& l i s t a, " Filippo Bianchi ",50, ) ; 108 i n s e r i s c i (& l i s t a, "Giulia Verdi",60, ) ; p r i n t f ( "Stampa in ordine di peso\n" ) ; 111 s t a m p a l i s t a p e s o ( l i s t a ) ; 112 p r i n t f ( "Stampa in ordine di altezza \n" ) ; 113 s t a m p a l i s t a a l t e z z a ( l i s t a ) ; }

5 3. Definire le strutture dati e le funzioni richieste per una lista di interi che puo anche contenere elementi ripetuti. Gli inserimenti nella lista sono sempre inseriti mantenendo la lista ordinata dal piu piccolo al piu grande. Ogni elemento della lista deve poter conoscere il prossimo elemento, il primo elemento pari e il primo numero primo che lo seguono nella lista, se esistono. 1 #include <s t d l i b. h> typedef enum {FALSE = 0, TRUE} bool ; /* Definisco la struttura elemento */ 9 10 typedef struct EL{ 11 int v a l o r e ; 12 struct EL next ; 13 struct EL p a r i ; 14 struct EL primo ; 15 } Elemento ; typedef Elemento L i s t a ; void c r e a l i s t a ( L i s t a l i s t a ){ 21 l i s t a = NULL; 22 } /* Stampa della lista: 25 il successivo pari e primo sono 26 stampati solo se esistono 27 */ void s t a m p a l i s t a ( L i s t a l i s t a ){ 30 if ( l i s t a!=null){ 31 p r i n t f ( " Elemento %d", l i s t a >v a l o r e ) ; 32 if ( l i s t a >p a r i!=null){ 33 p r i n t f ( " - Prossimo pari %d", 34 l i s t a >pari >v a l o r e ) ; 35 } 36 if ( l i s t a >primo!=null){ 37 p r i n t f ( " - Prossimo primo %d", 38 l i s t a >primo >v a l o r e ) ; 39 } 40 p r i n t f ( "\n" ) ; 41 s t a m p a l i s t a ( l i s t a >next ) ; 42 } 43 } /* 46 Definisco due funzioni di supporto : 47 - una per sapere se un numero e pari 48 - una per sapere se un numero e primo 49 */ 50 bool num primo ( int n ){ 51 int i ; 52 if (n<=1){ 53 return FALSE;

6 54 } 55 for ( i =2; i <n ; i ++){ 56 if ( n%i ==0){ 57 return FALSE; 58 } 59 } 60 return TRUE; 61 } bool num pari ( int n ){ return n%2==0; 66 } 67 /* 68 Inserimento : ad ogni inserimento dobbiamo anche trovare il prossimo 69 pari ed il prossimo primo in lista 70 */ 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 ){ 73 L i s t a temp ; /* Dichiaro un puntatore temporaneo che mi 74 servira da indice per scorrere la lista 75 */ 76 /* creo l elemento */ 77 Elemento e l = malloc ( sizeof ( Elemento ) ) ; 78 el >v a l o r e = v a l o r e ; /* 81 Controllo se valore e pari o primo: 82 se lo devo aggiornare gli elementi 83 che lo precedono 84 */ 85 bool p a r i = num pari ( v a l o r e ) ; 86 bool primo = num primo ( v a l o r e ) ; /* 89 cerco all interno della lista il puntatore 90 all elemento che in lista seguira el 91 */ 92 for ( temp =l i s t a ; 93 temp!=null &&( temp) >v a l o r e < v a l o r e ; 94 temp = &(( temp) >next ) ) { /* 97 Mentre scorro ogni elemento della lista, 98 controllo se devo aggiornare i loro 99 puntatori al successivo pari e 100 successivo primo 101 */ 102 if ( p a r i && ( ( temp) >p a r i == NULL 103 ( temp) >pari >v a l o r e >= v a l o r e ) ) { 104 ( temp) >p a r i = e l ; 105 } 106 if ( primo && ( ( temp) >primo == NULL 107 ( temp) >primo >v a l o r e >= v a l o r e ) ) { 108 ( temp) >primo = e l ; 109 } }/* end for */ 112 /*

7 113 el prende l elemento puntato da temp 114 come elemento successivo 115 */ 116 e l >next = temp ; /* 120 Aggiorno i puntatori al successivo pari e primo di el: 121 se il successivo e pari o primo allora, puntano 122 al successivo altrimenti i puntatori puntano allo 123 stesso elemento puntato dal successivo 124 */ 125 if ( temp == NULL num pari ( ( temp) >v a l o r e ) ) { 126 el >p a r i = temp ; 127 } 128 else{ 129 el >p a r i = ( temp) >p a r i ; 130 } if ( temp == NULL num primo ( ( temp) >v a l o r e ) ) { 133 e l >primo = temp ; 134 } 135 else{ 136 e l >primo = ( temp) >primo ; 137 } /* Aggiorno il puntatore dell elemento che precede el 140 in lista 141 */ 142 temp = e l ; /* N.B. a questo punto 145 l indirizzo puntato da temp 146 corrisponde a quello puntato 147 dal next dell elemento precedente a el 148 nella lista 149 */ 150 } 151 int main ( ) { L i s t a l i s t a ; 154 c r e a l i s t a (& l i s t a ) ; 155 i n s e r i s c i (& l i s t a, 2 ) ; 156 i n s e r i s c i (& l i s t a, 1 ) ; 157 i n s e r i s c i (& l i s t a, 3 ) ; 158 i n s e r i s c i (& l i s t a, 2 ) ; 159 i n s e r i s c i (& l i s t a, 5 ) ; 160 i n s e r i s c i (& l i s t a, 4 ) ; s t a m p a l i s t a ( l i s t a ) ; 163 } 4. Creare una lista di interi in cui ogni elemento abbia un puntatore all ultimo elemento della lista (anche l ultimo elemento). Ogni nuovo elemento é inserito alla fine della lista. 1 #include <s t d l i b. h> 2 3 /*

8 4 Ogni elemento della lista ha un 5 puntatore all ultimo elemento 6 */ 7 8 typedef struct EL{ 9 int v a l o r e ; 10 struct EL next ; /* successivo */ 11 struct EL l a s t ; /* ultimo */ 12 } Elemento ; typedef Elemento L i s t a ; /* 19 La creazione della lista e la 20 stampa non sono influenzate dal 21 puntatore aggiuntivo e sono 22 identiche alle funzioni 23 per la creazione e stampa di tutte 24 le altre liste viste finora 25 */ void c r e a l i s t a ( L i s t a l i s t a ){ 28 l i s t a = NULL; 29 } void stampa ( L i s t a l i s t a ){ 32 if ( l i s t a!=null){ 33 p r i n t f ( "%d ", l i s t a >v a l o r e ) ; 34 stampa ( l i s t a >next ) ; 35 } 36 else{ 37 p r i n t f ( "\n" ) ; 38 /* 39 stampo \n quando 40 la lista termina 41 */ 42 } /* 45 stampa dell ultimo elemento : 46 N.B.-> dato che ogni elemento ha 47 un puntatore all ultimo, 48 basta accedere al primo 49 elemento della lista e risalire 50 da quello al valore dell ultimo 51 elemento 52 */ 53 } 54 void stampa ultimo ( L i s t a l i s t a ){ 55 if ( l i s t a!=null){ 56 p r i n t f ( "Ultimo elemento : %d\n", l i s t a >l a s t >v a l o r e ) ; 57 } 58 else{ 59 p r i n t f ( "La lista e vuota\n" ) ; 60 } 61 } 62

9 63 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 ){ 64 /* 65 L inserimento avviene quando si 66 raggiunge il termine della lista 67 */ 68 if ( l i s t a==null){ 69 Elemento e = malloc ( sizeof ( Elemento ) ) ; 70 e >v a l o r e = v a l o r e ; 71 e >next = NULL; 72 e >l a s t = e ; 73 l i s t a = e ; 74 } 75 else{ 76 i n s e r i s c i (&(( l i s t a ) >next ), v a l o r e ) ; 77 /* 78 Al termine della chiamata ricorsiva 79 si puo copiare il valore del puntatore 80 all ultimo elemento dell elemento successivo 81 */ 82 ( l i s t a ) > l a s t = ( l i s t a ) >next >l a s t ; 83 } 84 } int main ( ) { 87 L i s t a l i s t a ; 88 c r e a l i s t a (& l i s t a ) ; 89 stampa ultimo ( l i s t a ) ; 90 i n s e r i s c i (& l i s t a, 1 ) ; 91 stampa ultimo ( l i s t a ) ; 92 i n s e r i s c i (& l i s t a, 4 ) ; 93 stampa ultimo ( l i s t a ) ; 94 i n s e r i s c i (& l i s t a, 5 ) ; 95 stampa ultimo ( l i s t a ) ; 96 i n s e r i s c i (& l i s t a, 2 ) ; 97 stampa ultimo ( l i s t a ) ; stampa ( l i s t a ) ; 100 } Esercizi sulla gestione dei file in C Il codice di questi esercizi é contenuto nella cartella parte2 1. Scrivere il codice C che: Legge un intero n Legge n stringhe di testo salva le stringhe piu lunghe di 5 caratteri in un file long.txt e quelle piu corte in un file short.txt 1 #include <s t r i n g. h> 2 #include <s t d l i b. h> 3 4 #d e f i n e MAX int main ( ) {

10 7 8 FILE f s h o r t, f l o n g ; 9 int n, i ; 10 char s t r i n g a [MAX] ; 11 s c a n f ( "%d",&n ) ; /* Leggo il numero di stringhe da leggere */ /* creo entrambi i file in scrittura */ 14 if ( ( f s h o r t = fopen ( "short.txt", "w"))==null){ 15 puts ( " Errore nella creazione del file short. txt" ) ; 16 e x i t ( 1 ) ; 17 /* exit effettua il termine normale del programma 18 contenuta in stdlib.h 19 */ 20 } if ( ( f l o n g = fopen ( "long.txt", "w"))==null){ 23 puts ( " Errore nella creazione del file long. txt" ) ; 24 e x i t ( 1 ) ; 25 } for ( i =0; i <n ; i ++){ 28 s c a n f ( "%s", s t r i n g a ) ; /* Leggo una stringa */ 29 if ( s t r l e n ( s t r i n g a ) >5){ /* strlen mi da la lunghezza 30 della stringa */ 31 f p r i n t f ( f l o n g, "%s\n", s t r i n g a ) ; 32 } 33 else{ 34 f p r i n t f ( f s h o r t, "%s\n", s t r i n g a ) ; 35 } 36 } /* Chiudiamo lo stream ai due file */ 39 f c l o s e ( f s h o r t ) ; 40 f c l o s e ( f l o n g ) ; } 2. Scrivere una funzione C che prende come parametro un file e stampa a video tutte le sue righe dall ultima alla prima. Ogni riga e lunga non piu di 120 caratteri. Soluzione: 1 #include <s t d l i b. h> 2 #d e f i n e MAX READ /* funzione ricorsiva */ void c o n t r a r i o ( FILE f i l e ){ 9 10 if (! f e o f ( f i l e ) ) { /* feof(file * stream) testa il flag end -of -file 11 per lo stream stream. 12 */ 13 char s t r i n g a [MAX READ] ; 14 f g e t s ( s t r i n g a,max READ, f i l e ) ; /*

11 17 char * fgets( char *s, int size, FILE * stream ); 18 legge una linea dallo stream immagazzinandola 19 nel buffer puntato da s Sono letti al piu ( size - 1) caratteri, 22 oppure fino al raggiungimento del carattere 23 di new - line \n o di EOF 24 */ /* Chiamata ricorsiva 27 N.B. ogni volta che effettuiamo la 28 lettura il puntatore a file 29 viene spostato avanti di MAX_READ caratteri 30 nel nostro caso leggiamo una riga per volta 31 dato che non abbiamo righe con piu di caratteri 33 */ 34 c o n t r a r i o ( f i l e ) ; /* al termine della chiamata ricorsiva stampiamo la 37 riga letta 38 N.B. siccome la printf e dopo la chiamata ricorsiva 39 inizieremo a stampare dalla fine del file 40 */ 41 p r i n t f ( "%s", s t r i n g a ) ; } } int main ( ) { 48 FILE f i l e ; if ( ( f i l e = fopen ( "ex2.c", "r" ) ) == NULL){ 51 puts ( " Non e possibile aprire il file" ) ; 52 e x i t ( 1 ) ; 53 } 54 rewind ( f i l e ) ; /* ci riposizioniamo 55 all inizio del 56 file per 57 sicurezza 58 */ 59 c o n t r a r i o ( f i l e ) ; 60 f c l o s e ( f i l e ) ; 61 }

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. 7 20/11/2018

Esercitazioni 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

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018 Esercitazioni di Fondamenti di Informatica - Lez. 9 /1/018 Esercizi sulla gestione dei file in C Il codice degli esercizi e contenuto nella cartella parte1 1. Creare una funzione C che legga tutto cio

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

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

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

#include <stdio.h> #include <stdlib.h> //necessaria per la malloc #include <string.h> // costante #define MAX_L 30

#include <stdio.h> #include <stdlib.h> //necessaria per la malloc #include <string.h> // costante #define MAX_L 30 /* Dopo aver definito una lista in grado di contenere i dati di alcune persone (nome, genere e altezza in metri), scrivere un programma che consenta di verificare che inizialmente la lista sia vuota e

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

Fondamenti di Informatica

Fondamenti di Informatica Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste

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

Esercitazione n. 7. Gestione dei file (seconda parte)

Esercitazione n. 7. Gestione dei file (seconda parte) Esercitazione n. 7 Gestione dei file (seconda parte) dott. Carlo Todeschini tode@cremona.polimi.it Politecnico di Milano A.A. 2010/2011 Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non

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

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

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

Fondamenti di Informatica L-A

Fondamenti di Informatica L-A Fondamenti di Informatica L-A Esercitazione del 23/11/07 Ing. Giorgio Villani Ripasso Teoria Funzioni ricorsive 2 fatt(2) 1 2*fatt(1) fatt(1) 1 2*1 1*fatt(0) fatt(0) 1*1 caso base fatt(0)=1 Esercizio 1

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

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

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su

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

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

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

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE Scrivere in stampatello COGNOME, NOME e MATRICOLA su ogni foglio consegnato N.B.: In tutti gli esercizi viene valutata anche

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

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

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

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

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

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

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

Dispensa 18 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratori

Dispensa 18 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratori ORSO I LURE IN INGEGNERI E SIENZE INFORMTIHE ESEN ORSO I PROGRMMZIONE.. 2016-17 ispensa 18 Laboratori ott. Mirko Ravaioli e-mail: mirko.ravaioli@unibo.it http://www.programmazione.info orso di Programmazione..

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 Obiettivo di questa esercitazione Allocazione dinamica della memoria ed esempi di problemi tipici d esame 2 Esercizio 1 Una ditta utilizza un sistema informatico

Dettagli

Rappresentazione di sequenze...

Rappresentazione 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

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

Introduzione. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p

Introduzione. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p Introduzione Liste DD p. 449-474 KP p.397-424 Abbiamo fin ora studiato strutture dati con dimensione fissa: vettori e matrici strutture Introduciamo ora le strutture dati dinamiche (liste concatenate):

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

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli

Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli Esercizi per la manipolazione di insiemi (rappresentati tramite liste) Insiemi.c /*Questo file include i prototipi e le definizioni di specifiche

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

Fondamenti di Informatica II

Fondamenti 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

Dettagli

Esercitazione 12. Esercizi di Ricapitolazione

Esercitazione 12. Esercizi di Ricapitolazione Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,

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

Input/Output su File

Input/Output su File Input/Output su File Premessa importante Queste dispense si intendono unicamente come riferimento rapido per consultare il significato e I prototipi delle funzioni per l'accesso ai file. Per avere esempi

Dettagli

La programmazione nel linguaggio C

La programmazione nel linguaggio C Cancellazione : versione ricorsiva Sfruttiamo la visione ricorsiva della struttura dati per realizzare la cancellazione in modo ricorsivo 1. la cancellazione della vuota non richiede alcuna azione 2. la

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

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

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

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

INFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE

INFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE INFORMATICA - CdL in FISICA COMITO del 28/5/23 SOLUZIONI ROOSTE ESERCIZIO 1 Indicare i valori stampati dal seguente programma C. #include main() int *p, **q, x=, y=; p = &x; q = &p; *q = &y;

Dettagli

Gestione dei File. Credits Prof. Campi

Gestione dei File. Credits Prof. Campi Gestione dei File Credits Prof. Campi 1 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi Si usano dall'interno dei programmi Realizzano la persistenza dei dati cioè

Dettagli

PILE E CODE. Pile (stack):

PILE E CODE. Pile (stack): PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):

Dettagli

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Fondamenti di Informatica II prova in itinere 25 gennaio 2011 Matricola Cognome Nome Durata prova: 2 ore Istruzioni

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

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine)

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine) La copia di un file Nell'esercizio di oggi cerchiamo di implementare un programma che permetta di effettuare la copia di un file di testo. L'operazione di copia, oltre a permettere di creare un nuovo file

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

Gestione dei file. File di testo e binari

Gestione dei file. File di testo e binari Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile

Dettagli

Nella propria home directory creare una sottodirectory chiamata es08, in cui metteremo tutti i file C di oggi.

Nella propria home directory creare una sottodirectory chiamata es08, in cui metteremo tutti i file C di oggi. Laboratorio 8 Nella propria home directory creare una sottodirectory chiamata es08, in cui metteremo tutti i file C di oggi. Note Quando dovete usare o ritornare dei valori booleani, usate la seguente

Dettagli

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica

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

Dettagli

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; };

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; }; /* Programma 12cppEse1.cpp Autore : Riontino Raffaele 4 informatici ITIS Molinari - Milano corso serale 2/11/2010 Testo : Si vuole realizzare un tipo struct, utilizzato per informazioni su biglietti per

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

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

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

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

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

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

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Esercizio 1 (punti 3) Sia data la funzione ricorsiva seguente: void elabora (unsigned

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

e e n-1 Esercizio 1.2 (Punti 8; punti 10 se risolto facendo uso della ricorsione)

e e n-1 Esercizio 1.2 (Punti 8; punti 10 se risolto facendo uso della ricorsione) Informatica 1 Seconda prova 31 Gennaio 2006 Esercizio 1 (Punti Una lista bidirezionale è una lista in cui ogni elemento è collegato, mediante puntatori, all elemento seguente e a quello precedente; alla

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

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib.

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib. /* ATTENZIONE: non accedere mai ai campi di un elemento della lista prima di essersi accertati che tale elemento sia diverso da NULL; Si osservi che la condizione booleana (*lista == NULL (*lista)->info

Dettagli

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) { JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int

Dettagli

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30' Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit2A.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio

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

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L

Dettagli

Inserimento di un elemento in coda. quale va collegato quello nuovo. ultimo. *lista 8 3. aux. ultimo. *lista 8 3. aux

Inserimento di un elemento in coda. quale va collegato quello nuovo. ultimo. *lista 8 3. aux. ultimo. *lista 8 3. aux Inserimento di un elemento in coda Se la è vuota coincide con l inserimento in testa = è necessario il passaggio per indirizzo! Se la non è vuota, bisogna scandirla fino in fondo = dobbiamo usare un puntatore

Dettagli

PUNTATORI. Ivan Lanese

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

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

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

Esercizi su strutture dati

Esercizi su strutture dati Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate

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

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 27 Giugno 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

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

IMPLEMENTAZIONE CONCATENATE DELLE LISTE

IMPLEMENTAZIONE 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

Dettagli

Tipi astratti pila e coda

Tipi astratti pila e coda Tipi astratti pila e coda Una pila è un tipo astratto che consente di rappresentare un insieme di elementi in cui ogni eliminazione ha per oggetto l elemento che è stato inserito per ultimo. Questa disciplina

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 19 luglio 2013 (turno 1) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

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

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

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

Gestione dinamica di una coda

Gestione dinamica di una coda Gestione dinamica di una coda Una coda o queue è una lista lineare a lunghezza variabile in cui l'inserimento di nuovi elementi (push) viene effettuato ad un estremo (fondo o rear) e l'estrazione degli

Dettagli

LE STRUTTURE DATI DINAMICHE

LE STRUTTURE DATI DINAMICHE LE TRUTTURE DTI DIMICHE Talvolta è necessario allocare spazio di memoria durante l esecuzione di un programma oppure creare variabili di durata temporanea. Esempio: Leggere e memorizzare dei numeri interi

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

Cognome Domanda Nome Punteggio max

Cognome Domanda Nome Punteggio max Fondamenti di Informatica - Proff. C. Bolchini, E. Di Nitto, F. Distante Corso di laurea in Ingegneria Meccanica e Aerospaziale Appello del 18 giugno 2002 Cognome Domanda 1 2 3 4 5 Nome Punteggio max 5

Dettagli

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ESERCIZIO n.1 È dato un file di testo che contiene l'elenco dei vestiti presenti in un negozio. Il file contiene al massimo

Dettagli