Upload
saturnino-colombo
View
217
Download
2
Embed Size (px)
Citation preview
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipi di dati strutturatiTipi di dati strutturati
Marco D. Santambrogio – [email protected]. aggiornata al 4 Marzo 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
• Dichiarazione di nuovi tipi di dato
• Dato strutturati
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Definire un nuovo tipoDefinire un nuovo tipo
Sinonimi:
typedef int Intero;Intero a;int b;
typedef char Stringa[10];Stringa c;char d[10];
Tipi enumerativi:
typedef enum {lun,mar,mer,gio,ven,sab,dom} Settimana;Settimana giorno;giorno = lun;giorno = 3; /* 3 equivale a gio */
Non funziona con scanf() e printf().
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
? ??
ilMioRecord
?
Definire un nuovo tipoDefinire un nuovo tipo
Tipi strutturati:
typedef struct{
char campo1;float campo2;int campo3[2];
} Record;
Record ilMioRecord;
ilMioRecord.campo1 = 'A';ilMioRecord.campo2 = 24.56;ilMioRecord.campo3[0] = 23;ilMioRecord.campo3[1] = 45;
24.56 23A
ilMioRecord
45
campo1 campo2 campo3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Numeri complessi: Numeri complessi: problemaproblema• L’utente inserisce due numeri
complessi (parte reale e parte immaginaria) e l’elaboratore esegue l’operazione di somma Es: 3+4i + 5-6i = 8-2i
• Il programma chiede all’utente se
vuole calcolare un’altra somma. Se l’utente inserisce il carattere ‘q’ il programma termina, altrimenti ricomincia daccapo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Numeri complessiNumeri complessi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Numeri complessi: noteNumeri complessi: note
"%f" stampa un numero float con il segno “-” se è negativo, senza segno se è positivo"%+f" stampa un numero float con il segno “-” se è negativo, con il segno “+” se è positivo"i" non fa parte degli specificatori di formato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una nota sulla scanf()Una nota sulla scanf()
Quando inserisco dei dati da tastiera, gli stessi vengono accodati nello standard input (stdin) del programmaAnche in carattere ENTER finale viene accodato:
Se inserisco: 123 [ENTER]Ottengo in stdin: 123 ‘\n’Eseguo scanf(“%d”,&x); stdin diventa: ‘\n’Inserisco il numero 432; stdin diventa: ‘\n’ 432 ‘\n’
Eseguo scanf(“%d”,&x); stdin diventa: ‘\n’
La scanf() scarta l’eventuale ‘\n’ che incontra prima del numero da leggere ma lascia il ‘\n’ finale.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una nota sulla scanf()Una nota sulla scanf()
• Adesso proviamo a leggere un carattere: Inserisco il carattere ‘w’; stdin diventa: ‘\n’ ‘w’ ‘\n’ Eseguo scanf(“%c”,&y); stdin diventa: ‘w’ ‘\n’
• La scanf(), quando legge un carattere (e solo in questo caso), NON scarta l’eventuale ‘\n’ iniziale! Lo mette nella variabile y e lascia il resto in stdin Senza immettere nient’altro, eseguo un’altra
scanf(“%c”,&y); stdin diventa: ‘\n’
• Questa volta la scanf() mette ‘w’ in y
• Quindi: se devo leggere caratteri (“&c”) ma prima ho effettuato altre letture, devo togliere da stdin il carattere ‘\n’ rimasto.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: problemaSchedine: problema
• Il programma, partendo da un array di dimensione prefissata che contiene in ogni cella: data della giocata colonna con i tredici segni
• Copia in un altro vettore solo le giocate dell’anno 2012
• Quindi, visualizza queste giocate.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: datiSchedine: dati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: inserimento datiSchedine: inserimento dati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: copia valoriSchedine: copia valori
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: stampa dei Schedine: stampa dei risultatirisultati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Squadra di calcio: Squadra di calcio: problemaproblema• Il programma, partendo da un array che
contiene i dati personali dei calciatori di una squadra, permette di calcolare: totale goal fatti dalla squadra goal fatti dagli attaccanti goal fatti dai centrocampisti goal fatti dai difensori totale goal subiti dalla squadra
• Il programma inoltre visualizza i dati personali di tutti i giocatori
• Per ogni giocatore, il programma memorizza: numero di maglia ruolo goal fatti (subiti, se è un portiere).
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio
Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill• Capitolo 5 (No: 5.5.3, 5.5.4 e 5.6)
• Credits Vito Perrone, Daniele Braga