Informatica B Esercitazione 6

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Informatica B Esercitazione 6"

Transcript

1 Informatica B Esercitazione 6 18 ottobre 2018 Struct, typedef, enum 6.1 Si scriva un programma C per gestire una rubrica telefonica. Un contatto della rubrica è composto da un nome di persona e dal rispettivo numero di telefono. Il programma permette di inserire quattro contatti. Una volta che l'inserimento è terminato, il programma permette di cercare un contatto per nome. Se il nome inserito da tastiera è memorizzato nella rubrica, stampa il numero corrispondente, altrimenti stampa "Non trovato". In ogni caso, permette di cercare un altro contatto. In questa soluzione, dichiariamo le variabili struct direttamente nel main. Potremmo anche usare typedef, come nell'esercizio 6.2, per denire un tipo stringa_t e un tipo contatto_t. Altri possibili miglioramenti (lasciati per esercizio) sono: Usare una stringa anche per il numero di telefono (per gestire numeri molto lunghi e zeri iniziali). Permettere l'inserimento di un numero arbitrario di contatti (ssando solo il massimo). Permettere all'utente di passare dalla fase di ricerca a quella di inserimento, e viceversa, ogni volta che lo desidera. Permettere all'utente di eliminare dei contatti. Gestire nomi ripetuti. 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e <s t r i n g. h> /* 6 Es Rubrica telefonica 1

2 8 */ 9 10 #d e f i n e NUM_CONTATTI 4 11 #d e f i n e MAX_LEN int main ( ) 14 { struct { 17 char nome [MAX_LEN] ; // il primo campo e' una stringa 18 long int numero ; // il secondo campo e' un numero 19 } c o n t a t t i [NUM_CONTATTI] ; // array di struct int i, t r o v a t o ; 22 char nome_in [MAX_LEN] ; p r i n t f ( " INSERIMENTO \n" ) ; 26 for ( i =0; i <NUM_CONTATTI; i ++) 27 { 28 p r i n t f ( "\ ninserisci nome\n" ) ; 29 g e t s ( c o n t a t t i [ i ]. nome ) ; 30 p r i n t f ( " Insersci numero \n" ) ; 31 s c a n f ( "%ld", &( c o n t a t t i [ i ]. numero ) ) ; 32 s c a n f ( "%*c" ) ; // consuma newline (per gets successiva ) 33 } p r i n t f ( "\ nricerca \n" ) ; 36 while ( 1 ) 37 { 38 p r i n t f ( "\ ninserisci nome da cercare \n" ) ; 39 g e t s ( nome_in ) ; t r o v a t o =0; 42 for ( i =0; i <NUM_CONTATTI; i ++) 43 { 44 i f ( strcmp ( nome_in, c o n t a t t i [ i ]. nome)==0) 45 { 46 p r i n t f ( "Il suo numero e' %ld\n", c o n t a t t i [ i ]. numero ) ; 47 t r o v a t o = 1 ; 48 break ; 49 } 50 } 51 i f (! t r o v a t o ) 52 { 53 p r i n t f ( "Non trovato!\n" ) ; 2

3 54 } 55 } 56 } 3

4 6.2 Utilizzando il C, denire le strutture dati necesssarie per la gestione di un aeroporto: L'aeroporto ha associato un nome (massimo 20 caratteri), un elenco di terminal (massimo 5) e il numero eettivo di terminal. Ciascun terminal ha associato un numero identicativo, un elenco di piste (massimo 10) e il numero eettivo di piste. Ciascuna pista ha associato un numero identicativo, uno stato (libera o impegnata), l'aereo che la sta eventualmente impegnando (per un decollo o un atterraggio), una lista di aerei in coda per il decollo (massimo 3, eventualmente vuota) e il numero di aerei eettivamente in coda. Ciascun aereo ha associato un codice identicativo del velivolo e uno stato (attesa, decollo o atterraggio). Scrivere un frammento di codice C che inizializza un aeroporto in questo modo: l'aeroporto si chiama "Malpensa" e ha 2 terminal (numerati 1,2). Ogni terminal ha 5 piste (numerate globalmente da 1 a 10), tutte libere, senza aerei in coda per decollare. Di fronte ad un esercizio di questa complessità, è importante fare le cose con ordine. Prima deniamo tutti i tipi necessari, poi scriviamo il codice che li utilizza. Nel denire i tipi, seguiamo l'approccio "bottom-up": deniamo prima i tipi più semplici. 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e <s t r i n g. h> 3 4 /* 5 Es Aeroporto 7 */ 8 9 #d e f i n e MAX_LEN_NOME #d e f i n e MAX_LEN_CODA 3 11 #d e f i n e MAX_PISTE #d e f i n e MAX_TERMINAL // Definizione tipi 15 // Stato aereo 16 typedef enum { a t t e s a, d e c o l l o, a t t e r r a g g i o } stato_aereo_t ; 17 // Stato pista 18 typedef enum { l i b e r a, impegnata } stato_pista_t ; 19 // Nome (e.g. " Malpensa ") 20 typedef char nome_t [MAX_LEN_NOME] ; 21 // Aereo 4

5 22 typedef struct { 23 int i d ; 24 stato_aereo_t s t a t o ; 25 } aereo_ t ; 26 // Pista 27 typedef struct { 28 int i d ; 29 stato_pista_t s t a t o ; 30 aereo_t a e r e o ; 31 aereo_ t coda [MAX_LEN_CODA] ; 32 int len_coda ; 33 } p ista_t ; 34 // Terminal 35 typedef struct { 36 int i d ; 37 p ista_t p i s t e [MAX_PISTE ] ; 38 int num_piste ; 39 } terminal_t ; typedef struct { 42 nome_t nome ; 43 int num_terminal ; 44 terminal_t t e r m i n a l [MAX_TERMINAL] ; 45 } aeroporto_t ; int main ( ) 49 { 50 // Dichiarazione variabili 51 aeroporto_t a e r o p o r t o ; 52 /* La dichiarazione qui sopra prepara la memoria necessaria 53 per un aeroporto delle massime dimensioni possibili : 5 terminal e piste per terminal */ 55 int i, j ; 56 int k = 1 ; // contatore globale piste // Inizializzazione 59 // campi di aeroporto_t 60 s t r c p y ( a e r o p o r t o. nome, " Malpensa " ) ; 61 /* L' assegnamento a stringa e' consentito solo in fase 62 di dichiarazione. In ogni altro caso e' necessario 63 usare strcpy o un ciclo.*/ 64 a e r o p o r t o. num_terminal = 2 ; for ( i =0; i <a e r o p o r t o. num_terminal ; i ++) 67 { 5

6 68 // campi di terminal_t 69 a e r o p o r t o. t e r m i n a l [ i ]. i d = i +1; 70 a e r o p o r t o. t e r m i n a l [ i ]. num_piste = 5 ; for ( j =0; j<a e r o p o r t o. t e r m i n a l [ i ]. num_piste ; j++) 73 { 74 // campi di pista_t 75 a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. i d = k ; 76 k++; 77 a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. s t a t o = l i b e r a ; 78 a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. len_coda = 0 ; 79 } 80 } return 0 ; 83 } 6

7 6.3 Assumere che l'aeroporto "Malpensa" denito nell'es. 6.2 si trovi ora in uno stato qualsiasi (ottenuto, ad esempio, tramite inserimento di ulteriori dati). Questo signica che potrebbero esserci delle piste impegnate e degli aerei in attesa di decollare. 1. Scrivere un frammento di codice C che, dato l'identicativo di un aereo in volo e un numero di terminal, seleziona una pista per l'atterraggio. La pista deve appartenere al terminal specicato, deve essere libera e non deve avere aerei in attesa di decollare. Se queste condizioni sono rispettate, la pista viene impegnata dall'aereo per l'atterraggio. Inserire/modicare tutti i dati rilevanti. 1 int id_aereo, id_terminal ; // dati di input 2 int s u c c e s s o ; // flag 3 pista_t p i s t a ; // variabile temporanea 4 5 p r i n t f ( " Inserire codice aereo per atterraggio \n" ) ; 6 s c a n f ( "%d", &id_aereo ) ; 7 p r i n t f ( " Inserire terminal \n" ) ; 8 s c a n f ( "%d", &id_terminal ) ; 9 10 for ( i =0; i <a e r o p o r t o. t e r m i n a l [ id_terminal 1]. num_piste ; i ++) 11 { 12 // creiamo una copia della pista corrente 13 p i s t a = a e r o p o r t o. t e r m i n a l [ id_terminal 1]. p i s t e [ i ] ; 14 i f ( p i s t a. s t a t o==l i b e r a && p i s t a. len_coda==0) 15 { 16 s u c c e s s o = 1 ; 17 p r i n t f ( " Aereo %d atterra su pista %d\n", id_aereo, p i s t a. i d ) ; 18 p i s t a. a e r e o. i d = id_aereo ; 19 p i s t a. a e r e o. s t a t o = a t t e r r a g g i o ; 20 p i s t a. s t a t o = impegnata ; 21 // abbiamo modificato la copia! 22 // ora aggiorniamo l' originale : 23 a e r o p o r t o. t e r m i n a l [ id_terminal 1]. p i s t e [ i ] = p i s t a ; 24 break ; 25 } } 28 i f (! s u c c e s s o ) 29 { 30 p r i n t f ( "Non ci sono piste libere in questo terminal!\n" ) ; 31 } 2. Scrivere un frammento di codice C che, dato l'identicativo di un aereo in fase di decollo: 7

8 Ricerca l'aereo nel sistema e verica che abbia eettivamente lo stato 'decollo', altrimenti stampa un errore; Se non ci sono aerei in attesa sulla pista corrispondente, la pista diventa libera. Altrimenti, la pista viene impegnata dall'aereo che occupa la prima posizione della coda di attesa. Modicare opportunamente la coda di attesa e tutti i dati rilevanti. 1 int id_aereo ; // dati di input 2 int s u c c e s s o ; // flag 3 pista_t p i s t a ; // variabile temporanea 4 5 p r i n t f ( " Inserire codice aereo per decollo \n" ) ; 6 s c a n f ( "%d", &id_aereo ) ; 7 8 for ( i =0; i <a e r o p o r t o. num_terminal ; i ++) 9 { 10 for ( j =0; j<a e r o p o r t o. t e r m i n a l [ i ]. num_piste ; j++) 11 { 12 // copia 13 p i s t a = a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ] ; 14 i f ( p i s t a. s t a t o==impegnata && p i s t a. a e r e o. i d==id_aereo ) 15 { 16 s u c c e s s o = 1 ; 17 p r i n t f ( " Aereo %d decolla da pista %d\n", id_aereo, p i s t a. i d ) ; 18 i f ( p i s t a. len_coda==0) 19 { 20 p i s t a. s t a t o = l i b e r a ; 21 } 22 else { 23 // almeno un aereo in coda 24 // promuovi primo aereo della coda 25 p i s t a. a e r e o = p i s t a. coda [ 0 ] ; 26 p i s t a. a e r e o. s t a t o = d e c o l l o ; 27 // aggiorna coda 28 for ( k=1;k<p i s t a. len_coda ; k++) 29 { 30 p i s t a. coda [ k 1] = p i s t a. coda [ k ] ; 31 } 32 p i s t a. len_coda ; } // aggiorna originale 37 a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ] = p i s t a ; 38 break ; 39 } 8

9 40 } 41 } i f (! s u c c e s s o ) 44 { 45 p r i n t f ( " Aereo non trovato!\n" ) ; 46 } Le soluzioni fornite sono solo frammenti di codice: danno per scontato il codice scritto nell'esercizio 6.2 e non sono compilabili. Segue un possibile programma "completo" (non richiesto) che mostra il codice in azione. Aggiungiamo anche delle istruzioni che portano l'aeroporto in uno stato più interessante e stampano lo stato nale dell'aeroporto. 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e <s t r i n g. h> 3 4 /* 5 Es Aeroporto 7 */ 8 9 #d e f i n e MAX_LEN_NOME #d e f i n e MAX_LEN_CODA 3 11 #d e f i n e MAX_PISTE #d e f i n e MAX_TERMINAL typedef enum { a t t e s a, d e c o l l o, a t t e r r a g g i o } stato_aereo_t ; typedef enum { l i b e r a, impegnata } stato_pista_t ; typedef char nome_t [MAX_LEN_NOME] ; typedef struct { 21 int i d ; 22 stato_aereo_t s t a t o ; 23 } aereo_ t ; typedef struct { 26 int i d ; 27 stato_pista_t s t a t o ; 28 aereo_t a e r e o ; 29 aereo_ t coda [MAX_LEN_CODA] ; 30 int len_coda ; 31 } p ista_t ; 32 9

10 33 typedef struct { 34 int i d ; 35 p ista_t p i s t e [MAX_PISTE ] ; 36 int num_piste ; 37 } terminal_t ; typedef struct { 40 nome_t nome ; 41 int num_terminal ; 42 terminal_t t e r m i n a l [MAX_TERMINAL] ; 43 } aeroporto_t ; int main ( ) 47 { 48 p r i n t f ( " AEROPORTO \n" ) ; 49 aeroporto_t a e r o p o r t o ; 50 int i, j ; 51 int k = 1 ; // contatore globale piste 52 int id_aereo, id_terminal ; // dati di input 53 int s u c c e s s o ; // flag 54 pista_t p i s t a ; // variabile temporanea 55 int id_temp ; // Inizializzazione 58 s t r c p y ( a e r o p o r t o. nome, " Malpensa " ) ; 59 a e r o p o r t o. num_terminal = 2 ; for ( i =0; i <a e r o p o r t o. num_terminal ; i ++) 62 { 63 a e r o p o r t o. t e r m i n a l [ i ]. i d = i +1; 64 a e r o p o r t o. t e r m i n a l [ i ]. num_piste = 5 ; for ( j =0; j<a e r o p o r t o. t e r m i n a l [ i ]. num_piste ; j++) 67 { 68 a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. i d = k ; 69 k++; 70 a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. s t a t o = l i b e r a ; 71 a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. len_coda = 0 ; 72 } 73 } // Portiamo l' aeroporto in uno stato piu ' interessante 76 // La pista 1 ha un aereo in fase di decollo 77 a e r o p o r t o. t e r m i n a l [ 0 ]. p i s t e [ 0 ]. s t a t o = impegnata ; 78 a e r o p o r t o. t e r m i n a l [ 0 ]. p i s t e [ 0 ]. a e r e o = ( aereo_t ) { 5 1 2, d e c o l l o } ; 10

11 79 // La pista 2 ha un aereo in fase di decollo e due aerei in attesa 80 a e r o p o r t o. t e r m i n a l [ 0 ]. p i s t e [ 1 ]. s t a t o = impegnata ; 81 a e r o p o r t o. t e r m i n a l [ 0 ]. p i s t e [ 1 ]. a e r e o = ( aereo_t ) { 9 8 2, d e c o l l o } ; 82 a e r o p o r t o. t e r m i n a l [ 0 ]. p i s t e [ 1 ]. len_coda = 2 ; 83 a e r o p o r t o. t e r m i n a l [ 0 ]. p i s t e [ 1 ]. coda [ 0 ] = ( aereo_t ) { 8 8 8, a t t e s a } ; 84 a e r o p o r t o. t e r m i n a l [ 0 ]. p i s t e [ 1 ]. coda [ 1 ] = ( aereo_t ) { 3 4 1, a t t e s a } ; // 6.3.1: atterraggio ( provare a inserire 123, 1) p r i n t f ( "\ natterraggio \n" ) ; 88 p r i n t f ( " Inserire codice aereo per atterraggio \n" ) ; 89 s c a n f ( "%d", &id_aereo ) ; 90 p r i n t f ( " Inserire terminal \n" ) ; 91 s c a n f ( "%d", &id_terminal ) ; for ( i =0; i <a e r o p o r t o. t e r m i n a l [ id_terminal 1]. num_piste ; i ++) 94 { 95 p i s t a = a e r o p o r t o. t e r m i n a l [ id_terminal 1]. p i s t e [ i ] ; 96 i f ( p i s t a. s t a t o==l i b e r a && p i s t a. len_coda==0) 97 { 98 s u c c e s s o = 1 ; 99 p r i n t f ( " Aereo %d atterra su pista %d\n", id_aereo, p i s t a. i d ) ; 100 p i s t a. a e r e o. i d = id_aereo ; 101 p i s t a. a e r e o. s t a t o = a t t e r r a g g i o ; 102 p i s t a. s t a t o = impegnata ; 103 a e r o p o r t o. t e r m i n a l [ id_terminal 1]. p i s t e [ i ] = p i s t a ; 104 break ; 105 } } 108 i f (! s u c c e s s o ) 109 { 110 p r i n t f ( "Non ci sono piste libere in questo terminal!\n" ) ; 111 } 112 // // 6.3.1: decollo ( provare a inserire 512 o 982) p r i n t f ( "\ ndecollo \n" ) ; 116 s u c c e s s o = 0 ; 117 p r i n t f ( " Inserire codice aereo per decollo \n" ) ; 118 s c a n f ( "%d", &id_aereo ) ; for ( i =0; i <a e r o p o r t o. num_terminal ; i ++) 121 { 122 for ( j =0; j<a e r o p o r t o. t e r m i n a l [ i ]. num_piste ; j++) 123 { 124 p i s t a = a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ] ; 11

12 125 i f ( p i s t a. s t a t o==impegnata && p i s t a. a e r e o. i d==id_aereo ) 126 { 127 s u c c e s s o = 1 ; 128 p r i n t f ( " Aereo %d decolla da pista %d\n", id_aereo, p i s t a. i d ) ; 129 i f ( p i s t a. len_coda==0) 130 { 131 p i s t a. s t a t o = l i b e r a ; 132 } 133 else { 134 p i s t a. a e r e o = p i s t a. coda [ 0 ] ; 135 p i s t a. a e r e o. s t a t o = d e c o l l o ; 136 for ( k=1;k<p i s t a. len_coda ; k++) 137 { 138 p i s t a. coda [ k 1] = p i s t a. coda [ k ] ; 139 } 140 p i s t a. len_coda ; } a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ] = p i s t a ; 145 break ; 146 } 147 } 148 } i f (! s u c c e s s o ) 151 { 152 p r i n t f ( " Aereo non trovato!\n" ) ; 153 } 154 // // Stampa ( per verifica ) 157 p r i n t f ( "\ naeroporto di %s\n", a e r o p o r t o. nome ) ; for ( i =0; i <a e r o p o r t o. num_terminal ; i ++) 160 { 161 p r i n t f ( "\ nterminal %d\n", a e r o p o r t o. t e r m i n a l [ i ]. i d ) ; 162 for ( j =0; j<a e r o p o r t o. t e r m i n a l [ i ]. num_piste ; j++) 163 { 164 p r i n t f ( " Pista %2d: ", a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. i d ) ; 165 i f ( a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. s t a t o==impegnata ) 166 { 167 id_temp = a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. a e r e o. i d ; 168 p r i n t f ( " aereo %d in fase di ", id_temp ) ; 169 switch ( a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. a e r e o. s t a t o ) 170 { 12

13 171 case d e c o l l o : 172 p r i n t f ( " decollo \n" ) ; 173 break ; 174 case a t t e r r a g g i o : 175 p r i n t f ( " atterraggio \n" ) ; 176 break ; 177 default : 178 p r i n t f ( " ERRORE \n" ) ; 179 break ; 180 } 181 } 182 else 183 { 184 p r i n t f ( " libera \n" ) ; 185 } for ( k=a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. len_coda 1;k>=0;k ) 189 { 190 id_temp = a e r o p o r t o. t e r m i n a l [ i ]. p i s t e [ j ]. coda [ k ]. i d ; 191 p r i n t f ( "\t%d e' in attesa di decollare \n", id_temp ) ; 192 } 193 } 194 } 195 } 13

Introduzione al linguaggio C Dati aggregati

Introduzione al linguaggio C Dati aggregati Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre

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

Informatica B Esercitazione 4 (Soluzioni)

Informatica B Esercitazione 4 (Soluzioni) Informatica B Esercitazione 4 (Soluzioni) 11 ottobre 018 Cicli 4.1 Si scriva un programma C che stampa i numeri da 1 a 100. Per i multipli di tre, stampare "Fizz" invece del numero. Per i multipli di cinque,

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

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

Esercizio 1: media di numeri reali (uso funzioni e struct)

Esercizio 1: media di numeri reali (uso funzioni e struct) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le

Dettagli

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato

Dettagli

Esercizi. Stringhe. Stringhe Ricerca binaria

Esercizi. Stringhe. Stringhe Ricerca binaria Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)

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

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

Tipi definiti dall'utente

Tipi definiti dall'utente Tipi definiti dall'utente Tipi definiti Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per denire nuovi tipi (tipi user-defined) Possiamo: Ridenominare

Dettagli

Tipi definiti dall'utente

Tipi definiti dall'utente Tipi definiti dall'utente Tipi definiti Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per denire nuovi tipi (tipi user-defined) Possiamo: Ridenominare

Dettagli

Lezione 8 Liste. Rossano Venturini. Pagina web del corso.

Lezione 8 Liste. Rossano Venturini. Pagina web del corso. Lezione 8 Liste Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Prova del 18/05/2009 Scrivere un programma

Dettagli

Lezione 10 Liste. Rossano Venturini. Pagina web del corso.

Lezione 10 Liste. Rossano Venturini. Pagina web del corso. Lezione 10 Liste Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 1 Prova del 18/05/2009 Scrivere un programma che legga

Dettagli

Lezione 20: Tipi derivati: struct e union

Lezione 20: Tipi derivati: struct e union Lezione 20: Tipi derivati: struct e union Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Tipi di dati derivati: strutture (struct)

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

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

Input/Output Input = clienti.bin, n (funzione richiesta dall utente), Cognome (per il punto 1) Output = dati_cliente, top10, sconti

Input/Output Input = clienti.bin, n (funzione richiesta dall utente), Cognome (per il punto 1) Output = dati_cliente, top10, sconti Fondamenti di Informatica L-A (Elettronica/Automazione) A.A. 2005/2006, terzo scritto (18/1/2005) Proposta di soluzione (ragionata) dell esercizio di progetto Input/Output Input = clienti.bin, n (funzione

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

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

Fondamenti di Informatica T-1. Selezione

Fondamenti di Informatica T-1. Selezione Selezione 2 Selezione Permette di differenziare il flusso di controllo a seconda che sia verificata o meno una condizione. Il flusso di controllo si ramifica in due (o più) sequenze di istruzioni alternative.

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

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

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche Avvertenze Usare ESCLUSIVAMENTE penne ad inchiostro nero o blu (NO MATITE). Consegnare solo fogli formato A4 scritti da ambo le parti. In testa a ciascun foglio scrivere: cognome, nome, numero progressivo

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

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

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici. Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene

Dettagli

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA Anno scolastico Lab informatica AULA n 35 Data inizio svolgimento Progr. relazione primo trimestre secondo pentamestre Cognome e Nome DATI DELLO STUDENTE

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

Dettagli

Stringhe e tipi di dati strutturati

Stringhe e tipi di dati strutturati Stringhe e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Marzo 2013 Info sui Labs http://tinyurl.com/ieimlabextra Ricordate di portare un adattatore!

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

COMANDI ITERATIVI. Ivan Lanese

COMANDI ITERATIVI. Ivan Lanese COMANDI ITERATIVI Ivan Lanese Argomenti Comando while Comando do while Comando for Comando while: reminder while (condizione) comando; Semantica: la condizione viene testata: se è vera, viene eseguito

Dettagli

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C tipi di dati definiti dall utente Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Tipi di dati in C Predefiniti

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

Rappresentazione di dati

Rappresentazione di dati Rappresentazione di dati oggetti del mondo reale: - caratteristiche - caratteristiche obiettivo della rappresentazione analisi e progettazione strutture dati teoriche (ADT) - domini ( ) - dominio di interesse

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1) Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Strutture e Unioni DD Cap. 10, pp. 379-391, 405-406 KP Cap. 9, pp. 361-379 Strutture Strutture Collezioni di variabili correlate (aggregati)

Dettagli

Rappresentazione di dati

Rappresentazione di dati Rappresentazione di dati oggetti del mondo reale: - caratteristiche - caratteristiche obiettivo della rappresentazione analisi e progettazione strutture dati teoriche (ADT) - domini ( ) - dominio di interesse

Dettagli

- int nbrani = 0; //numero di brani presenti in archivio. int creaplaylist(tipobrano[] playlist, int n, TipoGenere g, TipoFile t);

- int nbrani = 0; //numero di brani presenti in archivio. int creaplaylist(tipobrano[] playlist, int n, TipoGenere g, TipoFile t); Appello 12.09.2007-1- punti 15 (4+6+5) a) ctunes è un programma per la gestione di archivi musicali; serve per raccogliere informazioni riguardanti tutti i file musicali presenti su un computer e per creare

Dettagli

3. Terza esercitazione autoguidata: progetto gestione voli

3. Terza esercitazione autoguidata: progetto gestione voli 9 3. Terza esercitazione autoguidata: progetto gestione voli Qui ci occupiamo di scrivere un programma abbastanza lungo, dedicato alla gestione di una tabella di dati. Una tabella e una struttura dati

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind

Dettagli

Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: Esercizio 7.1

Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: Esercizio 7.1 Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: costrutti condizionali (if, switch); costrutti iterativi (for, while); dichiarazione di vettori e matrici; dichiarazione

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

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

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

Strutture di Controllo Iterative: Istruzione FOR

Strutture di Controllo Iterative: Istruzione FOR Linguaggio C Strutture di Controllo Iterative: Istruzione FOR 1 Istruzioni iterative! Anche dette cicli! Prevedono l esecuzione ripetitiva di altre istruzioni (corpo del ciclo)! Ad ogni iterazione del

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

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

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

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

TIPI DI DATO. e quasi sempre anche collezioni di oggetti, mediante la definizione di tipi strutturati

TIPI DI DATO. e quasi sempre anche collezioni di oggetti, mediante la definizione di tipi strutturati Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti, mediante la

Dettagli

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array.

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array. Informatica A (per gestionali) A.A. 2004/2005 Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array. Indice 1 Funzioni: passaggio di parametri per indirizzo; puntatori...3

Dettagli

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

La sintassi del C APPENDICE H

La sintassi del C APPENDICE H APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i

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

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Prima prova intermedia - 11 Novembre 2009 Si risolvano i seguenti esercizi. Il compitino prevede un punteggio massimo di 15/14-esimi, cui andranno sommati i punti ottenuti nel

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

Tutorato Elementi di Informatica 2018

Tutorato Elementi di Informatica 2018 Università degli Studi di Cagliari Pattern Recognition & Application Lab Dipartimento di Ingegneria Elettrica ed Elettronica Tutorato Elementi di Informatica 2018 Esercizi per I parziale Mail: bioinfo.marcialis@gmail.com

Dettagli

Fondamenti di Informatica L-A. Esercitazione 3

Fondamenti di Informatica L-A. Esercitazione 3 Fondamenti di Informatica L-A Esercitazione 3 Espressioni: precedenza e associatività degli operatori. Programmazione strutturata: blocchi, condizioni, cicli. Istruzioni if, switch, do...while, while,

Dettagli

Tipi strutturati - struct

Tipi strutturati - struct Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Le classi di istruzioni in C++ 1 Le classi di istruzioni in C++ SEQUENZIALI Statement semplice Statement composto CONDIZIONALI if < expr.> else switch case

Dettagli

Spazio riservato ai docenti

Spazio riservato ai docenti Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 25 Novembre 2015 COGNOME E NOME RIGA COLONNA MATRICOLA Tema A Spazio riservato ai docenti Il presente plico contiene

Dettagli

int ninv; /* numero di inventario */

int ninv; /* numero di inventario */ 1) Scrivere il programma C che legga da un file di testo ("dati.dat") i record con dati relativi ad un archivio di dischi (utilizzando la struttura data) e scriva il file dati1.dat con i nomi degli artisti

Dettagli

Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: Esercizio 7.1

Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: Esercizio 7.1 Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: costrutti condizionali (if, switch); costrutti iterativi (for, while); dichiarazione di vettori e matrici; dichiarazione

Dettagli

Il linguaggio C. Istruzioni, funzioni, dati strutturati

Il linguaggio C. Istruzioni, funzioni, dati strutturati Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects

Dettagli

Esercizio 1. Liste di interi

Esercizio 1. Liste di interi Esercizio 1. Liste di interi Si legga una sequenza di numeri interi da tastiera, dopo ogni inserimento chiedere all'utente se vuole continuare, quindi: Creare due liste L1 e L2 con inserimento ordinato;

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Il costruttore struct

Il costruttore struct Il costruttore struct Aggrega informazioni eterogenee Esempio variabili di tipo impiegato contenenti nome, cognome, codice fiscale, indirizzo, numero di telefono, stipendio, data di assunzione contenitori

Dettagli

Tecniche della Programmazione lezione 17

Tecniche della Programmazione lezione 17 Tecniche della Programmazione lezione 17 strutture di dati: astratte e concrete - metodologia di rappresentazione (e programmazione) di dati del mondo reale, mediante STRUTTURE DATI - tipo astratto di

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

Strutture di Controllo Iterative: Istruzione FOR

Strutture di Controllo Iterative: Istruzione FOR Linguaggio C Strutture di Controllo Iterative: Istruzione FOR 1 Istruzioni iterative n Anche dette cicli n Prevedono l esecuzione ripetitiva di altre istruzioni (corpo del ciclo) n Ad ogni iterazione del

Dettagli

Tipo Struct, Union, Enum

Tipo Struct, Union, Enum Concetti chiave Tipo Struct, Union, Enum Variabili strutturate: il tipo struct Elementi di una struttura typedef & struct Strutture annidate Array di strutture Union Enum Struct Per aggregare elementi

Dettagli

parte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure

parte dichiarativa globale: dichiarazioni di costanti dichiarazioni di tipi dichiarazioni di variabili prototipi di funzioni/procedure Tipi user-defined Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per definire nuovi tipi (tipi user-defined) Vediamo le regole generali che governano

Dettagli

Passare argomenti al programma

Passare argomenti al programma Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di

Dettagli

case 0: /* child 1 - writing end */ close(fd[0]); // close read end write(fd[1], string, (strlen(string)+1));/* +1 is termination \0 */ return (0);

case 0: /* child 1 - writing end */ close(fd[0]); // close read end write(fd[1], string, (strlen(string)+1));/* +1 is termination \0 */ return (0); ESERCIZIO RELATIVO ALLA PARTE DI UNIX (3 punti) Si scriva un programma per realizzare la comunicazione unidirezionale via pipe fra due processi fratelli, in cui un fratello invia all altro la stringa "Good

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

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

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else Esercitazione 2 Variabili e Tipi Input e Output Assegnamenti Il comando if-else Espressioni aritmetiche /* Scrivere un programma che calcola l area e la circonferenza di un cerchio di raggio 20 cm */ #include

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 2: Elementi lessicali, casting e while Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Soluzione agli esercizi

Dettagli

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

a = 6; b = 7; c = a b; [ ] il risultato è indefinito [ ] c = 12 [ ] c = 13 [X] c = 14 a = 8; b = 9; c = a b;

a = 6; b = 7; c = a b; [ ] il risultato è indefinito [ ] c = 12 [ ] c = 13 [X] c = 14 a = 8; b = 9; c = a b; Università degli Studi di Udine Corsi di laurea in Ing. Elettronica e Ing. Gestionale Fondamenti di programmazione 18 novembre 2016 - Prova intermedia NOTA: nel seguito le risposte corrette e le note sono

Dettagli

Esercizio (o esempio?)

Esercizio (o esempio?) Esercizio (o esempio?) programma che legge un intero n e n double; li memorizza in un array dinamico esatto calcola e stampa minimo, massimo e media dei double #include 1) Lettura e memorizzazione

Dettagli

Struttura dati astratta Coda

Struttura dati astratta Coda CODE Struttura dati astratta Coda La coda o queue è una struttura dati astratta in cui l'inserimento e l estrazione sono consentite solo in specifiche posizioni; in particolare, l'inserimento è consentito

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

Strutture Dati. Nicu Sebe. Informatica Nicu Sebe 1 / 27

Strutture Dati. Nicu Sebe. Informatica Nicu Sebe 1 / 27 Strutture Dati Nicu Sebe Informatica Nicu Sebe 1 / 27 Dati e Tipi di Dati e Spazi Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente. HOMEWORKS Questi esercizi saranno proposti di tanto in tanto e forniti sempre SENZA soluzioni. Come materiale complementare ai libri di testo e alle lezioni frontali e di esercitazione, si consiglia di

Dettagli

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while) Laboratorio Due 1) Switch 2) Costrutti Iterazione (For, While, do while) GLI ARGOMENTI DI OGGI Istruzione switch I costrutti di iterazione (For, while, do while) Le funzioni (e ricorsione) Terza Esercitazione

Dettagli

System call per l accesso a file

System call per l accesso a file System call per l accesso a file Nome open creat close read write lseek unlink remove fcntl Significato apre un file in lettura e/o scrittura o crea un nuovo file crea un file nuovo chiude un file precedentemente

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