C Tutorial

Tutorial Programmazione C – Approfondimento Variabili

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.

219246

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

Ti piaciono i miei tutorial e progetti? Aiutami a realizzarne altri. Supporta Zamein – Tutorials & Projects su Patreon!

Leave a comment

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *