La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

INFORMATICA typedef. © Piero Demichelis 2 Ridefinizione dei tipi: typedef E possibile ridefinire un tipo già esistente mediante la parola chiave typedef,

Presentazioni simili


Presentazione sul tema: "INFORMATICA typedef. © Piero Demichelis 2 Ridefinizione dei tipi: typedef E possibile ridefinire un tipo già esistente mediante la parola chiave typedef,"— Transcript della presentazione:

1 INFORMATICA typedef

2 © Piero Demichelis 2 Ridefinizione dei tipi: typedef E possibile ridefinire un tipo già esistente mediante la parola chiave typedef, cosicché si può utilizzare un nuovo identificatore (sinonimo) al posto del precedente. Formato: typedef tipo_esistente nuovo_nome; Esempio: typedef long int interolungo; /* ridefinizione di tipo */ integerolungo dato_int; /* dato_int e' un intero lungo */ Mediante typedef si possono definire, ad esempio, tipi astratti, integer8, integer16 e integer32, dall'ovvio significato, per poi ridefinirli in funzione del compilatore effettivamente usati.

3 Il tipo enumerazione

4 © Piero Demichelis 4 Il tipo enumerazione: enum Nei problemi reali può succedere di dover trattare colori, categorie, dimensioni, ecc., per i quali non esiste un tipo predefinito che si adatti opportunamente alla loro rappresentazione. In questi casi il C permette di definire le entità su cui il programma deve operare: questa possibilità è data dalla definizione dei tipi enumerati. La forma generale è: enum [identif_tipo] {identif. [, identif.]} [variabile]; enum identif_tipo variabile; dove le parti opzionali sono tra parentesi quadra.

5 © Piero Demichelis 5 Il tipo enumerazione: enum Esempio: enum colore {bianco, rosso, blu, giallo, verde, nero}; enum week {lunedi, martedi, mercoledi, giovedi, venerdi, sabato, domenica}; enum colore col_parete; enum week giorno; La variabile col_parete, di tipo colore, potrà assumere i valori bianco, rosso, blu, ecc. La variabile giorno di tipo week i valori lunedi, martedi, ecc.

6 © Piero Demichelis 6 Il tipo enumerazione: enum La definizione può apparire in varie forme: a) enum {identif. [, identif.]} variabili; variabile può assumere uno dei valori della lista (espressi in modo simbolico); esempio: enum colore {bianco, rosso, blu, giallo, verde, nero} col_parete; b)enum nome_tipo {identif. [, identif.]}; enum nome_tipo variabili; In questo modo si identifica con nome_tipo la lista dei valori assunti, successivamente si definisce variabile di quel tipo enumerativo che potrà assumere soltanto i valori indicati nella lista precedente.

7 © Piero Demichelis 7 Il tipo enumerazione: enum Ad esempio: enum colore {bianco, rosso, blu, giallo, verde, nero}; enum colore col_parete; c) enum nome_tipo {ident. [, ident.]} variabile_1; enum nome_tipo variabile_2,......, variabile_n; è una combinazione delle precedenti; esempio: enum colore {bianco, rosso, blu, giallo, verde, nero} parete_A; enum colore parete_B;

8 © Piero Demichelis 8 Il tipo enumerazione: enum In un programma si possono pertanto avere istruzioni del tipo: col_parete = verde; giorno = mercoledi; Nella definizione di tipo si evidenziano due elementi: l identificatore di tipo, detto tag, e gli identificatori che verranno usati per esprimere i valori assunti da quel tipo. I valori assunti da quel tipo corrispondono a delle costanti intere definite in modo automatico dal compilatore, che pertanto devono essere uniche nel programma. Ad esempio, enum festivo {sabato, domenica}; enum feriale {lunedi, martedi, mercoledi, giovedi, venerdi, sabato}; è errato perché sabato è presente in due tipi; analogamente è illecito usare, per esempio, l'identificatore domenica come nome di una variabile.

9 © Piero Demichelis 9 Il tipo enumerazione: enum La lista degli identificatori che denotano i valori assunti da un tipo enumerato forma un insieme ordinato che il compilatore codifica con valori interi crescenti a partire da 0. Nella definizione del tipo colore, l'identificatore bianco viene codificato con 0, rosso con 1, blu con 2, ecc. Si possono modificare questi valori, assegnati automaticamente, imponendo i valori interi che si vogliono assegnare direttamente nella definizione. Si fa seguire al nome dell'identificatore il segno uguale e il valore che si intende assegnare. Il compilatore assumerà questo numero come nuovo valore di partenza per le assegnazioni successive.

10 © Piero Demichelis 10 Il tipo enumerazione: enum Esempio: enum colore {bianco, rosso, blu = 20, giallo, verde, nero}; In questo caso bianco vale 0, rosso vale 1, blu vale 20, giallo vale 21, ecc. E possibile attribuire a più identificatori valori identici, o esplicitamente (ad esempio, blu = 20, giallo = 20), o implicitamente: se, ad esempio, si pone blu = 0 (lo stesso valore di bianco che a questo punto è già stato codificato), giallo assumerà lo stesso valore di rosso, cioé 1).

11 © Piero Demichelis 11 Il tipo enumerazione: enum In generale quindi questi identificatori agiscono come costanti intere e possono essere usati dovunque è appropriata una costante. Un'applicazione interessante è la definizione del tipo logico (assente in C) ottenuta combinando la definizione di tipo enumerato con la creazione di un tipo simbolico mediante typedef: typedef enum {FALSO, VERO} boolean; /*boolean è definito come sinonimo di un tipo enumerato a due valori*/ boolean finito, trovato; /* definizione di due variabili logiche */ Si noti che FALSO e VERO sono definite in un modo implicito e assumono rispettivamente i valori 0 e 1.

12 © Piero Demichelis 12 Il tipo enumerazione: enum Il linguaggio C definisce gli enumerati come una forma particolare del tipo intero: ne consegue che i valori definiti in tipi enumerati differenti sono a tutti gli effetti dei valori interi. Sono pertanto lecite (sintatticamente, non semanticamente!) assegnazioni di valori di un tipo enumerato a una variabile di un altro tipo enumerato. Un'altra conseguenza è che per le operazioni di I/O dei dati di tipo enumerato non sono previsti specificatori ad hoc, in quanto sono a tutti gli effetti degli interi.

13 © Piero Demichelis 13 Il tipo enumerazione: enum Esempio: main() { enum materia {italiano, latino, storia, geografia}; enum giorni {lunedi, martedi}; enum materia corso; enum giorni domani; corso = storia; /* corso assume il valore 2 */ corso = 3; /* corso assume il valore 3, cioè geografia */ domani = latino; /* domani assume il valore 1 */ }

14 © Piero Demichelis 14 enum: esempio Esempio: programma per introdurre da terminale i voti acquisiti in ogni materia di insegnamento e calcolo della media. #include main() { enum materia {italiano, latino, storia, geografia}; float sommavoti, voto, numvoti; enum materia corso; numvoti = 0; sommavoti = 0; printf (\nCalcola la media dei voti. Introdurre i voti.\n");

15 © Piero Demichelis 15 enum: esempio for (corso = italiano; corso <= geografia; corso++) { printf(\nVoto di "); /* costruisce il messaggio di richiesta voto */ switch (corso) { case italiano:printf ("italiano: "); break; case latino:printf ("latino: "); break; case storia:printf ("storia: "); break; case geografia:printf ("geografia: "); } scanf ("%f", &voto); sommavoti += voto; /* accumula in sommavoti (per la media) */ numvoti++; /* incrementa numvoti (per la media) */ } printf (\n\nMedia dei voti: %5.2f\n", sommavoti/numvoti); }


Scaricare ppt "INFORMATICA typedef. © Piero Demichelis 2 Ridefinizione dei tipi: typedef E possibile ridefinire un tipo già esistente mediante la parola chiave typedef,"

Presentazioni simili


Annunci Google