Vai al contenuto
Topos Uranos

Riepilogo

Una condizione è un’espressione il cui valore è vero o falso. Questa lezione studia come si costruiscono le condizioni in C++: i sei operatori relazionali, che confrontano due valori e producono un bool; i tre connettivi logici, &&, || e !, che combinano condizioni come la congiunzione, la disgiunzione e la negazione della logica, e la precedenza che li ordina tra loro e rispetto all’aritmetica. Studia anche due tratti in cui C++ si allontana dalla scrittura matematica: la catena 1 < x < 5, che compila e non significa ciò che sembra, e la valutazione a cortocircuito, per cui il secondo operando di && e di || non viene valutato quando il primo decide già il risultato, il che permette di proteggere un’operazione pericolosa. Termina con la negazione di condizioni composte mediante le leggi di De Morgan, verificata con tavole di verità, e con il suo esempio centrale: la condizione di anno bisestile e la sua negazione. L’unità non ha ancora decisioni: le condizioni si valutano e si stampano come true o false, e la lezione Decisioni le metterà a governare il programma.

Obiettivi di apprendimento

  1. Scrivere in C++ condizioni composte che traducano enunciati come «xx è compreso tra 1 e 10, estremi inclusi».
  2. Negare una condizione composta con le leggi di De Morgan e verificare l’equivalenza con una tavola di verità.
  3. Usare la valutazione a cortocircuito per proteggere un’operazione, come in count != 0 && total / count > 2.
  4. Riconoscere l’errore di scrivere 1 < x < 5, spiegare che cosa calcola e correggerlo.

La condizione come espressione

La lezione Caratteri, booleani, conversioni e costanti ha presentato il tipo bool, con i suoi due valori true e false, e la lezione Aritmetica ha mostrato che un’espressione ha un albero, fissato dalla precedenza e dall’associatività, e un tipo, fissato dai suoi operandi. Questa lezione riunisce le due idee. Una condizione è un’espressione di tipo bool: non un’istruzione che domanda qualcosa, ma un calcolo il cui risultato è una risposta. count < 10 si calcola come count + 1: si prendono gli operandi, si applica l’operatore e si ottiene un valore, solo che il valore è true o false invece di un numero. Se è così, tutto ciò che vale per le espressioni aritmetiche vale per le condizioni: hanno precedenza, hanno un albero, si possono conservare in una variabile con nome (const bool inRange{…}) e si possono stampare. Ne segue la domanda che percorre la lezione: data una frase («l’anno è bisestile», «l’età è compresa tra 18 e 65»), quale espressione ha esattamente quel valore di verità per tutti i dati possibili?