Ciao a tutti e bentornati!
Quest'oggi inizieremo un percorso che ci porterà a studiare, ed eventualmente ripassare, quelle che sono le basi della programmazione. Inizieremo parlando di variaibli.
Introduzione
Chiunque voglia approcciarsi al mondo della programmazione, si accorgerà ben presto che il coding non è esattamente come ciò che viene mostrato nei film. Non si tratta solo di stampare messaggi su schermo, o meglio, la stampa dei messaggi su schermo è solo la parte finale di un processo ben più complesso che richiede una vera e propia attività artigianale.
In questa serie di articoli, cercheremo di capire quali sono i mattoncini fondamentali di questa attività e soprattutto cercheremo di capire perchè si tratta di un'attività artigianale, nonstante all'apparenza sembri tutt'altro.
Variabili - Definizione
Il primo elemento fondamentale che chiunque deve conoscere per approcciarsi al mondo del coding è la variabile.
Questo è un concetto tanto semplice quanto fondamentale. Volendo dare una prima definizione, per quanto rozza, si potrebbe dire che una variabile è un'entità che muta nel tempo. Detta così potrebbe sembrare una definizione alquanto aleatoria. Cerchiamo di capire meglio.
Partiamo da un esempio
Immaginiamo di dover sviluppare una semplice applicazione per calcolare l'area di un terreno quadrato. Verrà richiesto all'utente di inserire il lato del suo terreno e il programma restituirà su schermo l'area.
Per stampare su schermo, esistono diverse istruzioni fornite dai vari linguaggi, Java nel nostro caso specifico. Il grosso del lavoro consiste nella risoluzione vera e propria del problema.
Il primo problema pratico che ci si presenta è: esiste un modo di salvare il dato che l'utente ci fornisce? La risposta è sì. E' possibile raggiungere questo obiettivo proprio mediante l'uso delle variabili.
Risulta quindi necessario sapere che, ogni dato che il nostro programma usa è salvato in quella che in letteratura viene chiamata memoria primaria, comunemente conosciuta come memoria RAM. Quindi, ogni variabile viene salvata in RAM. E' demandata al programmatore la responsabilità di non riempire inutilmente memoria con dati inutili. Al contempo, dobbiamo sempre chiederci da un lato se la variabile è necessaria, ma dall'altro se la sua rimozione porta vantaggi.
A questo punto, è possibile dare una definizione più raffinata e più attinente al contesto di variabile. Una variabile è quindi una locazione di memoria all'interno della quale vengono letti e scritti dati.
Dichiarazione e inizializzazione di una variabile
A questo punto, dopo una lunga introduzione, possiamo passare alla pratica. Dobbiamo, prima di tutto, capire quali sono le operazioni fondamentali che si effettuano su una variabile.
Dichiarazione
La prima cosa che dobbiamo fare è "comunicare" in qualche maniera al calcolatore che da un certo momento in avanti, intendiamo utilizzare una certa variabile.
Questo è possibile mediante un'operazione che viene detta dichiarazione.
La dichiarazione di una variabile è composta principalmente di due parti. Potremmo definire un prototipo come quello che segue: tipoDato nomeVariabile;
Tipo dato
Analizziamo meglio cos'è un tipo dato.
Il tipo è un termine di classificazione che raggruppa tutte quelle variabili che sono memorizzate nello stesso modo e a cui si applica lo stesso insieme di operazioni.
In matematica, quando definiamo un insieme numerico, definiamo un insieme di operazioni eseguibili su quell'insieme. Pensando all'insieme dei numeri naturali, conosciamo delle operazioni che possiamo eseguire come la somma o la divisione. Sappiamo inoltre che, ad ogni numero di quell'insieme, saranno applicabili le stesse operazioni.
Allo stesso modo, classifichiamo le variabili in una serie di insiemi. Riassumiamo in una tabella quali sono questi insiemi.
|
Tipo |
Q.tà di memoria |
Informazione rappresentata |
|
|
byte |
8 bit |
Variabile con segno e rappresenta valori in un range [-128 e 127] (estremi inclusi) |
|
|
short |
16 bit |
Numeri interi (con segno) in un range [-32768, 32767] |
|
|
int |
32 bit |
Numeri interi (per default con segno, signed) in un range [-231, 231-1] |
|
|
long |
64 bit |
Numeri interi (per default con segno, signed) in un range [-263, 263-1] |
|
|
float |
32 bit |
Numeri in virgola mobile in singola precisione secondo la specifica IEEE 754, utilizzando la rappresentazione segno, mantissa esponente. |
|
|
double |
64 bit |
Numeri in virgola mobile in doppia precisione secondo la specifica IEEE 754. |
|
|
boolean |
Non specificato. basterebbe un solo bit |
rappresenta due valori: true e false |
|
|
char |
16 bit |
Utilizzato per memorizzare caratteri in codifica Unicode nel range ['u0000', 'uffff'](in esadecimale) o equivalentemente [0,65535]. |
Nome della variabile
Nel momento in cui dichiariamo una variabile dovremo anche assegnarle un nome. Questa necessità nasce dal fatto che non possiamo conoscere a priori in quale zona di memoria verrà memorizzato il dato che ci interessa memorizzare. Abbiamo quindi bisogno di avere un alias per fare riferimento ad una specifica posizione di memoria.
Possiamo quindi dare una terza ed ultima definizione di variabile. Una variabile è un riferimento ad una zona di memoria all'interno della quale è memorizzato un dato di interesse.
Inizializzazione
L'inizializzazione delle variabili è la fase preliminare della programmazione in cui assegnano i valori iniziali alle variabili precedentemente dichiarate. L'inizializzazione segue la dichiarazione delle variabili o, in alternativa, può essere effettuata congiuntamente.
Vediamo un esempio.
int var; var = 5;
In questa maniera, dopo aver dichiarato la variabile var, assegnamo il valore 5 alla cella puntata.
In alternativa, l'operazione può essere effettuata congiuntamente alla dichiarazione come segue:
int var = 5;
L'inizializzazione utilizza un operatore che è l'operatore di assegnamento, caratterizzato dal simbolo =.
Operatore di assegnamento
L'operatore di assegnamento è l'operatore con cui si valorizzano le variabili. La cosa fondamentale che va ricordata è che una posizione di memoria può contenere un valore alla volta. E' categoricamente impossibile che una locazione contenga due valori nello stesso istante. Da questo si può dedurre che un assegnamento cancella completamente il valore precedente di quella cella.
A questo punto è d'obbligo dire che, da qui in avanti, farò un uso relativamente improprio di linguaggio. Quando dirò "assegnare un valore ad una variabile" intendo dire "scrivo un valore nella cella di memoria puntata dalla variabile".
Vediamo un esempio.
int a = 0; //la variabile a contiene il valore 0 a = 3; //la variabile a contiene il valore 3 a = 5; //la variabile a contiene il valore 5
Conclusioni
Qui abbiamo dato le definizioni di base, introducendo le operazioni indispensabili da conoscere per poter utilizzare le variabili. Prossimamente vedremo, partendo da un esempio pratico, in che modo è possibile fare uso di questo concetto per sviluppare un'applicazione funzionante.
Per quanto possa sembrare un'introduzione noiosa e inutile, vedremo più avanti come questi concetti risultino davvero fondamentali, non solo per imparare a programmare in Java, ma per programmare nella stragrande maggioranza dei linguaggi.