16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati Tipi di dati strutturati strutturati Marco D. Santambrogio – [email protected] Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – [email protected] Ver. aggiornata al 4 Marzo 2013

Embed Size (px)

Citation preview

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipi di dati strutturatiTipi di dati strutturati

Marco D. Santambrogio – [email protected]. aggiornata al 4 Marzo 2013

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

ObiettiviObiettivi

• Dichiarazione di nuovi tipi di dato

• Dato strutturati

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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().

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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.

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Numeri complessiNumeri complessi

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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.

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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.

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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.

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Schedine: datiSchedine: dati

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Schedine: inserimento datiSchedine: inserimento dati

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Schedine: copia valoriSchedine: copia valori

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Schedine: stampa dei Schedine: stampa dei risultatirisultati

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 4 Marzo 2013

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