![]() ![]() |
|
![]() ![]() |
Il tipo di dato boolean (dal matematico
George Boole) comprende due
soli valori: true
e false. Ciò
nonostante, si tratta di un tipo di dati molto importante nella
programmazione, perché permette di dirigere il flusso di esecuzione dei comandi, come vedremo meglio in seguito.
Oltre alle costanti true e false, sono di tipo boolean espressioni più complesse costruite con operatori booleani e/o relazionali (o di confronto). Si noti che in molti linguaggi (anche in C e C++) non esiste un tipo di dati corrispondente: come valori di verità si usano gli interi con opportune convenzioni (ad esempio, il valore 0 rappresenta false e qualsiasi valore diverso da 0 rappresenta true). |
![]() ![]() |
|
![]() ![]() |
Qual è il valore di (true ^ true && false || !true) ?
Suggerimento: data la precedenza degli operatori la formula viene letta come
Note:
|
![]() ![]() |
|
![]() ![]() |
Gli operatori relazionali o
di confronto in Java sono i seguenti:
Tutti questi operatori possono essere applicati a valori numerici di qualsiasi tipo (int, double, char...), con il significato atteso (ad esempio: il confronto di caratteri 'c' < 'f' restituisce true) Gli operatori di uguaglianza e diseguaglianza (== e !=) possono essere applicati a qualunque tipo di dati Java, in particolare ai booleani e a tipi di dato non primitivi che vedremo in seguito e per i quali discuteremo il significato di tali operatori. Gli operatori di confronto hanno precedenza più alta rispetto alle operazioni su booleani (e più bassa rispetto agli operatori aritmetici, che comunque operano su tipi diversi). Si noti che come eredità del C, si usa == per l'uguaglianza invece di = (simbolo di assegnamento).
Attenzione: come si vede nell'ultimo esempio, in generale non ha senso confrontare due valori double con == o con != a causa degli errori di approssimazione: il confronto di (dis)uguaglianza sarebbe meglio farlo a meno di un valore fissato, piccolo a piacere.
|
![]() ![]() |
|
![]() ![]() |
Gli operatori && e
|| sono operatori
lazy
(pigri) o short-cut: valutano il secondo argomento
solo se è necessario.
|
![]() ![]() |
|
![]() ![]() |
In molti algoritmi, l'esecuzione di
uno o più passi può dipendere da certe condizioni (valori
in input, stato della memoria,...). Per controllare l'esecuzione di questi
passi si può usare l'istruzione condizionale if-else.
Vediamone alcuni esempi (la studieremo in dettaglio più avanti).
|
![]() ![]() |
|
![]() ![]() |
Un'espressione booleana esprime già, per sua natura, un valore
di verità: non c'è bisogno di confrontarla con true per stabilire se è vera
e con false per stabilire
se è falsa.
|