Image default
Corsi Programmazione Python

Algebra di Boole e Operatori Logici – Corso Python per principianti – Lezione 10

Prima di affrontare le varie istruzioni condizionali che Python, come gli altri linguaggi, offre, andiamo ad affrontare degli argomenti preparatori alla prossima lezione, per poter strutturare delle buone istruzioni condizionali.

Sai cos’è l’Algebra di Boole?

L’Algebra di Boole, conosciuta anche come algebra booleana o reticolo booleano, è una parte dell’algebra che si occupa dello studio di variabili che assumono il solo significato Vero o Falso (in Informatica 0 o 1).

Questo studio precede le istruzioni condizionali non per caso, infatti queste ultime usano come condizione una struttura di tipo booleana. Una condizione può essere o vera oppure falsa e può essere “condizionata” non per forza solo da un singolo fattore, ma anche da più.

Il ragionamento sembra molto complesso, ma ti assicuro che non è cosi. Segui la lezione passo-passo ed avrai piena capacità per poter iniziare a studiare le istruzioni condizionali nella prossima lezione.

Facciamo un piccolo esempio:

Supponiamo che se abbiamo carburante in macchina e non siamo stanchi, allora andiamo a farci un giro.

Questo primo esempio introduce una condizione dettata da due variabili:

  1. Il carburante.
  2. La stanchezza.

Osserviamo che le variabili in questione devono essere una (il carburante) soddisfatta, mentre la seconda (la stanchezza) deve essere non soddisfatta. Per andare a farci un giro, allora dobbiamo avere che:

il carburante sia in macchina (True)

la stanchezza non si faccia sentire (False)

Anche un operazione di confronto è una variabile booleana.

Non sai il perché? Te lo spiego subito con questo esempio:
PS. Apri la shell di Python e prova anche tu stesso.

>>>x=10
>>>y=5
>>>x>y
True
>>>x=y
False

 

Gli operatori di confronto sono:

  • ==
  • !=
  • >
  • <
  • >=
  • <=

PS. ricorda che per vedere se due variabili sono uguali devi usare il doppio uguale (==).
Erroneamente potresti pensare a fare x=y, ma questo è sbagliato perchè il singolo uguale (=) è un operatore di assegnazione.

Le istruzioni Booleane, o molto meglio parlare di termini booleani o anche conosciute come proposizioni, sono uniti l’una all’altro con gli operatori logici. L’insieme di variabili Booleane e operatori logici, danno vita ad espressioni booleane.

Quindi fissa in mente questo:

variabili booleane+operatori logici= espressione booleana (True o False).

Cos’è un operatore logico?

Un operatore logico è un particolare connettivo logico che unisce due o più preposizioni (variabili in Python), per formare un espressione booleana di senso logico che assume significato “True” o “False”.

Gli operatori logici sono molto importanti quando si crea un istruzione condizionale o un ciclo iterativo (argomenti delle prossime lezioni).
In particolare i principali operatori logici che devi assolutamente conoscere sono:

  • not
  • and
  • or

Ogni operatore ha un importanza a sé e un proprio significato particolare, oltre che ad un preciso funzionamento.

PS. la sintassi sull’editor di Python degli operatori è proprio come riportato nell’elenco qui sopra, tutto in minuscolo.

Tra i tre l’operatore più semplice da capire è il not.
Il not sostanzialmente muta il Vero in Falso, o viceversa. Quindi compie un’operazione di negazione.

Ecco un esempio pratico:

>>>variabile = True
>>>nuovavariabile = not(variabile)
>>>nuovavariabile
False

L’operatore and, come l’operatore or, invece, vengono usati quando dobbiamo “unire” più variabili Booleane. Il funzionamento dei due è diverso:

  • And restituisce True se e solo se tutte le variabili sono True, False in tutti gli altri casi.
  • Or restituisce True quando almeno una variabile contiene True, False solo nel caso in cui tutte le variabili sono False.
>>>variabile1 = True
>>>variabile2 = True
>>>variabile3 = False
>>>variabile4 = False
>>>variabile1 and variabile2
True
>>>variabile1 and variabile3
False
>>>variabile1 or variabile3
True
>>>variabile3 or variabile4
False

Quando userai un operatore logico tra 2 variabili il gioco sarà facile, ma quando dovrai fare dei controlli più avanzati con più variabili e più operatori logici è consigliato l’uso corretto delle parentesi affinché l’interprete di Python possa capire bene quale operazione svolgere prima.

Un esempio di uso di parentesi in modo corretto è il seguente:

>>>variabile1 = False
>>>variabile2 = False
>>>variabile3 = False
>>>variabile4 = True
>>>(variabile1 or not(variabile2)) and (not(variabile3) and variabile4)
True

In questo modo le operazioni che saranno eseguite in ordine saranno:

not(variabile2) “False -> True” e not(variabile3) “False -> True”

variabile1 or not(variabile2) “False or True -> True” e not(variabile3) and variabile4 “True and True -> True”

(variabile1 or not(variabile2)) and (not(variabile3) and variabile4) “True and True -> True”

L’utilizzo delle parentesi quando si costruiscono espressioni booleane molto lunghe stile quella che ti ho fornito come esempio è super consigliato ma non obbligatorio. Devi sapere che gli operatori logici vengono eseguiti nel seguente modo:

  1. Not
  2. And
  3. Or

Ovvero, in un codice, la prima operazione booleana svolta sarà il Not, poi l’And ed infine l’Or.

Quindi effettivamente potresti evitare le parentesi, ma io ti consiglio di NON farlo.

Ti dico cosi non perché voglio farti perdere tempo con le parentesi ma perché ti assicuro che con l’utilizzo corretto delle parentesi il codice diventa più leggibile e, soprattutto non si rischiano problemi con l’esecuzione del tuo programma.

Allora potresti dirmi “ma perché allora mi hai detto la priorità che c’è tra gli operatori se poi mi consigli di non sfruttarla?”.

Ti spiego subito perché l’ho fatto.

Il saper programmare non si vede da “io conosco la sintassi di Python allora so programmare”, ma si vede dalle piccole cose, dalla mentalità che svilupperai per programmare. Tu devi conoscere TUTTO, non devi imparare solo la sintassi di Python, devi andare a fondo e capire proprio cosa c’è dietro tutto questo mondo.

Quindi è bene che tu sappia come funziona la priorità tra operatori logici, poi in base alla tua scelta decidi se privarti o meno dell’uso delle parentesi.

Per questa lezione è tutto… Sei pronto/a per la prossima?

C’è qualcosa che non è molto chiara? Lascia un commento, sono a tua completa disposizione.

Sei soddisfatto/a di questa lezione ed hai imparato nuove cose? Ringraziaci con un +1,  per te è solo un click, per noi è molto importante, grazie ancora. 🙂

Lezione 9: Moduli e Funzioni<—> Lezione 11: Istruzione condizionale IF

Prima di andar via, se ti siamo stati d'aiuto, che ne dici di lasciarci un like su Facebook? Per noi è importante 🙂

Related posts

Commenti – Corso Python per Principianti – Lezione 5

Antonio Lanza

Linguaggi Compilati e Linguaggi Interpretati: quale scegliere

Andrea Chiera

Debug: gli errori in Python – Corso Python per principianti – Lezione 15

Antonio Lanza