Informatica B Esercitazione 6
|
|
- Filomena Turco
- 5 anni fa
- Visualizzazioni
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 Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre
DettagliEsercitazioni 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.
DettagliInformatica 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,
DettagliDati 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
DettagliEsercitazione 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
DettagliEsercizio 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
DettagliLaboratorio 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
DettagliEsercizi. 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)
DettagliEsercitazione 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
DettagliEsercitazioni 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
DettagliAllocazione 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
DettagliTipi 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
DettagliTipi 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
DettagliLezione 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
DettagliLezione 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
DettagliLezione 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)
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char
DettagliArray. 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
DettagliInput/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
DettagliVariabili 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:
DettagliIntroduzione 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
DettagliFondamenti 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.
DettagliEsercizio 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
DettagliEsercitazioni 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
DettagliCorso 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
DettagliEsercizi. 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
DettagliLezione 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)
DettagliStrutture 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
DettagliRELAZIONE 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
DettagliEsercizi. 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)
DettagliStringhe 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!
DettagliFondamenti 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
DettagliCOMANDI 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
DettagliLinguaggio 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
DettagliLinguaggio 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
DettagliRappresentazione 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
DettagliCorso 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)
DettagliRappresentazione 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);
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
Dettagli3. 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
DettagliGestione 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)
DettagliEsercizio 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
DettagliQuesta 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
DettagliTipi 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
DettagliInformatica 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
Dettagli5. 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
DettagliStrutture 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
DettagliC: 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
DettagliTitolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.
Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliListe concatenate. Violetta Lonati
Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste
DettagliLaboratorio 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
DettagliQualsiasi 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
DettagliTIPI 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
DettagliInformatica 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
DettagliPuntatori 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
DettagliLa 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
DettagliFondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
DettagliFondamenti 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
DettagliOperazioni 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
DettagliTutorato 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
DettagliFondamenti 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,
DettagliTipi 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
DettagliCorso 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
DettagliSpazio 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
Dettagliint 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
DettagliQuesta 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
DettagliIl 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
DettagliEsercizio 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;
DettagliInformatica 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,
DettagliIl 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
DettagliTecniche 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
Dettaglistruct 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
DettagliStrutture 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
DettagliTipo 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
Dettagliparte 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
DettagliPassare 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
Dettaglicase 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
DettagliAritmetica 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
DettagliPreviously on TDP. LISTA rappresentata mediante "struct e puntatori" Cosa e aux? Di che tipo e e cosa contiene?
Previously on TDP lis ^ ^ 7 21 ** ** 14 *** memoria 9 NULL LISTA rappresentata mediante "struct e puntatori" *** lis->info == cosa? lis->next == ^^; /*cosa e ^^?*/ che cosa e' (*lis)? Cosa e aux? Di che
DettagliEsercitazione 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
DettagliLaboratorio 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
DettagliI 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
Dettaglia = 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
DettagliEsercizio (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
DettagliStruttura 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
DettagliUniversità 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
DettagliStrutture 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
DettagliComplementi. - 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
DettagliDati 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
DettagliHOMEWORKS. 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
DettagliLaboratorio. 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
DettagliSystem 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
DettagliGestione 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