Corso di Laurea in Biotecnologie
Informatica
(Programmazione)
Espressioni aritmetiche e
cast dei dati numerici
Anno Accademico 2009/2010
1
Espressioni aritmetiche
Un’espressione aritmetica è una combinazione di
operandi che sono numeri (interi o decimali), di
operatori aritmetici e di parentesi tonde. La
tabella nella slide successiva riporta gli operatori
aritmetici per:
1. somma (operatore binario)
2. sottrazione (operatore binario)
3. moltiplicazione (operatore binario)
4. divisione (operatore binario)
5. modulo (operatore binario)
6. negazione aritmetica (operatore unario)
2
Operatori aritmetici
Operazione
Simbolo
Java
Uso
Significato
Somma
+
op1+op2
Somma il valore di op1 a
quello di op2
Sottrazione
-
op1-op2
Sottrae il valore di op2 a
quello di op1
Moltiplicazione
*
op1*op2
Moltiplica il valore di op1
con quello di op2
Divisione
/
op1/op2
Divide il valore di op1 con
quello di op2
op1%op2
Calcola il resto della
divisione intera tra op1 e
op2, dove op1 e op2 sono
operandi interi
-op1
Trasforma il valore di op1
nel corrispondente di segno
opposto
Modulo
Negazione
aritmetica
%
-
NB: op1 e op2 sono due generici operandi numerici (interi o decimali)
3
Operatori aritmetici
Ad esempio il seguente codice:
int x, y, z;
x=3;
y=10;
z=y%x;
System.out.println(z);
z=-x;
System.out.println(z);
stampa:
1
-3
4
Precedenze tra operatori aritmetici
Più operatori aritmetici possono essere
combinati in espressioni aritmetiche
complesse. Essi hanno una precedenza che
determina l’ordine in cui vengono valutati
(cioè eseguiti). Gli operatori con la stessa
precedenza vengono valutati procedendo
da sinistra a destra dell’espressione.
L’ordine di precedenza può essere
modificato utilizzando le parentesi tonde.
5
Precedenze tra operatori aritmetici
Elenco degli operatori aritmetici (appena
visti) in ordine di precedenza
decrescente:
1. negazione aritmetica 2. moltiplicazione *, divisione /, modulo %
3. somma +, sottrazione –
6
Precedenze tra operatori aritmetici
Gli operatori aritmetici di moltiplicazione,
divisione e modulo hanno quindi la precedenza
sugli operatori aritmetici di somma e
sottrazione; l’operatore di negazione aritmetica
ha la precedenza su tutti. Nei due esempi
seguenti:
a+b+c+d  prima viene valutata a+b, poi si aggiunge ad
a+b il valore di c e poi si aggiunge ad a+b+c il valore di d
a+b*c+d%e/f  prima viene valutata b*c, poi d%e,
e il risultato di d%e viene diviso per f. In seguito viene
sommato il contenuto di a al risultato di b*c. Infine al
risultato di a+b*c viene aggiunto il risultato di d%e/f.
7
Il cast dei dati
Si è in precedenza detto che il valore da assegnare ad
una variabile deve essere dello stesso tipo primitivo
usato nella sua dichiarazione. Cosa succede invece se
si tenta di assegnare ad una variabile, di un
determinato tipo primitivo, un valore di tipo diverso?
 Avviene una conversione di tipo, cioè avviene il cosiddetto
cast. Considerando i soli tipi primitivi numerici (byte, short,
int, long, float, double) si può avere un cast:
 implicito  se avviene automaticamente senza “forzatura”
da parte del programmatore, in quanto la conversione non
comporta perdita di informazione
 esplicito  se avviene ad opera del programmatore che
forza la conversione anche a costo di una perdita di
informazione
8
Il cast dei dati
Il cast implicito avviene automaticamente quando
ad una variabile di tipo “più alto” viene assegnato
un valore di tipo “più basso”. Ad esempio:
float f;
int x=10;
f=x;
Il valore di x (10) viene automaticamente
convertito in floating point  10.0 e quindi
assegnato alla variabile f
I tipi primitivi numerici possono essere ordinati dal
“più basso” al “più alto” nel modo seguente:
byte  short  int  long  float  double
9
Il cast dei dati
Il cast esplicito è richiesto quando si vuole assegnare
a una variabile di tipo “più basso” un valore di tipo “più
alto”. Basta specificare tra parentesi tonde, davanti al
valore, il tipo primitivo della variabile a cui assegnare
tale valore. Ad esempio:
int x;
double d=3.6;
x=(int)d;
Il valore di d (3.6) viene “a forza” convertito in intero
 3 e quindi assegnato alla variabile x
I tipi primitivi numerici possono essere ordinati dal
“più basso” al “più alto” nel modo seguente:
byte  short  int  long  float  double
10
Scarica

ExprAritmeticheCast