Le Variabili del linguaggio JAVA
Una variabile è una locazione di memoria, accessibile tramite un nome scelto dal programmatore, in cui è contenuto un valore.
Questo valore, solitamente impostato su un valore di default all'avvio, può essere variato durante l'esecuzione del programma.
I nomi delle variabili possono essere composti da lettere maiuscole e minuscole, numeri e caratteri di sottolineatura ("_").
Non è possibile invece includere spazi o altri caratteri speciali nella definizione del nome di una variabile.
Tutte le variabili, prima di essere utilizzate devono essere dichiarate ed inizializzate.
La dichiarazione di una variabile consiste nel sceglierne nome e tipo, che rimarranno inalterati durante l'esecuzione del programma.
Per quanto riguarda il nome abbiamo già indicato come procedere.
Il tipo invece indica cosa la variabile dovrà rappresentare e quindi il tipo di dati che verranno in essa memorizzati.
Il concetto di tipo di dato è particolarmente importante, non solo in Java, ma in tutto il mondo dell'informatica.
Generalmente si è soliti distinguere tra tipi atomici, o semplici e tipi strutturati. Anche per quanto riguarda Java si potrebbe fare una distinzione analoga. Per ora andiamo ad elencare e descrivere i tipi semplici.





Le variabili: il tipo int
Si tratta di numeri interi positivi, negativi o pari a zero, ma senza la parte decimale. La dichiarazione ed inizializzazione di un numero intero avviene secondo la seguente sintassi:

int nomeVariabile = ValoreIntero;
dove int è la parola chiave utilizzata in Java per definire il tipo intero, nomeVariabile è il nome che abbiamo scelto per la variabile, ValoreIntero deve essere sostituito con un numero compatibile con il tipo indicato (cioè un numero positivo, negativo o zero).
Le operazioni di dichiarazione e inizializzazione possono essere fatte anche in due momenti differenti. Ad esempio è possibile scrivere:

int nomeVariabile;
nomeVariabile = ValoreIntero;
ottenendo esattamente lo stesso risultato. Non è possibile eseguire un´operazione con una variabile che non sia stata inizializzata. Ad esempio sarebbe errato scrivere:

int nomeVariabile1;
int nomeVariabile2 = 1;
nomeVariabile2 = nomeVariabile1 + 5;
in quanto stiamo cercando di utilizzare la variabile nomeVariabile1 senza averla inizializzata, quindi non sarebbe possibile definire il risultato dell'operazione di addizione che compare nella terza riga.
Un programma contenente istruzioni del genere provoca un errore in fase di compilazione. E' corretto invece scrivere:

int nomeVariabile1;
int nomeVariabile2 = 1;
nomeVariabile1 = nomeVariabile2 + 5;
Infatti nomeVariabile2 ha valore definito, quindi l'operazione eseguita consiste nell'inizializzazione della variabile nomeVariabile1 a 6.
Per eseguire operazioni con numeri interi utilizzeremo gli operatori matematici classici, ossia +, -, * e /, che indicano rispettivamente le operazioni di addizione, sottrazione, moltiplicazione e divisione.
Fate attenzione all'uso dell'operatore di divisione (/), infatti, trattandosi di operazioni tra numeri interi, verrà scartata la parte decimale. Ad esempio il seguente codice:

int dividendo = 7;
int divisore = 2;
int quoziente;
quoziente = dividendo / divisore;
System.out.println (quoziente);
Fornirà come output il numero 3, in quanto la parte decimale (0.5) viene scartata. Per accedere all'informazione sul resto si può far uso dell´operatore di modulo, indicato dal simbolo "%", come evidenziato nel seguente esempio:

int dividendo = 7;
int divisore = 2;
int quoziente;
int resto;
quoziente = dividendo / divisore;
resto = dividendo % divisore;
System.out.println (quoziente);
System.out.println (resto);
Il cui output sarà il risultato della divisione ed il resto, cioè 3 e 1.
Fate attenzione a come viene utilizzato il carattere " (virgolette) all'interno del codice. Tutto il testo che compare all'interno delle virgolette è considerato testo statico (una costante), mentre quello che non compare tra virgolette, quando non fa parte della sintassi del linguaggio, è considerato una variabile. Il seguente esempio evidenzia quanto detto.

int var1 = 3;
System.out.print("La variabile var1 contiene il valore: ");
System.out.println(var1);
System.out.print("La variabile var1 contiene il valore: ");
System.out.println("var1");
l'output del programma sarà:

La variabile var1 contiene il valore: 3
La variabile var1 contiene il valore: var1
La prima linea di output è quella esatta. Nella seconda riga invece il nome della variabile compare tra virgolette e quindi non viene sostituito con il valore in essa contenuto. Questo perché Java, come abbiamo già detto, considera tutto ciò che compare tra virgolette una costante.
Ricordiamo ancora che Java è un linguaggio case-sensitive, ovvero distingue tra lettere maiuscole e lettere minuscole. Se ad esempio scrivete:

int var1 = 3;
System.out.print("La variabile var1 contiene il valore: ");
System.out.println(Var1);
verrà visualizzato un errore in fase di compilazione in quanto Java non riconosce la variabile Var1 (scritta con la "V" al posto della "v").
A proposito delle lettere maiuscole e minuscole esistono delle convenzioni di cui parleremo in seguito che è opportuno rispettare al fine di rendere il proprio codice più leggibile. Per ricordate che in nomi delle variabili solitamente sono scritti con lettere minuscole.





Le variabili: il tipo double
Sono numeri con una parte intera ed una parte decimale. Spesso vengono indicati con il nome di numeri in virgola mobile, in quanto il sistema li rappresenta tramite una serie di cifre significative a cui si aggiunge l'informazione sulla posizione della virgola che separa la parte intera da quella decimale. La dichiarazione ed inizializzazione di un numero di tipo double avviene tramite un'istruzione analoga a quella trattata nel caso dei numeri interi:

double numeroDouble = ValoreDouble;
dove double indica il tipo della variabile chiamata numeroDouble, mentre ValoreDouble deve essere sostituito con un numero compatibile con il tipo specificato. Anche in questo caso l'istruzione di dichiarazione e di inizializzazione possono essere divise in due istruzioni diverse:

double numeroDouble;
numeroDouble = ValoreDouble;
sempre con il vincolo che la variabile non venga utilizzata prima di essere inizializzata. Per eseguire operazioni con numeri in virgola mobile utilizzeremo gli operatori matematici classici, ossia +, -, * e /, che indicano rispettivamente le operazioni di addizione, sottrazione, moltiplicazione e divisione.
A differenza di quanto succede con i numeri interi, questa volta non viene persa l'informazione sulla parte decimale.

double dividendo = 7;
double divisore = 2;
double quoziente;
quoziente = dividendo / divisore;
System.out.println (quoziente);
Fornirà come output il risultato corretto della divisione: 3.5
Il nome double deriva dal fatto che i numeri appartenenti a questo tipo sono considerati a doppia precisione. Il termine doppia precisione si riferisce al numero di cifre significative utilizzate per la loro rappresentazione. Questo li distingue dai numeri di tipo float, che pur rappresentando sempre numeri in virgola mobile usano una rappresentazione interna con un numero inferiore di cifre significative.
Le cifre significative utilizzate per rappresentare un numero float sono sette se pensiamo alla rappresentazione decimale, o ventitrè se utilizziamo quella binaria. Per tutto il resto numeri di tipo float e double sono analoghi. Nello sviluppo di applicazioni sceglieremo quale tipo utilizzare in base alla precisione richiesta, tenendo conto del fatto che un numero a doppia precisione, ovviamente, occupa il doppio dello spazio in memoria occupato da un numero a singola precisione.
Esistono anche altri tipi di dati tramite i quali possono essere rappresentati numeri particolarmente grandi o piccoli. In questa sede ci limiteremo a nominarli.

Numeri interi:
long [-9.223.372.036.854.775.808; +9.223.372.036.854.775.807]
int [
short [-32768; +32768]
BigInteger
Numeri con cifre decimali:
Double
Float
BigInteger

BigInteger e BigDecimal sono due classi definite nel pacchetto java.Math.
Facendo uso di questi numeri, sostanzialmente non abbiamo limiti sulla grandezza e/o precisione dei numeri rappresentabili, tuttavia ogni operazione matematica richiede un tempo di elaborazione piuttosto lungo.
Le operazioni con questi oggetti non vengono eseguite con gli operatori matematici classici, ma si farà uso di funzioni.




Pagina Successiva