Un Approccio a Java: Le Variabili

by Alessio Mungelli Date: 21-09-2020 programmazione coding variabili corso spiegazione definizioni base


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 è . 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.

 
by Alessio Mungelli Date: 21-09-2020 programmazione coding variabili corso spiegazione definizioni base visite : 553  
 
Alessio Mungelli

Alessio Mungelli

Computer Science student at UniTo (University of Turin), Network specializtion, blogger and writer. I am a kind of expert in Java desktop developement with interests in AI and web developement. Unix lover (but not Windows hater). I am interested in Linux scripting. I am very inquisitive and I love learning new stuffs.

 
 
 

Articoli correlati

Un approccio a Java: Il ciclo while

Ciao a tutti e bentornati! Dopo aver fatto una breve, ma corposa, introduzione sui cicli, andiamo oggi a vedere finalmente le prime implementazioni che utilizzano quello che abbiamo definito ciclo precondizionale. In Java, come…

Un approccio a Java: I cicli - Introduzione

Ciao a tutti e bentornati! Sino ad ora, abbiamo parlato di variabili e di strutture di selezione, andando a considerare alcuni degli aspetti fondamentali di questi due concetti. Teoricamente, per…

Un approccio a Java: operatori booleani

La volta precedente, abbiamo ampiamente parlato delle variabili booleane, cercando di delineare quali siano le principali operazioni che si possono effettuare proprio a livello pratico.  Di tutti i casi esaminati, non abbiamo…

Un approccio a Java: le variabili booleane

Ciao a tutti e bentornati! La volta precedente, ho fatto un'introduzione alle strutture condizionali, definendo il loro funzionamento. Prima di poter dare qualche esempio pratico, è necessario chiarire in che modo ci…

Un approccio a Java: strutture condizionali

Ciao a tutti e bentornati! Le volte precedenti abbiamo introdotto il concetto di variabile, tentando di definire alcuni concetti basilari a riguardo.  Alcune situazioni fanno però intuire come il solo concetto…

Un approccio a Java: Le variabili - caso d'uso

Ciao a tutti amici e bentornati! Dopo l'introduzione fatta sulle variabili, cerchiamo di analizzare alcune criticità che si possono presentare in situazioni alquanto comuni. Partiamo quindi analizzando degli esempi pratici.  Esempio 1: divisione…

Hashmap con Concatenamento: hashing, collisioni e prime funzioni

Oggi andremo a vedere dei concetti strettamente legati alle hashmap. I concetti che andremo a vedere sono quelli di hashing e collisioni. Hashing L'idea dell'hashing con concatenamento è quella di creare una sorta di array di…

Hashmap con concatenamento: liste di trabocco

In questa breve serie di articoli andremo a vedere com'è possibile realizzare in C la struttura dati Hashmap. Nell'implementazione andremo ad usare le liste doppiamente concatenate come strutture dati ausiliarie. Andiamo…

Linux per Principianti: I permessi

Nei precedenti articoli abbiamo fatto una breve introduzione al mondo Unix e nell'articolo successivo abbiamo parlato di comandi base per la gestione del file system. Oggi andremo a parlare di permessi. Come esempio prenderemo sempre…

Linux Per Principianti: Terminale Ubuntu

Ho introdotto nell'articolo precedente, consultabile qui, i concetti base relativi al mondo del pinguino. Oggi andiamo a vedere alcune operazioni di base che si possono svolgere mediante linea di comando su…

Linux per Principianti: Introduzione

Se hai pensato di migrare da Windows a un sistema operativo Unix, o Linux nello specifico ci sono cose che dovresti sapere. L'obiettivo è quello di dare le informazioni essenziali…

Java Strutture Dati: Liste Concatenate

Con il 2020 andiamo ad esaminare un nuovo aspetto della programmazione: le strutture dati. Spesso capita a tutti di utilizzare strutture messe a disposizione dai vari linguaggi di programmazione. L'obiettivo sarà…