Algebra di Boole ed elementi di logica

Slides:



Advertisements
Presentazioni simili
Algebra di Boole Casazza Andrea 3EA I.I.S. Maserati.
Advertisements

Algebra di Boole ed elementi di logica
Algebra di Boole ed elementi di logica
Algebra di Boole ed elementi di logica
Programmazione Corso di laurea in Informatica
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole ed elementi di logica Marco D. Santambrogio – Ver. aggiornata.
Algebra di Boole.
Rappresentazione dell'informazione
Algebra di Boole L’algebra di Boole è un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono assumere.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole ed elementi di logica Marco D. Santambrogio – Ver. aggiornata.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole ed elementi di logica Marco D. Santambrogio – Ver. aggiornata.
Logica di base e Conversione analogico-digitale Lezione 3 / Prima parte Gaetano Arena e.mail: 1.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algebra di Boole, elementi di logica e Mappe di Karnaugh Marco D. Santambrogio –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 22 Marzo 2016.
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
I Polinomi Prof.ssa A.Comis.
PRIMI CONCETTI ESEMPI INTRODUTTIVI DEFINIZIONI INTRODUZIONE ALLE FUNZIONI.
1 Simulazione Numerica dei Fenomeni di Trasporto Necessità di introduzione dei tensori  11  12  13  23  21  22 Vogliamo descrivere in un modo che.
Process synchronization
Process synchronization
© 2007 SEI-Società Editrice Internazionale, Apogeo
Operatori logici.
Introduzione al linguaggio C
Process synchronization
Insiemi e logica Insiemi e operazioni insiemistiche
4 < 12 5 > −3 a < b a > b a ≤ b a ≥ b
IL CONCETTO DI ALGORITMO
Array n-dimensionali e tipi di dati strutturati
Array n-dimensionali e tipi di dati strutturati
ESPRESSIONE LETTERALE
Unità di apprendimento 7
Equazioni e disequazioni
PARTE TERZA OPERAZIONI CON LE PROPOSIZIONI
Ripasso… Elementi di logica
Process synchronization
Process synchronization
Algebra di Boole ed elementi di logica
Recap su: array e puntatori
Lezione 5: Algebra di Boole
I MONOMI.
Introduzione.
Le proposizioni DEFINIZIONE. La logica è un ramo della matematica che studia le regole per effettuare ragionamenti rigorosi e corretti. DEFINIZIONE. Una.
Algebra di Boole e sue applicazioni
I RADICALI Definizione di radicali Semplificazione di radicali
Circuiti digitali Architettura © Roberto Bisiani, 2000
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Secondo Programma in C.
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
CORSO DI APPROFONDIMENTO
Matrici Definizioni Matrici Rettangolari Quadrate 02/01/2019
Le espressioni algebriche letterali
Algebra Booleana.
Elementi di base per lo studio dei circuiti digitali
Process synchronization
Process synchronization
Algebra di Boole e Funzioni Binarie
Process synchronization
Reti Combinatorie E Algebra Di Boole
Process synchronization
Process synchronization
Array n-dimensionali e tipi di dati strutturati
Selezione e Proiezione
Matrici e determinanti
Process synchronization
Process synchronization
Process synchronization
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Algebra di Boole ed elementi di logica Process synchronization Operating System Algebra di Boole ed elementi di logica Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 12 Ottobre 2015 © 2005 William Fornaciari

Obiettivi Algebra di Boole Algebra di boole a due valori: algebra di commutazione Operazioni logiche Espressioni logiche Assiomi e proprietà dell’algebra di commutazione

Cenni all’algebra di Boole 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)

Algebra Booleana: definizione 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

Algebra Booleana a due valori: Algebra di Commutazione “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]

Operazioni logiche fondamentali 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

Operazioni logiche fondamentali 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 Mentre l’operazione a un solo elemento (unary operation) detta complementazione o negazione (NOT) è definita come Nota: il simbolo associato al NOT è spesso indicato come ’ (esempio x’), !(esempio !x) o sopra segnando la variabile. + 0 1 0 0 1 1 1 1 * 0 1 0 0 0 1 0 1 0 1 1 0 ‘

Operatori logici di base e loro tabelle di verità A B A or B 0 0 0 0 1 1 1 0 1 1 1 (somma logica) A B A and B 0 0 0 0 1 0 1 0 0 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

Espressioni logiche (o Booleane) 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)

Tabella di verità di un’espressione logica A and B or not C A B C X = A and B Y = not C X or Y 0 0 0 0 and 0 = 0 not 0 = 1 0 or 1 = 1 0 0 1 0 and 0 = 0 not 1 = 0 0 or 0 = 0 0 1 0 0 and 1 = 0 not 0 = 1 0 or 1 = 1 0 1 1 0 and 1 = 0 not 1 = 0 0 or 0 = 0 1 0 0 1 and 0 = 0 not 0 = 1 0 or 1 = 1 1 0 1 1 and 0 = 0 not 1 = 0 0 or 0 = 0 1 1 0 1 and 1 = 1 not 0 = 1 1 or 1 = 1 1 1 1 1 and 1 = 1 not 1 = 0 1 or 0 = 1

Due esercizi A B NOT ((A OR B) AND (NOT A)) 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 A B C ( B OR NOT C) AND (A OR NOT C) 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1

Vero e falso in C 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

Problema Si scriva un programma in C che, dato un numero, dica se questo è positivo o negativo

Soluzione Si inserisca N N è maggiore di 0? Vero: N è positivo Falso: N non è positivo

In C: positivo int main() { int n; printf (“Inserisci un numero\n"); scanf ("%d", &n ); if ( n > 0 ) printf ("Un numero positivo ! \n"); else printf ("Un numero negativo o nullo\n"); printf ("Fine del programma\n"); return 0; } condizione

Problema: caratteri MaIuScOli Si scriva un programma che, preso un carattere minuscolo da tastiera, ne riporta a video l’equivalente maiuscolo

Maiuscolo: esecuzione

HELP: errori sull’input

Problema: errori sull’input 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

Pseudocodice Dati Richiedere l’inserimento di un carattere L’insieme dei caratteri ammissibili {a, b, c, …, z} Richiedere l’inserimento di un carattere Se carattere inserito corretto Allora stampa a video carattere-32 Altrimenti stampa a video un messaggio di errore

Condizione da verificare Dati L’insieme dei caratteri ammissibili {a, b, c, …, z} Il carattere inserito deve essere =>a <= z

Maiuscolo: solo if

Condizione da verificare Il carattere inserito deve essere X: =>a Y: <= z Come vogliamo che si comporti il nostro modello rispetto a X e Y?

Condizione da verificare 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?

Condizione da verificare 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

Condizione da verificare 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?

Condizione da verificare 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

Condizione da verificare 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!

Condizione da verificare Il carattere inserito deve essere X: =>a Y: <= z Come vogliamo che si comporti il nostro modello rispetto a X e Y? X Y USCITA 0 0 0 0 1 0 1 0 0 1 1

Condizione da verificare Il carattere inserito deve essere X: =>a Y: <= z Come vogliamo che si comporti il nostro modello rispetto a X e Y? X Y USCITA 0 0 0 0 1 0 1 0 0 1 1 Vi ricorda qualche cosa?

Condizione da verificare Il carattere inserito deve essere X: =>a Y: <= z Come vogliamo che si comporti il nostro modello rispetto a X e Y? Vi ricorda qualche cosa? AND!!! X Y USCITA 0 0 0 0 1 0 1 0 0 1 1

Condizione da verificare Il carattere inserito deve essere X: =>a Y: <= z Come vogliamo che si comporti il nostro modello rispetto a X e Y? X Y X AND Y 0 0 0 0 1 0 1 0 0 1 1 (prodotto logico) Vi ricorda qualche cosa? AND!!!

Maiuscolo: AND

Maiuscolo: codice ottimizzato

Maiuscolo: esecuzione

A che cosa servono le espressioni logiche? 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)

Che cosa non si può modellare tramite espressioni logiche? 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)

Tautologie e Contraddizioni 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)

Equivalenza tra espressioni Due espressioni logiche si dicono equivalenti (e si indica con ) se hanno la medesima tabella di verità. La verifica è algoritmica. Per esempio: A B not A and not B  not (A or B) 0 0 1 and 1 = 1 not 0 = 1 0 1 1 and 0 = 0 not 1 = 0 1 0 0 and 1 = 0 not 1 = 0 1 1 0 and 0 = 0 not 1 = 0 Espressioni logiche equivalenti modellano gli stessi stati di verità a fronte delle medesime variabili

Proprietà dell’algebra di Boole 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

Algebra Booleana a due valori: Assiomi 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 Vale per la somma rispetto al prodotto come per il prodotto rispetto alla somma – non esiste precedenza fra le due operazioni, occorre sempre immaginare le parentesi “sottintese” intorno a ogni applicazione di un’operazione.

Algebra di Commutazione: Proprietà 1 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 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)

Uso delle proprietà 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)

Problemi di fine giornata… 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”

Fonti per lo studio + Credits 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