Lezione 9
Operatori logici
Gli operatori logici sono operazioni tra due proposizioni A e B legate da un determinato tipo di relazione, tali da dare origine a una terza proposizione C con valore vero o falso. Sono detti anche connettivi logici e sono alla base dell'algebra booleana.
I principali operatori logici sono AND, OR e NOT. Ve ne sono molti altri, ma per adesso accontentiamoci di questi.
Il Not lo abbiamo visto all’opera già in diverse occasioni, vediamo meglio:
Not rappresenta la negazione, essendo un operatore boleano può riferirsi solo a valori vero o falso, quindi “Not vero = falso”, questo ci è stato utile per creare una procedura che inverte il valore di visibilità di un oggetto, ricordi il primo esercizio sulle proprietà?
Ecco: Oggetto.Visible può essere solo vero o falso, e qualunque sia il suo stato di visibilità con Not lo andiamo a invertire, semplice vero?
OR e AND
And confronta lo stato boleano di due proposizioni e restituisce vero se sono entrambe vere, restituisce falso in qualunque altro caso.
Per AND, occorre che entrambe siano vere per ritornare vero.
Or confronta lo stato boleano di due proposizioni e restituisce falso se sono entrambe false, restituisce vero in qualunque altro caso. Per OR basta che una delle condizioni sia vera per ritornare vero.
Sembra confuso? Facciamo un esempio:
A:=5;
B:=10;
C:=2;
If (A > C) and (C < B) then FaiQuesto();
In questo caso le preposizioni (A > C) e (C
< B) sono entrambe vere, quindi il nostro blocco If permetterà di eseguire la procedura FaiQuesto().
Se fosse stato così:
If (A > C) and (C > B) then FaiQuesto();
Una delle due proposizioni non sarebbe vera quindi la procedura non verrebbe eseguita.
Se avessimo usato l’operatore Or al posto di And, in questo ultimo esempio, la procedura sarebbe invece stata eseguita:
If (A > C) Or (C > B) then FaiQuesto();
In questo caso una proposizione è vera quindi non conta come sia l’altra, per l’operatore Or questo risultato è vero e la procedura verrà eseguita.
Si possono confrontare più proposizioni con Or e And e si possono anche usare Or e And nella stessa valutazione boleana
If ((A > C) And (C < B)) Or (B > A) then FaiQuesto();
Anche in questo caso, pur essendo false le prime due, ma vera l’ultima, Or darà vero come risultato e quindi la procedura FaiQuesto() sarà eseguita.
Parentesi
Le parentesi racchiudono le proposizioni, e sono indispensabili quando si confrontano due o più proposizioni tra loro: "If A < B" invece non necessita di parentesi perché è un confronto diretto tra valori numerici.
Con gli operatori noi valutiamo più confronti diretti e questi devono essere "isolati" tra di loro con elle parentesi tonde.
Nota bene: un operatore logico non bada al valore numerico contenuto nelle variabili, bada solo al fatto che un confronto diretto tra variabili dia come risultato vero o falso.