PPT - V2 - Dipartimento di Elettronica ed informazione

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algebra di Boole
ed elementi di logica
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 20 Ottobre 2014
Installation Party
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dove: LM1
• Quando:
 Martedì 21 Ottobre
 10.00am - 12.00pm
2
A grande richiesta…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come si stampano \n e %c
3
A grande richiesta…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come si stampano \n e %c
4
A grande richiesta…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come si stampano \n e %c
Ma non aveva detto che dovevamo farlo
da soli?
5
A grande richiesta…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come si stampano \n e %c
Ma non aveva detto che dovevamo farlo
da soli?
Si ma poi voi mi dite che “sono sempre
un po’ troppo acido nelle risposte,
tende a scoraggiare future domande”
6
Ops…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Forse era acida
anche questa?
:)
7
Un paio di osservazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
looks like things start to get tricky
8
Un paio di osservazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
looks like things start to get tricky
Trovo profondamente triste il fatto che non vedremo come
funziona una libreria in dettaglio, ma immagino che data la
durata ridotta del corso, il docente abbia preferito farci
concentrare su qualcosa di più utile/interessante.
9
Un paio di osservazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
looks like things start to get tricky
Trovo profondamente triste il fatto che non vedremo come
funziona una libreria in dettaglio, ma immagino che data la
durata ridotta del corso, il docente abbia preferito farci
concentrare su qualcosa di più utile/interessante. Trovo
anche molto stimolante il fatto che il professore non risponda
direttamente alle domande poste in alcuni casi, ma lasci il
compito di trovare la risposta allo studente.
10
Un paio di osservazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
looks like things start to get tricky
Trovo profondamente triste il fatto che non vedremo come
funziona una libreria in dettaglio, ma immagino che data la
durata ridotta del corso, il docente abbia preferito farci
concentrare su qualcosa di più utile/interessante. Trovo
anche molto stimolante il fatto che il professore non risponda
direttamente alle domande poste in alcuni casi, ma lasci il
compito di trovare la risposta allo studente.
Rispetto a quanto fatto alle superiori, qui non imparo
semplicemente la sintassi, ma apprendo anche il significato
informatico di ogni simbolo.
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
Problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Si scriva un programma in C che, dato un
numero, dica se questo è positivo o
negativo
23
Soluzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
1. Si inserisca N
2. N è maggiore di 0?
 Vero: N è positivo
 Falso: N non è positivo
24
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;
}
25
Pausa 5’
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
George Boole
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
• X e Y devono essere entrambe vere
X Y X and Y
0 0
0
0 1
0
1 0
0
1 1
1
(prodotto logico)
34
Maiuscolo: AND
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
35
Maiuscolo: codice ottimizzato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
36
Maiuscolo: esecuzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
37
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)
38
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)
39
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)
40
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
41
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
42
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)
- 45 -
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)
46
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”
47
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