Tutorial Programmazione C - Approfondimento Variabili
 
http://www.simonesilini.eu/?p=378http://www.simonesilini.eu/?p=378

Buongiorno a tutti.



Come promesso eccovi l’approfondimento sulle variabili in C.





Introduzione


In C na variabile è un nome utilizzato per fare riferimento ad alcune

locazioni di memoria destinate a contenere un valore che il programma

utilizza per assolvere al proprio scopo.



Si tratta di un astrazione che ci permette di non preoccuparci delle

variabili come dei supporti fisici utilizzati per contenerli, nè delle

specifiche tecniche necessarie a codificare i valori. E’ perciò, a mio

avviso, utile sfruttare fino in fondo l’astrazione e considerare le

variabili come scatole, all’interno delle quali andiamo a mettere dei

valori che ci servono, in modo che quando questi valori ci serviranno ci

basterà prendere la scatola, anzi, sarà sufficiente chiamare il nome

che le abbiamo assegnato e il valore contenuto ci verrà servito. Inoltre

il valore memorizzato nelle variabili è modificabile, può essere

utilizzato all’interno delle espressioni e addirittura si può evocare

una variabile, utilizzarne il valore per un operazione e immagazzinare

il risultato nella variabile stessa, ad esempio:





int a = 5; //creo una variabile chiamata 'a' di tipo integer e le assegno il valore 5



a = a + 3; //con questa operazione dico che la variabile a ora conterrà il vecchio valore di a + 3






C è un linguaggio strongly typed, quindi quando si crea una variabile

è necessario segnalare al compilatore il tipo di dato che verrà

contenuto all’interno della variabile. Questo, per quando possa far

apparire il linguaggio meno flessibile rispetto ad altri linguaggi, come

ad esempio python, dove il compilatore deduce da solo il tipo di dato

memorizzato all’interno della variabile, garantisce, secondo me, uno

stile più ordinato, permettendo inoltre al compilatore di effettuare

operazioni di ottimizzazione che permettono di rendere il codice più

efficiente.



Per fare ciò è necessario eseguire una specifica operazioni chiamata

dichiarazione, con la quale si crea la variabile assegnandole un nome e

specificando il tipo di dato che in essa verrà contenuto.



Ecco un esempio di dichiarazione:





int numero; //crea una variabile, chiamata numero, e segnala al compilatore che la variabile conterrà valori di tipo integer;



char lettera; //crea una variabile, chiamata lettera, e segnala al compilatore che la variabile conterrà valori di tipo char






E’ anche possibile dichiarare più variabili dello stesso tipo separando i nomi con una virgola:





int numeroA, numeroB, numeroC; //creo tre variabili di tipo integer






Una volta dichiarata una variabile è necessario assegnarle un valore.

Molti compilatori, all’atto di dichiarazione di una variabile, la

inizializzano automaticamente con dei valori predefiniti, ma questo non

vale in assoluto per tutti i compilatori e se questa operazione non

viene eseguita la variabile contiene comunque dei valori, detti valori

garbage, che sono dati dall’interpretazione dei valori casuali che erano

memorizzati in quel blocco di memoria quando questo è stato assegnato

alla variabile. Per questo motivo è considerata buona pratica di

programmazione inizializzare manualmente le variabili assegnando loro un

valore attraverso l’operatore ‘=’.



Questa operazione si può fare in due modi:





int numero; //creo la variabile numero, di tipo integer



numero = 0; //inizializzo la variabile numero ad un valore di default.



int secondoNumero = 0; //Creo la variabile secondo numero, di tipo integer, e la inizializzo con il valore 0.





Si può anche assegnare ad una variabile il valore di un’altra variabile:





int unNumero = 0; //creo la variabile unNumero, di tipo integer, e la inizializzo con il valore 0



int unAltroNumero = unNumero; //creo la variabile unAltroNumero, di tipo

integer, e la inizializzo con il valore contenuto nella variabile

unNmero






Si possono anche concatenare operazioni per assegnare lo stesso valore a più variabili:





int a, b, c, d; //creo le variabili a, b, c e d, di tipo integer



a = b = c = d = 0; //assegno a tutte le variabili contemporaneamente il valore 0






Regole per i nomi


In C i nomi delle variabili possono essere composti da numeri, lettere

maiuscole, lettere minuscole e il carattere underscore “_”.



I nomi delle variabili non devono cominciare con un numero, non devono

contenere spazi, non essera parole riservate, vale a dire specifiche

parole che il per compilatore hanno un particolare significato, come ad

esempio int. La lista completa delle parole riservate la potete trovare

qui

.



Tipi di dato


In C esisto solamente quattro tipi base: int, char, float, double, analizziamoli uno per volta.



char


Il tipo char occupa 1 byte ed è in grado di rappresentare un signolo

carattere dal set di caratteri dell’esecutore. In realtà una variabile

char ospita un valore numerico intero compreso tra -127 e + 127, che

viene collegato alla tabella ASCII per ottenere un carattere. Può anche

contenere caratteri speciali come ad esempio ‘\n’ (carattere di nuova

linea). Una variabile di tipo char può sia essere inizializzata

assegnandole un litterale carattere, vale a dire il carattere racchiuso

tra apici, come ad esempio ‘a’; oppure può essere inizializzata

assegnando il valore in codice ASCII della lettera, o del simbolo, che

si vuole memorizzare. ATTENZIONE!! Questo secondo metodo ve l’ho

indicato per questione di completezza, ma è altamente sconsigliato;

anzi, è considerata una cattiva pratica di programmazione. Questo

principalmente per ragione di leggibilità e chiarezza del codice.

Un’unica postilla, talvolta può far comodo utilizzare una variabile char

per ospitare non un carattere ma un piccolo numero.



int


Il tipo Integer è il più semplice e probabilmente il più utilizzato.

Questo tipo di variabili serve per ospitare numeri interi che occupano

uno spazio di 16 bit(2 byte), possono quindi andare da -32768 a +32767.



Possono essere utilizzati alcuni modificatori chene modificano i byte a

disposizione e quindi le dimensioni dei numeri che possono essere

ospitati all’interno delle variabili. Alla fine del capitolo sui tpi di

dato troverete l’immagine con tutti i valori e i modificatori.



float


IL tipo float, in italiano “in virgola mobile”, è pensato per ospitare

numeri reali, o per essere corretti al massimo, un’adeguata

approssimazione di numeri reali. In C un letterale con virgola è sempre

interpreatato come un double, a meno che non sia espressamente indicato

il suffisso f o F, ad indicare al compilatore che lo si vuole

interpretare come un numero a precisione singola, e quindi più leggero.

Solitamente si utilizza il float solo nel caso in cui siano necessarie

tantissime variabili e le risorse del sistema in uso siano limitate.



double


Simile nel concetto al tipo float ha però il doppio dei byte a

disposizione e di conseguenza una precisione molto superiore, si passa

infatti da 6 a 15 cifre di accuratezza.





Vi consiglio di consultare la pagina wikibooks in cui si trattano le variabili di C, potete trovare a questo indirizzo: Wikibooks.



Vi consiglio inoltre di approfondire il concetto di scope, leggendo questo articolo