- Saper utilizzare l'operatore OR per gestire scenari con molteplici opzioni valide.
- Comprendere la differenza tra inclusività (OR) ed esclusività (AND).
- Implementare controlli di errore e menu interattivi che accettano diverse varianti di input.
L'operatore logico OR, rappresentato dal simbolo || (pipe), è l'operatore della "possibilità". A differenza dell'AND, esso è molto più permissivo: restituisce Vero (true) se almeno una delle condizioni collegate è vera.
Pensa all'OR come a un ufficio con due entrate: puoi entrare dalla porta A OPPURE dalla porta B. Se una delle due è aperta, sei dentro!
Sintassi e Tabella di Verità
if (condizione1 || condizione2) {
// Questo codice viene eseguito se ALMENO UNA delle due è vera
}
| A | B | A || B |
|---|---|---|
| Vero | Vero | Vero |
| Vero | Falso | Vero |
| Falso | Vero | Vero |
| Falso | Falso | Falso |
Gestione delle Alternative: L'Input Flessibile
Uno degli usi più comuni dell'OR è permettere all'utente di inserire comandi in modi diversi, ad esempio accettando sia lettere maiuscole che minuscole o diversi codici per la stessa operazione.
if (scelta == 1 || 2). Il computer lo interpreterà sempre come vero! La sintassi corretta richiede di ripetere la variabile: if (scelta == 1 || scelta == 2).
La Disgiunzione: Il concetto di "Insiemi Distinti"
A differenza dell'AND, l'operatore || si usa quando dobbiamo gestire due o più intervalli diversi che non si toccano tra loro.
Immagina di voler concedere uno sconto ai bambini (0-10 anni) e agli anziani (over 70). Questi sono due "pezzi" di retta numerica separati. L'OR funge da ponte tra questi due insiemi:
- Intervallo A: Età < 10
- Intervallo B: Età > 70
In C++ scriviamo: if (eta < 10 || eta > 70). Se il numero cade nel primo OPPURE nel secondo insieme, la condizione è soddisfatta.
- L'AND cerca dove i due insiemi si sovrappongono (intersezione).
- L'OR somma i due insiemi (unione).
LABORATORIO AVANZATO
Integrazione OR e Controllo Flusso
1 Esercizio: Sistema di Uscita e Conferma
Molti programmi chiedono conferma prima di chiudersi. L'OR ci permette di intercettare diverse risposte valide dell'utente ('s' o 'S' per sì, 'n' o 'N' per no).
#include <iostream>
using namespace std;
int main() {
char conferma;
cout << "\t--- CHIUSURA SISTEMA ---\n";
cout << "Vuoi davvero uscire? (s/n): ";
cin >> conferma;
if (conferma == 's' || conferma == 'S') {
cout << "\n\tArrivederci! Chiusura in corso...";
} else if (conferma == 'n' || conferma == 'N') {
cout << "\n\tOperazione annullata. Restiamo nel programma.";
} else {
cout << "\n\tInput non riconosciuto.";
}
return 0;
}
2 Esercizio in autonomia: Agevolazioni Trasporto Pubblico
Un'azienda di trasporti offre viaggi gratuiti a chiunque appartenga a una categoria protetta.
- Menu Scelte: L'utente sceglie tra: 1. Biglietto Singolo, 2. Abbonamento.
- Logica OR: Se il biglietto è "Singolo", il costo è 0€ (Gratis) se:
- L'utente ha un'età inferiore a 6 anni OPPURE superiore a 75 anni.
- In tutti gli altri casi, il costo è 1.50€.
- Validazione: Usa un ciclo
whileper impedire l'inserimento di età negative o superiori a 110.
3 Esercizio in autonomia: Check-in Hotel Last Minute
Un hotel vuole premiare la fedeltà o le prenotazioni fuori orario.
- Chiedere l'ora di arrivo (0-23) e se l'utente possiede una "Golden Card" (1=Sì, 0=No).
- Sconto 30%: Si applica se l'arrivo è dopo le ore 22 OPPURE se l'arrivo è prima delle ore 6 OPPURE se l'utente ha la Golden Card.
- Utilizzare uno
switchper far scegliere all'utente il tipo di camera (Singola 50€, Doppia 80€) e applicare lo sconto se la condizione OR è soddisfatta.
Sfida Finale: Disegna un voucher di prenotazione elegante usando \t e una cornice fatta di simboli =.