La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Tipi di dati elementari Il C (e il C++) è un linguaggio cosiddetto tipato, ovvero: + di ogni variabile deve essere dichiarato il tipo di appartenenza;

Presentazioni simili


Presentazione sul tema: "Tipi di dati elementari Il C (e il C++) è un linguaggio cosiddetto tipato, ovvero: + di ogni variabile deve essere dichiarato il tipo di appartenenza;"— Transcript della presentazione:

1 Tipi di dati elementari Il C (e il C++) è un linguaggio cosiddetto tipato, ovvero: + di ogni variabile deve essere dichiarato il tipo di appartenenza; + il tipo di una variabile stabilisce il modo con cui essa viene codificata dal calcolatore e determina le operazioni che possono essere effettuate su e con quella variabile; + il controllo sui tipi è molto forte: l'interazione fra variabili di tipo diverso e la conversione da un tipo all'altro (casting) è esplicitamente regolato e limitato

2 Tipi di dati elementari intnumero intero4 byte charcodice ascii di un carattere 1 byte (interpretabile anche come numero intero non negativo) floatnumero in virgola mobile (6-7 cifre significative) 4 byte doublenumero in virgola mobile (15-16 cifre significative) 8 byte boolvalore logico: vero (true) o falso (false)1 byte I tipi possibili sono in realtà molti di più: + ogni tipo nativo può essere specializzato mediante i qualificatori di tipo + il programma stesso può creare propri tipi personalizzati (detti "tipi astratti")

3 Dichiarazione e definizione degli identificatori Un identificatore è un nome simbolico che il programmatore assegna a un'entità del linguaggio (variabili, funzioni...): una volta effettuata lassegnazione, il compilatore sarà in grado di identificare quell'entità (individuarla e riconoscerne il tipo) ogni volta che incontra il nome che le è stato assegnato. Il programmatore può eleggere a identificatore una qualsiasi sequenza di lettere (maiuscole o minuscole) e di cifre numeriche che inizi con una lettera e senza caratteri di altro tipo o spazi bianchi. E… auto bool break case catch char class const const_class continue default delete do double dynamic_cast else enum explicit extern false float for friend goto if inline int long main mutable namespace new operator private protected public register reinterpret_class return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wmain while...e che non sia una parola-chiave (keyword) già usata dal C/C++

4 Dichiarazione e definizione degli identificatori + In C++ tutti gli identificatori devono essere dichiarati prima di essere utilizzati (non necessariamente all'inizio del programma). + Per le variabili, la dichiarazione coincide con la specificazione del tipo; la sintassi è proprio lelencazione degli identificativi preceduta dal tipo desiderato. Ad esempio: int Variabile_Intera; int ore, giorni, mesi; + Ogni dichiarazione viene interpretata come unistruzione, e quindi pretende il ; per separarla dalla successiva.

5 Qualificatori e specificatori di tipo Un qualificatore di tipo è una keyword che, in una istruzione di dichiarazione, si premette a un tipo elementare per qualificare ulteriormente il tipo che si sta dichiarando. Esistono 4 qualificatori: short, long, signed, unsigned. (Se il tipo è omesso, è sottointeso int) I qualificatori short e long si applicano al tipo int. Essi stabiliscono la dimensione della memoria occupata dalle rispettive variabili di appartenenza. I qualificatori signed e unsigned si applicano ai tipi interi int e char. Essi determinano se le rispettive variabili di appartenenza possono assumere o meno valori negativi. (Non è possibile dare delle regole generali perché il particolare risultato che si ha usando questi qualificatori dipende dalla piattaforma utilizzata.)

6 Qualificatori e specificatori di tipo Uno specificatore è una keyword che, in una istruzione di dichiarazione, si premette a un tipo (elementare o non) e all'eventuale qualificatore, per definire ulteriori caratteristiche sul trattamento dell'entità dichiarata. Esistono svariati tipi di specificatori, con funzioni diverse: li introdurremo via via durante il corso, quando sarà necessario, per ora ne vediamo subito solo due: const e, per ora solo a mo di esempio, extern.

7 Qualificatori e specificatori di tipo Lo specificatore const, indica al compilatore che il contenuto della variabile non può più essere modificato (e, ovviamente, una variabile definita const deve sempre essere inizializzata...). Esempio: const double pigreco = ; L'uso di const è fortemente consigliato rispetto all'alternativa di scrivere più volte la stessa costante nelle istruzioni del programma; infatti se il programmatore decide di cambiarne il valore, e ha usato const, è sufficiente che modifichi la sola istruzione di definizione. In linguaggio informatico, si usa il termine costanti tipicamente proprio per riferirsi a "variabili definite const, distinguendole dalle costanti esplicite" che sono chiamate costanti letterali (dallinglese literals).

8 Qualificatori e specificatori di tipo Lo specificatore extern, indica al compilatore (più propriamente al linker) che la variabile che segue è definita in un altro file del programma (e quindi l'istruzione serve solo ad identificare il tipo della variabile e a permetterne l'utilizzo); Esempio: extern int error_number; In questo caso, la dichiarazione si limita ad informare il compilatore del C++ che un certo identificatore appartiene a un certo tipo, ma non viene considerata in fase di esecuzione del programma. Le dichiarazioni viste finora, invece, comportano anche un'operazione eseguibile: lallocazione di un'apposita area di memoria; queste (tipiche) dichiarazioni sono dette definizioni. (vedremo in seguito il contesto tipico per luso di variabili extern…)

9 Literals Per le variabili (e le costanti), dunque, la specificazione esplicita del tipo stabilisce il modo con cui essa viene codificata e le operazioni che possono essere effettuate con e su di essa. Per le espressioni letterali, invece, il tipo corrispondente viene dedotto dal modo in cui lespressione viene scritta nel codice.

10 Literals +Un numero senza prefissi o suffissi viene interpretato in base decimale e trattato come una costante di tipo int (o unsigned int se la costante specificata è maggiore del massimo numero positivo signed int); +Un numero con prefisso 0 (zero) è interpretato in base ottale e trattato come int (o unsigned int); +Un numero con prefisso 0x o 0X è interpretato in base esadecimale e trattato come int (o unsigned int). Le "cifre" a,b,c,d,e,f possono essere scritte sia in maiuscolo che in minuscolo; +In qualunque caso, la presenza del suffisso L indica che il numero deve essere di tipo long int, mentre la presenza del suffisso U indica che il numero deve essere di tipo unsigned int. Costanti intere

11 Literals Una costante in virgola mobile è sempre indicata in base 10 e può essere specificato in 2 modi: +parte_intera.parte_decimale (il punto è obbligatorio) +notazione esponenziale (il punto non è obbligatorio) Esempi: e2 25E In entrambe le notazioni, se il numero è scritto senza suffissi, è assunto di tipo double. Per forzare il tipo float bisogna apporre il suffisso f (o F). Esempi: 10.3 //tipo double 1.4e-5f //è di tipo float Costanti in virgola mobile

12 Literals Una costante carattere è rappresentata inserendo fra singoli apici un carattere stampabile oppure una sequenza di escape. Esempi: 'A' //carattere A '\n' //carattere newline '\003' //carattere cuoricino In memoria un carattere è rappresentato da un numero intero di 1 byte (il suo codice ascii). Il carattere NULL ha codice ascii 0 e si rappresenta con '\0' (da non confondere con il carattere 0 decimale che ha codice ascii 48). Costanti carattere

13 Literals Una costante stringa è rappresentata inserendo un insieme di caratteri (fra cui anche sequenze di escape) fra doppi apici (virgolette). Esempio: "Ciao a tutti!\n" In C++ (come in C) non esistono le stringhe come tipo intrinseco. Infatti esse sono definite come sequenze (array) di caratteri, con una differenza rispetto ai normali array: il compilatore, nel creare una costante stringa, aggiunge automaticamente un NULL dopo l'ultimo carattere (si dice che le stringhe sono "array di caratteri null terminated"). E quindi, per esempio, 'A' e "A" sono due costanti diverse : 'A //carattere e occupa 1 byte (con il numero 65) "A" //è una stringa e occupa 2 byte (con i numeri 65 e 0) Costanti stringa

14 Definizione con inizializzazione La struttura tipica di una dichiarazione, per riassumere, è la seguente: [specificatore] [qualificatore] tipo identificatore1; in cui le parti fra quadre sono opzionali. Di fatto esiste unulteriore parte opzionale che può essere usata nel caso di una definizione, e consiste nellinizializzazione della variabile dichiarata: [specificatore] [qualificatore] tipo identificatore1 [= valore]; Esempio: unsigned int spese= 45; int ricavi = 23; int guadagno = ricavi – spese;


Scaricare ppt "Tipi di dati elementari Il C (e il C++) è un linguaggio cosiddetto tipato, ovvero: + di ogni variabile deve essere dichiarato il tipo di appartenenza;"

Presentazioni simili


Annunci Google