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 a2b2c2d2` è vero (“teorema dei 4 quadrati”) Più esattamente andrebbe scritto: x a,b,c,d | x a2b2c2d2 • 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