11
Informatica 6 Tipi di dato

Informatica 6

  • Upload
    suki

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

Informatica 6. Tipi di dato. Tipi di dato. Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione elettrica A seconda di come questi “0” e “1” vengono interpretati dal calcolatore, si hanno diversi tipi di informazione - PowerPoint PPT Presentation

Citation preview

Page 1: Informatica 6

Informatica 6

Tipi di dato

Page 2: Informatica 6

Tipi di dato

• Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione elettrica

• A seconda di come questi “0” e “1” vengono interpretati dal calcolatore, si hanno diversi tipi di informazione

• Un tipo di dato definisce i possibili valori che il dato può assumere, e le possibili operazioni che si eseguono su di esso

Page 3: Informatica 6

Classificazione dei tipi (1)

• Tipi semplici vs. tipi strutturati– i tipi semplici sono quelli più adatti a

rappresentare informazioni semplici, tipicamente a carattere numerico (ad es.: una temperatura)

– i tipi strutturati sono quelli usati per rappresentare unità di informazione più complesse, con diverse componenti (ad es.: una data)

Page 4: Informatica 6

Classificazione dei tipi (2)

• Tipi built-in vs. tipi user-defined– i tipi built-in (o predefiniti) sono quelli già presenti

nel linguaggio di programmazione (ad es.: int)– i tipi user-defined (o definiti dall’utente) sono

quelli definiti dal programmatore tramite appositi comandi, forniti dal linguaggio, di costruzione di nuovi tipi

Page 5: Informatica 6

Tipi semplici e built-in• int è un tipo numerico semplice e built-in• char è un tipo non-numerico bensì alfabetico, ma sempre

semplice e built-in (i suoi valori vanno sempre scritti tra apici: char c = ‘d’; a differenza delle stringhe che sono strutturate e vogliono le virgolette: string s = “ciao”;)

• In memoria, una variabile int occupa 4 byte, mentre una variabile char solo 1 byte

• Altri tipi numerici semplici e built-in sono (con le rispettive dimensioni di variabile): short int (2 byte), long int (4 byte), float (4 byte), double (8 byte)

• Naturalmente, maggiore è la dimensione dedicata a una variabile di un tipo, più vasta è la gamma di valori che tale variabile può assumere: una variabile int può assumere valori tra -32768 e 32767, una variabile long int da -2147483648 a 2147483647

Page 6: Informatica 6

Tipi user-defined (1)

• Tramite la parola chiave typedef, in C++ è data al programmatore la possibilità di definire nuovi tipi, in diversi modi

• Ridenominazione (typedef <tipo esistente> <nuovo tipo>)typedef int intero; /*si definisce un nuovo tipo chiamato “intero” che è esattamente come int*/intero x = 5;

Page 7: Informatica 6

Tipi user-defined (2)• Enumerazione

(typedef {<lista valori>} <nuovo tipo>)typedef {blu, rosso, verde} colore; /*si definisce un nuovo tipo chiamato “colore” le cui variabili possono assumere uno dei valori elencati*/colore c = blu;

• Il calcolatore costruisce una corrispondenza implicita tra i valori elencati e gli interi: blu == 0, rosso == 1, verde == 2

Page 8: Informatica 6

Tipi user-defined (3)

• Tipi strutturati user-defined (typedef {<descrizione struttura>} <nuovo tipo>)typedef {int giorno;

int mese; int anno;} data;

/*si crea il tipo “data” le cui variabili contengono 3 “campi”, chiamati “giorno”, “mese”, “anno”, che sono tutti di tipo int*/

Page 9: Informatica 6

Tipi user-defined (4)

• I diversi campi di una struttura possono essere di tipi diversi, a loro volta strutturati

• Per accedere a un campo di una variabile strutturata si usa la “dot notation” (notazione col punto)data oggi;oggi.giorno = 15;oggi.mese = 1;oggi.anno = 2010;

Page 10: Informatica 6

Conversioni automatiche di tipo (1)• Attenzione: se si mischiano variabili di diverso tipo in

una stessa istruzione, il calcolatore esegue delle conversioni automatiche di tipo

• Ad es.: int totale; float x = 5.75;

int y = 3; totale = x + y; /*quanto vale totale?*/• totale vale 8, perché anche se esiste una regola che

prevede che, sommando numeri di tipo diverso, tutti gli addendi vengano convertiti al tipo più generale (quindi: 3 -> 3.0 perché float è più generale di int), alla fine la variabile di destinazione è di tipo int, quindi la parte decimale viene troncata (non approssimata)

Page 11: Informatica 6

Conversioni automatiche di tipo (2)

• Esiste inoltre una convenzione che regola la conversione tra int e bool

• bool -> inttrue viene interpretato come 1, false come 0

• int -> bool0 viene interpretato come false, tutti gli altri interi come true

• E’ sconsigliato fare uso di queste conversioni nei programmi