• Non ci sono risultati.

Il concetto di tipo di dato

N/A
N/A
Protected

Academic year: 2021

Condividi "Il concetto di tipo di dato"

Copied!
17
0
0

Testo completo

(1)

Un linguaggio ad alto livello deve offrire degli strumenti per:

• rappresentare le informazioni di interesse dell’algoritmo

• definire le istruzioni che costituiscono l’algoritmo

Cominciamo ad analizzare la

rappresentazione delle informazioni ...

(2)

Caratteristiche dell’informazione

Qualunque informazione è definita tramite tre caratteristiche fondamentali:

• Valore

indica il particolare elemento assunto dall’informazione

• Tipo

indica l’insieme degli elementi entro cui è stato scelto il valore attribuito all’informazione

• Attributo

indica il significato associato all’informazione nel contesto in cui questa viene utilizzata

Si ottiene un’informazione completa quando un attributo assume un valore di un determinato tipo

(3)

Esempio

Valore Tipo Attributo

3.5 reale soluzione

dell’equazione

5.0 reale soluzione

dell’equazione

5 intero lunghezza del

lato

5 intero numero tentativi

Luigi Rossi stringa di

caratteri impiegato Luigi Rossi stringa di

caratteri correntista

(4)

All’interno di un programma un’informazione può essere organizzata in vari modi:

• variabile

• costante

• espressione

(5)

Variabile

Una variabile è un ente, appartenente ad un certo tipo, che può assumere uno qualunque dei valori appartenenti al tipo. Una variabile è identificata da un nome, che riflette il ruolo che questa assume all’interno del programma.

Esempio:

x è una variabile di tipo reale che ha valore 0.17 lato è una variabile di tipo intero che ha valore 4 volte è una variabile di tipo intero che ha valore 0

Considera due numeri X e Y, con X > Y

Dividi X per Y e ottieni il resto R

R = 0 ?

Termina.

Il MCD è Y Sostituisci X con Y

Sostituisci Y con R

si no

Il valore di una variabile può essere sia utilizzato (lettura) che modificato (scrittura).

Per esempio, in un programma che realizza l’algoritmo del MCD i valori di X, Y e R sono ospitati in altrettante variabili.

(6)

Costante

E’ un oggetto, appartenente ad un certo tipo, il cui valore rimane

immodificato durante l’esecuzione del programma. Ad una costante può essere attribuito un nome.

Esempio:

0 è una costante di tipo intero 3.1415 è una costante di tipo reale

pigreco è una costante di tipo reale che ha valore 3.1415

Espressione

E’ una sequenza di operandi, operatori e parentesi, dove gli operandi possono essere variabili o costanti. Il tipo dell’espressione complessiva dipende dai tipi degli operandi coinvolti nell’espressione.

Esempio: (a,b variabili intere; x,y variabili reali)

a*b+50 è un’espressione di tipo intero a*3.1415 è un’espressione di tipo reale x/2 è un’espressione di tipo reale 2*b*pigreco un’espressione di tipo reale

(7)

Il concetto di tipo di dato

Un linguaggio di programmazione mette a disposizione del programmatore diversi tipi di dato (o, più semplicemente, tipi) per specificare l’insieme dei valori utilizzato.

In un linguaggio di programmazione, un tipo di dato specifica:

d l’insieme dei valori che costituiscono il tipo

d l’insieme delle operazioni definite sugli elementi del tipo

Tutte le costanti, variabili ed espressioni appartengono ad un certo tipo. Per specificare quale sia il tipo associato ad una variabile o ad una costante, è necessaria una dichiarazione della variabile o della costante, che deve precedere, nel testo del programma, qualunque utilizzo dell’oggetto dichiarato.

(8)

Il concetto di tipo di dato (2)

Il numero dei valori distinti che appartengono ad un tipo T viene detto cardinalità di T. La cardinalità fornisce una misura dell’informazione associata al tipo e, quindi, della quantità di memoria necessaria per ospitare un oggetto del tipo.

Un tipo si dice ordinato se è definita una relazione d’ordine tra i suoi elementi.

Grazie ai tipi di dato, le informazioni di interesse per il programma possono essere trattate in maniera astratta, senza tener conto, cioè, del modo

effettivo con cui esse sono rappresentate all’interno del calcolatore.

Per ogni variabile o costante dichiarata, è possibile:

determinare a priori l’insieme dei valori e l’insieme delle operazioni ammissibili e quindi rilevare eventuali errori in fase di traduzione determinare a priori la quantità di memoria necessaria per

rappresentare tutte le informazioni di interesse

(9)

Il tipo INTERO (int nel C++)

È costituito da un sotto insieme limitato dei numeri interi, la cui dimensione dipende dal calcolatore e/o dal traduttore usati (perché ?).

Dimensione tipica: 4 bytes

valore intero minimo: –2.147.483.648 valore intero massimo: +2.147.483.647 Operazioni ammesse

assegnazione =

somma +

sottrazione - moltiplicazione * divisione intera /

confronto >,<,>=,<=,==,!=

(10)

Il tipo REALE (float e double in C++)

È costituito da un sotto insieme limitato e discreto dei numeri reali, la cui dimensione dipende dal calcolatore e/o dal traduttore usati.

Dimensione tipica: 4 bytes (float), 8 bytes (double) valore reale minimo (abs): 3.4 E-38 (float) 1.7 E-308 (double) valore reale massimo (abs): 3.4 E+38 (float) 1.7 E+308 (double)

Operazioni ammesse

assegnazione =

somma +

sottrazione -

moltiplicazione *

divisione /

confronto >,<,>=,<=,==,!=

Nota:

sebbene siano formalmente le stesse operazioni, hanno una realizzazione diversa rispetto al tipo INT

(11)

Il tipo CARATTERE (CHAR in C++)

Consiste in un insieme di caratteri, alcuni stampabili (caratteri alfabetici,

cifre, caratteri di punteggiatura, ecc.) ed altri non stampabili tramite i quali si gestisce il formato dell’input/output (caratteri di controllo).

I sotto insiemi delle lettere e delle cifre sono ordinati e coerenti.

Per la rappresentazione interna, viene tipicamente usato il codice ASCII, che mette in corrispondenza ogni carattere con un numero intero compreso tra 0 e 255.

Il tipo carattere è di fatto un dato di tipo numerico sul quale sono permesse tutte le operazioni definite sul tipo intero.

Dimensione tipica: 1 bytes valore intero minimo: –128 valore intero massimo: +127

(12)

Il Codice ASCII

(13)

Il tipo LOGICO (BOOL in C++)

È un tipo costituito da due soli valori (indicati con FALSE e TRUE),

necessario per gestire le informazioni di tipo logico (es. il risultato di un confronto).

Dimensione tipica: 1 bytes

valore minimo: false

valore massimo: true Operazioni ammesse

assegnazione =

disgiunzione ||

congiunzione &&

negazione !

(14)
(15)

Costanti

Costanti di tipo intero

Sono definite come sequenze di cifre decimali, eventualmente precedute da un segno (+ o -):

0 -1 3256 +34

Costanti di tipo reale

Sono definite come sequenze di cifre decimali, eventualmente precedute da un segno (+ o -), strutturate in virgola fissa o in virgola mobile (floating point):

0.1 -3.7 0.0001 1.0E-4 -7.6E12 Costanti di tipo stringa di caratteri

Sono definite come sequenze di caratteri racchiusi tra doppi apici (“); nel caso di una costante di tipo singolo carattere si usano i singoli apici (‘):

‘x’ “Valore di n: “ “123” “Il risultato e’: “ Costanti di tipo logico

Sono solo due: false e true

(16)

Classi di istruzioni

In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell’algoritmo.

Questa consiste di:

• assegnazioni di valori a variabili (in base a calcolo o da I/O)

• selezione di azioni alternative in base alla valutazione di una condizione

• esecuzione ciclica di una o più azioni

Dividi X per Y e ottieni il resto R

R = 0 ?

Termina.

Il MCD è Y Sostituisci X con Y

Sostituisci Y con R

no

X > Y ?

Scambia X con Y Leggi i valori di

X e di Y

no si

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

si

(17)

Classi di istruzioni in C++

if ( expression ) statement

if ( expression ) statement else statement switch ( expression ) case/default statements while ( expression ) statement

do statement while ( expression ) for (statement expression expression ) case constant expression : statement default : statement

break;

continue;

return expression goto identifier ;

try { statements } catch statements

catch { exception declaration } { statements }

gestione delle eccezioni espressione opzionale

Riferimenti

Documenti correlati

Esegui tutti gli incroci possibili tra: individuo dalla pelle con lentiggini – individuo dalla pelle senza lentiggini e indica la % del fenotipo nella generazione filiale F

che pu` o essere uguale al vettore nullo `e quella che ha coefficienti tutti nulli, quindi possiamo dire appunto che tutti i coefficienti di questa combinazione sono uguali a

- qui List e Iterator hanno il diritto di accedere alla parte privata di Node.  meccanismo da usare con

Autore: Rio Chierego (email: riochierego@libero.it - sito web: http://digilander.libero.it/rijo) Pag.. Quindi il vantaggio di fornire una soluzione astratta del problema permette

In altre parole la coda risulterà piena quando l'indice di coda sarà separato da quello di testa da esattamente una posizione libera (ossia aggiungendo 1 all'indice

Se la condizione è true, viene eseguita l’istruzione di stampa e il programma prosegue con la prossima istruzione. Se la condizione è false, l’istruzione di stampa è ignorata e

CODICE PROFILO DESCRIZIONE PROFILO.. AT

CODICE PROFILO DESCRIZIONE PROFILO.. CS