Professional Documents
Culture Documents
Il tipo boolean
Un valore boolean rappresenta una condizione di
verit o falsit
Una variabile di tipo boolean pu rappresentare un
valore a due stati
come un interrutore che acceso o spento
Programmazione
Operatori Java
Espressioni booleane
Sono espressioni che riportano un valore di
tipo booleano
Vengono usate principalmente per esprimere
le condizioni in istruzioni di controllo del
flusso
dato > 10
nome_1 < nome_2
(dato < 5) && !finito
AA2005/06
Rosario Culmone
Programmazione
Operatori Java
Espressioni booleane
In particolare sono espressioni in cui compaiono gli
operatori di Java di uguaglianza o relazionali, che
riportano valori booleani
==
!=
<
>
<=
>=
uguale
non uguale
minore
maggiore
minore o uguale
maggiore o uguale
Programmazione
Operatori Java
Operatori logici
Nelle espressioni booleane si possono usare
gli operatori logici
!
&&
||
not
and
or
Programmazione
Operatori Java
!a
true false
false true
AA2005/06
Rosario Culmone
Programmazione
Operatori Java
Programmazione
Operatori Java
Tavole di verit
Una tavola di verit mostra le possibili
combinazioni di termini di valori vero/falso
Poich && e || hanno due operandi
ciascuno, ci sono 4 possibili combinazioni
a
true true
true false
false true
false false
AA2005/06
Rosario Culmone
a && b
a || b
true
false
false
false
true
true
true
false
Programmazione
Operatori Java
AA2005/06
Rosario Culmone
Programmazione
Operatori Java
Espressioni booleane
Gli operatori logici possono essere combinati
per ottenere espressioni booleane complesse
Attenzione, da errore:
if ( 0 < numero < 1000)
if ( car == a || b)
Occorre scrivere:
if ( 0 < numero && numero < 1000)
if (car == a || car == b)
AA2005/06
Rosario Culmone
10
Programmazione
Operatori Java
Metodi predicativi
Un metodo predicativo restituisce un valore di tipo
boolean:
public class ContoBancario {
public boolean eScoperto() {
return this.saldo() < 0
}
}
Esempi predefiniti nella classe Character
isDigit, isLetter, isUpperCase
AA2005/06
Rosario Culmone
11
Programmazione
Operatori Java
Variabili booelane
Qualunque variabile che pu assumere solo
due valori pu essere dichiarata di tipo
boolean
private boolean coniugato;
if (coniugato)
e non
if (coniugato == true)
Si chiamano anche flag
AA2005/06
Rosario Culmone
12
Programmazione
Operatori Java
Tavole di verit
Le espressioni vengono valutate usando le
tavole di verit
(totale < MAX && !trovato)
totale < MAX
totale < MAX trovato !trovato && !trovato
false
false
true
true
AA2005/06
Rosario Culmone
false
true
false
true
true
false
true
false
13
false
false
true
false
Programmazione
Operatori Java
Legge di De Morgan
Espressioni complesse come:
if (!(0<numero && numero<1000))
non vero che 0 < numero e numero < 1000
ovvero numero non compreso tra 1 e 999
possono essere semplificate per essere rese
pi leggibili usando la legge di De Morgan
(1806-1871)
!(a && b) equivale a !a || !b
!(a || b) equivale a !a && !b
AA2005/06
Rosario Culmone
14
Programmazione
Operatori Java
AA2005/06
Rosario Culmone
15
Programmazione
Operatori Java
Ancora su AND e OR
If (d != 0 && n / d>10) System.out.println(n/d);
Si stampa n/d, solo se d != 0; se d == 0 non
deve essere effettuato il calcolo
dellespressione n/d (AND forte &&)
If (d != 0 & n / d >10) System.out.println(n/d);
(AND debole &) se d == 0 non si calcola n/d!
AA2005/06
Rosario Culmone
16
Programmazione
Operatori Java
Ancora operatori
In Java ci sono altri operatori:
Operatori di incremento e decremento
Operatori di assegnamento
Operatori condizionali
AA2005/06
Rosario Culmone
17
Programmazione
Operatori Java
Operatori di incremento e
decremento
Gli operatori di incremento e decremento sono
operatori aritmetici unari
Loperatore di incremento (++) aggiunge 1 al suo
operando
Loperatore di decremento (--) sottrae 1 al suo
operando
Listruzione
cont++;
equivale allistruzione
cont = cont + 1;
AA2005/06
Rosario Culmone
18
Programmazione
Operatori Java
Operatori di incremento e
decremento
Operatori di incremento e decremento
possono essere usati in forma prefissa (prima
della variabile) o in forma postfissa (dopo la
variabile)
Quando si usano soli in una istruzione, le due
forme sono equivalenti.
cont++; equivale a ++cont;
AA2005/06
Rosario Culmone
19
Programmazione
Operatori Java
Operatori di incremento e
decremento
In unespressione, le due forme possono
avere effetti molto diversi
Sempre la variabile viene aumentata o
decrementata
Ma il valore usato nellespressione dipende
dalla forma prefissa o postfissa:
espressione
cont++
++cont
cont---cont
AA2005/06
Rosario Culmone
operazione
sulla variabile
somma 1
somma 1
sottrae 1
sottrae 1
20
valore usato
nellespressione
precedente
nuovo
precedente
nuovo
Programmazione
Operatori Java
Operatori di incremento e
decremento
se cont contiene attualmente il valore 45, allora
totale = cont++;
AA2005/06
Rosario Culmone
21
Programmazione
Operatori Java
Operatori di assegnamento
Spesso eseguiamo operazioni su una
variabile, quindi archiviamo il nuovo risultato
nella locazione della variabile
Alcuni operatori di assegnamento consentono
questo processo
Esempio:
num += cont;
equivale a
num = num + cont;
AA2005/06
Rosario Culmone
22
Programmazione
Operatori Java
Operatori di assegnamento
Gli operatori di assegnamento
operatore
+=
-=
*=
/=
%=
AA2005/06
Rosario Culmone
esempio
x
x
x
x
x
+=
-=
*=
/=
%=
y
y
y
y
y
23
equivale a
x
x
x
x
x
=
=
=
=
=
x
x
x
x
x
+
*
/
%
y
y
y
y
y
Programmazione
Operatori Java
Operatori di assegnamento
Loperando di destra di un operatore di
assegnamento pu essere unespressione
Lespressione di destra viene valutata poi il risultato
opportunamente computato con il precedente valore
della variabile
Nellistruzione
risultato /= (totale-MIN) % num;
24
Programmazione
Operatori Java
Operatore condizionale
Loperatore condizionale valuta una condizione
booleana che determina quale espressione, tra due
possibili, valutare
Il risultato dellespressione selezionata diventa il
risultato delloperatore condizionale
condizione ? Espressione_1 : espressione_2
AA2005/06
Rosario Culmone
25
Programmazione
Operatori Java
Operatore condizionale
Loperatore condizionale simile allistruzione if-else,
tranne che produce il valore di unespressione
maggiore = (num1 > num2) ? num1 : num2;
se num1 maggiore di num2, allora a maggiore
viene assegnato num1 altrimenti num2
Loperatore condizionale un operatore ternario, cio
richiede tre operandi
AA2005/06
Rosario Culmone
26
Programmazione
Operatori Java
Operatore condizionale
System.out.println
(Il resto di " + cont +
(cont == 1) ? lira : lire");
se cont 1, allora si stampa:
Il resto di 1 lira.
Per qualunque altro valore di cont (es.
10), si stampa:
Il resto di 10 lire
AA2005/06
Rosario Culmone
27
Programmazione
Operatori Java
Precedenza operatori
Gli operatori Java hanno una precedenza
assegnata, che occorre conoscere
Tra gli operatori di massima precedenza ci
sono le () per la valutazione dei parametri,
loperatore dot e gli operatori di autoincremento e auto-decremento
Tra quelli di minima ci sono gli assegnamenti
AA2005/06
Rosario Culmone
28
Programmazione
Operatori Java
AA2005/06
Rosario Culmone
29
Programmazione
Operatori Java
operatori postfissi
operatori unari
instanze e cast
aritmetici
aritmetici
di relazione
uguaglianza
AND
OR
condizionale
Assegnamento
AA2005/06
Rosario Culmone
Programmazione
Operatori Java