Espressioni logiche
Nel flusso di esecuzione più semplice di un programma, il computer esegue delle istruzioni in sequenza, che possono essere di input, di output, di calcolo e di valorizzazione di variabili. I programmi che si possono creare con questo tipo di istruzioni sono principalmente di calcolo, anche interattivo con l’utente.
Tuttavia più in generale un programma può avere bisogno di svolgere istruzioni (o gruppi di istruzioni) differenti in base al tipo di problema che deve risolvere. Ad esempio se dobbiamo individuare il più grande di due valori A e B allora dobbiamo eseguire un programma come questo:
- Confronto A con B
- se A > B, allora confronto A è più grande
- se invece non è vero allora B è più grande di A (o uguale ad A)
Come si vede un algoritmo può prendere strade differenti in base ai dati o ai calcoli che deve eseguire.
Per rendere possibile questo sono necessarie istruzioni speciali, dette istruzioni condizionali, ovvero che permettono o meno di svolgere una condizione. Le istruzioni condizionali valutano una espressione, detta espressione logica per decidere in che direzione proseguire il flusso del programma.
Le espressioni logiche sono costrutti che hanno come risultato il valore di vero oppure di falso. Queste espressioni (dette anche Booleane, dal matematico che le introdusse) sono utilizzate per confrontare due o più valori e determinano senza ambiguità se il risultato è vero o falso.
Operatori numerici
Le più semplici espressioni booleane sono quelle numeriche e prevedono degli operatori di confronto specifici che identificano il tipo di confronto:
| Operatore | Significato |
| == | Uguale a |
| != | Diverso da |
| > | Maggiore di |
| < | Minore di |
| >= | Maggiore o uguale a |
| <= | Minore o uguale a |
Esempi:
a == b (vera se a è uguale a b)
a < 3 (vera se a minore di 3)
k == 4 (vera se k è uguale a 4)
c <= 6 (vera se c è minore o uguale a 6).
Operatori booleani
Gli operatori booleani sono usati per confrontare tra loro due espressioni logiche come quelle del paragrafo precedente. Hanno come risultato un valore booleano, quindi VERO o FALSO. Essi sono:
| Operatore | Significato |
| ! | Not logico |
| && | And logico |
| || | Or logico |
Vediamoli in dettaglio.
AND
Detto operatore AND, confronta due condizioni, e ci dice che è vera SOLO se entrambe le condizioni sono vere.
Ad esempio:
a == b AND c == b : vera se a è uguale a b E INOLTRE che c è uguale a b
z < 4 AND z > 1 : vera se z è compreso tra 1 e 4 esclusi
Tabella di verità:
| condizione 1 vera | condizione 1 falsa | |
| condizione 2 vera | VERO | FALSO |
| condizione 2 falsa | FALSO | FALSO |
OR
Detto operatore OR, confronta due condizioni, e ci dice che è vera se anche solo una delle condizioni è vera.
Ad esempio:
a == b OR b == C : vera se a è uguale a b OPPURE se b è uguale a C
z == 0 OR z != 3 : vera se z è uguale a 0 OPPURE diverso da 3
| condizione 1 vera | condizione 1falsa | |
| condizione 2 vera | VERO | VERO |
| condizione 2 falsa | VERO | FALSO |
NOT
Detto operatore NOT, si usa per negare la condizione successiva (se falsa diventa vera, se vera diventa falsa).
Ad esempio:
NOT(x > 3): vera solo se x minore o uguale a 3;
NOT(x != 3): vera solo se è uguale a 3
è quindi possibile creare if contenenti espressioni ed operatori:
Precedenze
Occorre fare attenzione alle regole di precedenza:
- Prima vengono le parentesi
- Poi vengono gli operatori di confronto
- Infine gli operatori booleani
- Tra i booleani l’ordine è NOT (!), AND (&&), OR (||)
Esempi:
A > B OR B < C AND B < D
(A > B OR B < C) AND B < D
Nel primo esempio vengono valutati prima l’AND e poi L’OR. Nel secondo esempio, siccome ci sono le parentesi vengono valutati prima l’OR e poi l’AND.
