1 / 15

INFORMATICA typedef

INFORMATICA typedef. 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:

Télécharger la présentation

INFORMATICA typedef

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INFORMATICAtypedef

  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. 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 leentità 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. 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. 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 enumerativoche potrà assumere soltanto i valori indicati nella lista precedente.

  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_tipovariabile_2, ......, variabile_n; è una combinazione delle precedenti; esempio: enum colore {bianco, rosso, blu, giallo, verde, nero} parete_A; ................................ enum colore parete_B;

  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 usatiper 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. Il tipo enumerazione: enum • La lista degli identificatori che denotano i valori assunti da un tipoenumerato 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 chesi intende assegnare. Il compilatore assumerà questo numero come nuovovalore di partenza per le assegnazioni successive.

  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. Il tipo enumerazione: enum • In generale quindi questi identificatori agiscono come costanti intere epossono 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. 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 differentisono a tutti gli effetti dei valori interi. • Sono pertanto lecite (sintatticamente, non semanticamente!) assegnazioni di valori di un tipoenumerato a una variabile di un altro tipo enumerato. • Un'altra conseguenza è che per le operazioni di I/O dei dati di tipoenumerato non sono previsti specificatori ad hoc, in quanto sono a tutti glieffetti degli interi.

  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. enum: esempio • Esempio: programma per introdurre da terminale i voti acquisiti in ogni materia di insegnamento e calcolo della media. #include <stdio.h> 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. 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); }

More Related