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