DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algebra di Boole
ed elementi di logica
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 11 Ottobre 2016
Provate voi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
2
Provate voi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come faccio il #?
3
Provate voi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come faccio il #?
• Come faccio le graffe?
4
Provate voi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
5
Provate voi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come faccio il #?
 ALT + à
• Come faccio le graffe?
 (shift)+(alt gr)+(è) per la {
 (shift)+(alt gr)+(+) per la }
6
Provate voi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come faccio il #?
 ALT + à
• Come faccio le graffe?
 (shift)+(alt gr)+(è) per la {
 (shift)+(alt gr)+(+) per la }
• Come installo i tool e li uso?
7
Provate voi…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come faccio il #?
 ALT + à
• Come faccio le graffe?
 (shift)+(alt gr)+(è) per la {
 (shift)+(alt gr)+(+) per la }
• Come installo i tool e li uso?
http://home.deib.polimi.it/santambr/dida/infob/1617/video.htm
8
Il mio sito su BeeP
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
9
Il mio sito su BeeP
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
10
Il mio sito su BeeP
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Sito ufficiale per informatica
http://home.dei.polimi.it/santambr/dida/infob
http://home.dei.polimi.it/santambr/dida/infob/1617/
• Gruppo su facebook
www.facebook.com/groups/InfoBatPoliMI/
• Google calendar
http://home.deib.polimi.it/santambr/dida/infob/calendario.htm
11
Obiettivi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Algebra di Boole
 Algebra di boole a due valori: algebra di
commutazione
 Operazioni logiche
 Espressioni logiche
 Assiomi e proprietà dell’algebra di
commutazione
12
Cenni all’algebra di Boole
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• L’algebra di Boole (inventata da G. Boole,
britannico, seconda metà ’800), o algebra della
logica, si basa su operazioni logiche
• Le operazioni logiche sono applicabili a operandi
logici, cioè a operandi in grado di assumere solo i
valori vero e falso
• Si può rappresentare vero con il bit 1 e falso con
il bit 0 (convenzione di logica positiva)
13
Algebra Booleana: definizione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Algebra Booleana B è un sistema algebrico
identificato dalla sestupla
(B,+,*,’,0,1) dove:
 B è l'insieme su cui vengono definite le operazioni
(supporto)
 +,*,’ sono le operazioni binarie OR e AND e
l’operazione unaria NOT
 0,1 sono elementi speciali di B.
• 0 è l’elemento neutro rispetto a +
• 1 è l’elemento neutro rispetto a *
 Assiomi
- 14 -
Algebra Booleana a due valori:
Algebra di Commutazione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
“Tra tutte le algebre booleane, l'algebra booleana a due
valori........è la più utile. Essa è la base matematica della
analisi e progetto di circuiti di commutazione che
realizzano i sistemi digitali.”
[Lee, S.C., Digital Circuit And Logic Design. Englewood Cliffs, NJ:
Prentice-Hall, 1976]
- 15 -
Operazioni logiche fondamentali
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Operatori logici binari (con 2 operandi logici)
 Operatore OR, o somma logica
 Operatore AND, o prodotto logico
• Operatore logico unario (con 1 operando)
 Operatore NOT, o negazione, o inversione
• Poiché gli operandi logici ammettono due soli
valori, si può definire compiutamente ogni
operatore logico tramite una tabella di
associazione operandi-risultato
16
Operazioni logiche fondamentali
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Le variabili dell’algebra booleana a due valori possono assumere solo i due
valori 0 e 1
 precisamente, se x indica una variabile, è
• x = 0 se e solo se x  1
• x = 1 se e solo se x  0
• Algebra Booleana a due valori: ({0,1},+,*,’,0,1) dove + (OR) e *
(AND) sono definiti come
+ 0 1
0 0 1
1 1 1
* 0 1
0 0 0
1 0 1
• Mentre l’operazione a un solo elemento (unary operation) detta
complementazione o negazione (NOT) è definita come
‘
0 1
1 0
 Nota: il simbolo associato al NOT è spesso indicato come ’
(esempio x’), !(esempio !x) o sopra segnando la variabile.
Operatori logici di base e loro tabelle di verità
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
A B
A or B
0 0
0
0 1
1
1 0
1
1 1
1
(somma logica)
A B
A and B
0 0
0
0 1
0
1 0
0
1 1
1
(prodotto logico)
A
not A
0
1
1
0
(negazione)
Le tabelle elencano tutte le possibili combinazioni in ingresso
e il risultato associato a ciascuna combinazione
18
Espressioni logiche (o Booleane)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come le espressioni algebriche, costruite con:
 Variabili logiche (letterali): p. es. A, B, C  0 oppure 1
 Operatori logici: and, or, not
• Esempi:
A or (B and C)
(A and (not B)) or (B and C)
• Precedenza: l’operatore “not” precede l’operatore “and”, che
a sua volta precede l’operatore “or”
A and not B or B and C  (A and (not B)) or (B and C)
• Per ricordarlo, si pensi OR come “” (più), AND come “”
(per) e NOT come “” (cambia segno)
19
Tabella di verità di un’espressione logica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
A and B or not C
ABC
X = A and B
Y = not C
X or Y
000
0 and 0 = 0
not 0 = 1
0
or
1
=1
001
0 and 0 = 0
not 1 = 0
0
or
0
=0
010
0 and 1 = 0
not 0 = 1
0
or
1
=1
011
0 and 1 = 0
not 1 = 0
0
or
0
=0
100
1 and 0 = 0
not 0 = 1
0
or
1
=1
101
1 and 0 = 0
not 1 = 0
0
or
0
=0
110
1 and 1 = 1
not 0 = 1
1
or
1
=1
111
1 and 1 = 1
not 1 = 0
1
or
0
=1
Due esercizi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
A
0
0
1
1
B
0
1
0
1
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
NOT ((A OR B) AND (NOT A))
1
0
1
1
C
0
1
0
1
0
1
0
1
0
0
1
1
0
1
1
1
0
1
0
1
0
1
0
0
1
1
0
0
0
0
1
1
( B OR NOT C) AND (A OR
0 1
1 0
1
0
0 0
0 1
0
0
1 1
1 0
1
0
1 1
0 1
0
0
0 1
1 0
1
1
0 0
0 1
0
1
1 1
1 0
1
1
1 1
0 1
1
1
NOT C)
1
1
0
0
1
1
0
0
1
1
1
0
1
1
1
0
0
1
0
1
0
1
0
1
21
Vero e falso in C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• In C non esiste un tipo di dato specifico per
rappresentare i concetti vero e falso
• Una condizione assume un valore intero pari a
 0 se la condizione è falsa
 1 se la condizione è vera
• In generale, ogni valore diverso da zero è
considerato vero
 ( 3 ) VERO
 ( 1 ) VERO
 ( a – a ) FALSO
22
Ambienti di sviluppo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
(
• C
 Un compilatore C
• g++, gcc
MinGW: http://www.mingw.org/
OR•
AND
 Un editor/IDE
OR ••
OR •
Code::Blocks: http://www.codeblocks.org/
Geany: http://www.geany.org/
DevC++: http://www.bloodshed.net/devcpp.html
• Matlab
AND
http://www.mathworks.it/products/matlab/
OR  Matlab:
Octave: http://www.gnu.org/software/octave/
OR  QtOctave: http://www.malinc.se/math/octave/mainen.php
)
• Virtual Machine già pronte
OR
 http://home.deib.polimi.it/santambr/dida/infob/1415/labgb/tools.htm
• Ambiente PoliMI
OR
23
Problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Si scriva un programma in C che, dato un
numero, dica se questo è positivo o
negativo
24
Soluzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
1. Si inserisca N
2. N è maggiore di 0?
 Vero: N è positivo
 Falso: N non è positivo
25
In C: positivo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
int main()
{
int n;
printf (“Inserisci un numero\n");
scanf ("%d", &n );
if ( n > 0 )
printf ("Un numero positivo ! \n");
else
condizione
printf ("Un numero negativo o nullo\n");
printf ("Fine del programma\n");
return 0;
}
26
Problema: caratteri MaIuScOli
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Si scriva un programma che, preso un
carattere minuscolo da tastiera, ne riporta a
video l’equivalente maiuscolo
27
Maiuscolo: esecuzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
28
HELP: errori sull’input
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
29
Problema: errori sull’input
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Preso un dato inserito da tastiera
 Per potervi applicare la trasformazione di
nostro interesse
 Dobbiamo prima verificare che il dato sia
coerente con quanto ci aspettiamo
• Soluzione
 Definire l’insieme dei caratteri validi
 Verificare l’appartenenza del carattere
inserito, all’insieme dei caratterei validi
30
Pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dati
 L’insieme dei caratteri ammissibili
{a, b, c, …, z}
1.
2.
3.
4.
Richiedere l’inserimento di un carattere
Se carattere inserito corretto
Allora stampa a video carattere-32
Altrimenti stampa a video un messaggio
di errore
31
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dati
 L’insieme dei caratteri ammissibili
{a, b, c, …, z}
• Il carattere inserito deve essere
 =>a
 <= z
32
Maiuscolo: solo if
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
33
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
34
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
35
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
 Se X = 0?
36
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
 Se X = 0? Vogliamo una uscita FALSA
37
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
 Se X = 0? Vogliamo una uscita FALSA
 Se Y = 0?
38
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
 Se X = 0? Vogliamo una uscita FALSA
 Se Y = 0? Vogliamo una uscita FALSA
39
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
 Se X = 0? Vogliamo una uscita FALSA
 Se Y = 0? Vogliamo una uscita FALSA
 Se X = 1 e Y = 1? Uscita VERA!
40
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
X
0
0
1
1
Y
0
1
0
1
USCITA
0
0
0
1
41
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
X
0
0
1
1
Y
0
1
0
1
USCITA
0
0
0
1
42
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
X
0
0
1
1
Y
0
1
0
1
USCITA
0
0
0
1
43
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• Come vogliamo che si comporti il nostro
modello rispetto a X e Y?
X
0
0
1
1
Y X AND Y
0
0
1
0
0
0
1
1
(prodotto logico)
44
Pausa…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
45
Maiuscolo: AND
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
46
Maiuscolo: codice ottimizzato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
47
Maiuscolo: esecuzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
48
A che cosa servono le espressioni logiche?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• A modellare alcune (non tutte) forme di ragionamento
 A  è vero che 1 è maggiore di 2 ? (sì o no, qui è no)  0
 B  è vero che 2 più 2 fa 4 ? (sì o no, qui è sì)  1
 A and B  è vero che 1 sia maggiore di 2 e che 2 più 2 faccia 4 ?
Si ha che A and B  0 and 1  0, dunque no
 A or B  è vero che 1 sia maggiore di 2 o che 2 più 2 faccia 4 ?
Si ha che A or B  0 and 1  1, dunque sì
• OR, AND e NOT vengono anche chiamati connettivi logici,
perché funzionano come le congiunzioni coordinanti “o” ed “e”,
e come la negazione “non”, del linguaggio naturale
• Si modellano ragionamenti (o deduzioni) basati solo sull’uso di
“o”, “e” e “non” (non è molto, ma è utile)
49
Che cosa non si può modellare tramite
espressioni logiche?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Le espressioni logiche (booleane) non modellano:
 Domande esistenziali: “c’è almeno un numero reale x tale che
il suo quadrato valga 1 ?”
x | x2  1
è falso (si sa bene che non c’è)
 Domande universali: “ogni numero naturale è la somma di
quattro quadrati di numeri naturali ?”
x | x  a2b2c2d2` è vero (“teorema dei 4 quadrati”)
Più esattamente andrebbe scritto:
x a,b,c,d | x  a2b2c2d2
•  e  sono chiamati “operatori di quantificazione”, e sono
ben diversi da or, and e not
• La parte della logica che tratta solo degli operatori or, and
e not si chiama calcolo proposizionale
• Aggiungendo gli operatori di quantificazione, si ha il
calcolo dei predicati (che è molto più complesso)
50
Tautologie e Contraddizioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tautologia
 Una espressione logica che è sempre vera, per
qualunque combinazione di valori delle variabili
• Esempio: principio del “terzo escluso”: A or not A (tertium
non datur, non si dà un terzo caso tra l’evento A e la sua
negazione)
• Contraddizione
 Una espressione logica che è sempre falsa, per
qualunque combinazione di valori delle variabili
• Esempio: principio di “non contraddizione”: A and not A
(l’evento A e la sua negazione non possono essere
entrambi veri)
51
Equivalenza tra espressioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Due espressioni logiche si dicono equivalenti (e si
indica con ) se hanno la medesima tabella di
verità. La verifica è algoritmica. Per esempio:
AB
not A and not B  not (A or B)
00
1 and 1 = 1
not 0 = 1
01
1 and 0 = 0
not 1 = 0
10
0 and 1 = 0
not 1 = 0
11
0 and 0 = 0
not 1 = 0
• Espressioni logiche equivalenti modellano gli stessi
stati di verità a fronte delle medesime variabili
52
Proprietà dell’algebra di Boole
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• L’algebra di Boole gode di svariate proprietà,
formulabili sotto specie di identità
 cioè formulabili come equivalenze tra espressioni
logiche, valide per qualunque combinazione di valori
delle variabili
53
Algebra Booleana a due valori: Assiomi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
Gli operatori descritti godono delle proprietà definite dai
seguenti assiomi (postulati di Huntington):
 Le operazioni di disgiunzione (+) e congiunzione (·) sono
commutative, cioè per ogni elemento a,b  B
a+b = b+a
a·b = b·a
 Esiste un elemento neutro (o identità) rispetto a + (indicato
con 0) e un elemento neutro rispetto a · (indicato con 1), cioè:
a+0=a
a·1=a
 Le due operazioni sono distributive rispetto all’altra, cioè per
ogni a,b,c  B, risulta:
a+(b·c)=(a+b)·(a+c)
a·(b+c)=(a·b)+(a·c)
 Per ogni a  B esiste l’elemento a’ B, detto negazione
logica o complemento di a, tale che:
a+a’=1
a·a’=0
Algebra di Commutazione: Proprietà 1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
1: associativa
a+(b+c)=(a+b)+c
a*(b*c)=(a*b)*c
2: idempotenza
a+a=a
a*a=a
3: elemento nullo
a+1=1
a*0=0
4: unicità elemento inverso:
il complemento di a, a’, è unico
5: assorbimento
a+(a*b)=a
a*(a+b)=a
Algebra di Commutazione: Proprietà 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
6: Semplificazione
a+a’b = a+b
a*(a’+b) = a*b
7: involuzione
((a)’)’ =
a
8: Leggi di De Morgan
(a+b)’ = a’*b’
(a*b)’ = a’+b’
9: consenso
a*b+a’*c+b*c = a*b + a’*c
(a+b)*(a’+c)*(b+c)=(a+b)*(a’+c)
- 56 -
Uso delle proprietà
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Trasformare un’espressione logica in un’altra, differente
per aspetto ma equivalente:






not A and B or A 
(assorbimento)
not A and B or (A or A and B)  (togli le parentesi)
not A and B or A or A and B 
(commutativa)
not A and B or A and B or A 
(distributiva)
(not A or A) and B or A 
(legge dell’elemento 1)
true and B or A 
(vero and B  B)
B or A è più semplice dell’espressione originale
• Si può verificare l’equivalenza con le tabelle di verità
• Occorre conoscere un’ampia lista di proprietà e si deve
riuscire a “vederle” nell’espressione (talvolta è difficile)
57
Problemi di fine giornata…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Si scriva un programma in C che
richiede l’inserimento di un numero
intero positivo, se l’inserimento e’ errato
ritorna un messaggio di errore
• Si scriva un programma in C che, dati
due caratteri, li ordina in ordine
alfabetico “inverso”
58
Fonti per lo studio + Credits
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Fonti per lo studio
 Introduzione ai sistemi informatici, D.
Sciuto, G. Buonanno, L. Mari, 4a Ed,
McGrawHill
• Capitolo 2
• Credits
 Daniele Braga
• http://home.dei.polimi.it/braga/
 Cristiana Bolchini
• http://home.dei.polimi.it/bolchini/didattica/retilogichea/index.
htm