| Guida Linguaggio C: Le Costanti, i Tipi, le Variabili | |||
18 Novembre 2007 |
C
|
||
Introduzione
Un identificatore è un nome che viene associato a diverse entità come costanti, tipi, variabili, funzioni, ecc. e serve ad identificare la particolare entità. L'identificatore sarà poi sostituito dall'indirizzo della variabile o della costante o della funzione.Gli identificatori in C devono soddisfare determinati vincoli. Un identificatore deve iniziare con un carattere o con il simbolo '_' (underline), e può contenere solo lettere, numeri e il simbolo underline.
Esempio
int a, _a, a2; // identificatore correttochar 2b; //identificatore non corretto
Le Costanti
Una costante è un identificatore a cui è associato un valore che resterà fisso per tutta la durata dell'esecuzione del programma. A differenza di una variabile, il cui valore può variare più volte durante l'esecuzione del programma la costante mantiene inalterato il suo valore.Vi sono due modi per dichiarare una costante: utilizzare la const o utilizzare la direttiva al preprocessore DEFINE. Nel primo caso si associa all'identificatore il valore, la costante viene vista come una variabile con un valore fisso, nel secondo caso il compilatore andrà a sostituire, in fase di compilazione, a tutte le occorrenze dell'identificatore il valore associato.
In sostanza, definendo una costante tramite la const il compilatore farà sì (inserirà del codice) che in fase di esecuzione vi sarà una locazione di memoria relativa alla costante in cui sarà presente il valore associato alla costante. Definendo una costante tramite la DEFINE il compilatore sostituirà a tutte le occorrenze dell'identificatore il valore associato, in questo modo non vi sarà alcuna locazione di memoria associata alla costante ed il valore sarà inserito direttamente all'interno del codice.
La definizione di costante, tramite la const, avrà la seguente forma
const tipo id = valore;
dopo la parola chiave const si indicherà il tipo della costante, l'identificatore e quindi il valore.
Esempio
Alcuni esempi di dichiarazioni di costanti sono le seguenti
Le prime due dichiarazioni di costanti sono banali dichiarazioni di un intero e di un carattere. Da notare come un carattere viene indicato tra apice singolo ('a').
Particolarmente interessante è vedere come viene dichiarato un array di caratteri. In C il tipo stringa non esiste, a differenza del C++, quindi le stringhe vengono gestite tramite gli array di caratteri.
Una costante stringa può essere dichiarata in due modi, come indicato in riga 4, indicando la stringa per esteso racchiusa tra doppi apici, oppure come in riga 5, carattere per carattere ciascuno racchiuso tra apici singolo. Nel primo caso il compilatore di assegnare correttamente il valore alla costante.
Da notare inoltre che in quelle dichiarazioni non si è inserita la dimensione dell'array. Non è necessario, sarà sempre il compilatore a sistemare le cose.
Un array di costanti può essere dichiarato in due modi, specificando, come in riga 8, o non specificando, come in riga 7, la dimensione dell'array. Tutti gli elementi dell'array sono racchiusi tra parentesi graffe e ciascun elemento è separato da una virgola.
Tutti gli elementi non specificati nella definizione di array di costanti intere, come in riga 9, sono automaticamente fissati a 0. Nell'esempio in riga 9 l'array e3 sarà costituito dai seguenti elementi: 1 e 2, specificati, e 0, non specificato.
Una matrice di costanti può essere dichiarata specificando, come in riga 11, o non specificando, come in riga 10, la dimensione dell'array esterno. Tutti gli elementi dell'array sono racchiusi tra parentesi graffe e ciascun elemento è separato da una virgola. In questo caso ciascun elemento è a sua volta un array, quindi l'elemento sarà costituito da elementi racchiusi tra parentesi graffe e separati dalle virgole.
Un numero intero può essere espresso in decimale, binario, ottale ed esadecimale. Un numero con lo 0 come prima cifra è interpretato come un numero espresso in base ottale, un numero con il prefisso "0x" o "0X" è interpretato come un numero espresso in base esadecimale, un numero con
Un costante reale può essere definita in due modi, usando solo la parte intera e la parte frazionaria, come in riga 18, o usando la notazione esponenziale, come in riga 19.
Alcuni esempi di dichiarazioni di costanti sono le seguenti
const int a = 1;const char b = 'a';const char[] c = "Stringa";const char[] d = ('S', 't', 'r', 'i', 'n', 'g', 'a');const int e[] = {1, 2, 3};const int e2[3] = {1, 2, 3};const int e3[3] = {1, 2};const int f[][2] = {{1, 2}, {3, 4}, {5, 6}};const int f2[3][2] = {{1, 2}, {3, 4}, {5, 6}};const int g = 23; //numero 23 in decimaleconst int h = 027; //numero 23 in ottaleconst int i = 0x17; //numero 23 in esadecimaleconst float k = 23.47;const float l = 2.347e1;
Le prime due dichiarazioni di costanti sono banali dichiarazioni di un intero e di un carattere. Da notare come un carattere viene indicato tra apice singolo ('a').
Particolarmente interessante è vedere come viene dichiarato un array di caratteri. In C il tipo stringa non esiste, a differenza del C++, quindi le stringhe vengono gestite tramite gli array di caratteri.
Una costante stringa può essere dichiarata in due modi, come indicato in riga 4, indicando la stringa per esteso racchiusa tra doppi apici, oppure come in riga 5, carattere per carattere ciascuno racchiuso tra apici singolo. Nel primo caso il compilatore di assegnare correttamente il valore alla costante.
Da notare inoltre che in quelle dichiarazioni non si è inserita la dimensione dell'array. Non è necessario, sarà sempre il compilatore a sistemare le cose.
Un array di costanti può essere dichiarato in due modi, specificando, come in riga 8, o non specificando, come in riga 7, la dimensione dell'array. Tutti gli elementi dell'array sono racchiusi tra parentesi graffe e ciascun elemento è separato da una virgola.
Tutti gli elementi non specificati nella definizione di array di costanti intere, come in riga 9, sono automaticamente fissati a 0. Nell'esempio in riga 9 l'array e3 sarà costituito dai seguenti elementi: 1 e 2, specificati, e 0, non specificato.
Una matrice di costanti può essere dichiarata specificando, come in riga 11, o non specificando, come in riga 10, la dimensione dell'array esterno. Tutti gli elementi dell'array sono racchiusi tra parentesi graffe e ciascun elemento è separato da una virgola. In questo caso ciascun elemento è a sua volta un array, quindi l'elemento sarà costituito da elementi racchiusi tra parentesi graffe e separati dalle virgole.
Un numero intero può essere espresso in decimale, binario, ottale ed esadecimale. Un numero con lo 0 come prima cifra è interpretato come un numero espresso in base ottale, un numero con il prefisso "0x" o "0X" è interpretato come un numero espresso in base esadecimale, un numero con
Un costante reale può essere definita in due modi, usando solo la parte intera e la parte frazionaria, come in riga 18, o usando la notazione esponenziale, come in riga 19.
La definizione di costante, tramite la DEFINE, avrà la seguente forma
#DEFINE id valore;
dopo la direttiva DEFINE si indicherà l'identificatore della costante e quindi il valore.
Esempio
#DEFINE a 12;#DEFINE b 'z';#DEFINE c "Stringa";#DEFINE d 45.234;
Guida Linguaggio C
- Introduzione
- Direttive
- Costanti, Tipi, Variabili
- Operatori
- L'Input
- L'Output
- Controlli
- Funzioni
- Array
- Puntatori
- Stringhe
- I File
- L'Input da File
- L'Output su File

18 Novembre 2007