Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica Un esercizio semplice FONDAMENTI DI INFORMATICA 1 Dimostrare che A * A’ = 0 e A + A’ = 1 Si usino le tabelle di verità http://www.diee.unica.it/~marcialis/FI1 A.A. 2008/2009 A 0 1 Docente: Gian Luca Marcialis A’ 1 0 A * A’ 0 0 A + A’ 1 1 Esercitazione ALGEBRA DI BOOLE CODIFICA BINARIA DELL’INFORMAZIONE Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis Il teorema di De Morgan Semplificazione di espressioni booleane Si semplifichi la seguente espressione applicando le proprietà e i teoremi dell’algebra booleana: A*B’ + C*A’ + A*C Soluzione: Si verifichi l’uguaglianza (A + B)’ = A’ * B’ utilizzando le proprietà dell’algebra booleana le tabelle di verità Soluzione = C * (A’ + A) + A*B’ = {prop. distributiva} = C + A*B’ {prop. El. Complementare + neutro} Verificare che il numero di operatori booleani richiesti dopo la semplificazione sia inferiore a quello iniziale Per la proprietà dell’elemento complementare: (A+B)’ * (A+B) = 0 Quindi anche A’ * B’ * (A+B) = 0 Sviluppando l’espressione precedente: A’ * B’ * A + A’ * B’ * B = A’ * A * B + A’ * B’ * B = 0 + 0 = 0 c.v.d. Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis 2 − Inizialmente: 3 AND, 2 OR, 2 NOT − Semplificando: 1 AND, 1 OR, 1 NOT 3 Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis 4 Dal compito del 8/7/2008 Dal compito del 4/2/2009 Semplificare la seguente espressione con i teoremi dell’algebra booleana: A*B’ + B*C + A*C’ Soluzione = A * (B’ + C’) + B*C = = A * (B*C)’ + B*C = = (A + B*C) * ((B*C)’ + B*C) = = A + B*C {commutatività + distributività} { De Morgan} {distributività + el. complementare} Esprimere la variabile Esame_Superato in funzione delle precedenti, secondo le regole di Fondamenti di Informatica 1 Soluzione: − Lo scritto ha voto > 20 Scritto_Soddisfacente == 1 − Oppure, • Lo scritto ha voto >= 16 Scritto_Insufficiente’ == 1 • E l’orale è stato superato Orale_Superato == 1 Nota bene: la forma ottenuta è del tipo C + A*B’ (vedi slide n. 4) 5 Esercizi di aritmetica binaria Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis 6 Aritmetica in virgola fissa Convertire 1011, espresso in cifre binarie, nella rappresentazione decimale Soluzione Si usa l’algoritmo di conversione: X = 1*23 + 0*22 + 1*21 + 1*20 = 8 + 0 + 2 + 1 = 1110 Convertire il decimale 11 in binario Soluzione: Algoritmo delle divisioni successive. Il resto corrisponde alle cifre binarie a partire da quella meno significativa 11/2={quoz. 5, resto 1}; 5/2 = {2, 1}; 2/2 = {1, 0}; 1/2 = {0, 1} Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis Scritto_Soddisfacente == 1 voto conseguito allo scritto > 20 Orale_Superato == 1 orale OK Scritto_Insufficiente == 1 voto conseguito allo scritto < 16 Esame_Superato = Scritto_Soddisfacente + Orale_Superato * Scritto_Insufficiente’ Infatti Esame_Superato == 1 quando: Verificare l’uguaglianza con le tavole di verità Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis Date tre variabili booleane, che descrivono tre eventi relativi all’esame di Fondamenti di Informatica 1: 7 Esprimere 13.7510 in binario Soluzione Si separano parte intera e parte frazionaria Per la parte intera si usa l’algoritmo delle divisioni successive, ottenendo: 13 = 1101 Per la parte frazionaria si usa l’algoritmo delle moltiplicazioni successive 0.75 = 0.11 − Ottenuto come segue: 0.75 * 2 = 1.5; 0.5 * 2 = 1.0 − Poiché la parte frazionaria dopo l’ultima iterazione è zero, l’algoritmo termina Quindi: 13.7510 = 1101.112 Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis 8 Alcuni semplici algoritmi in pseudocodice: l’algoritmo del prodotto Conversione in virgola mobile Esprimere il valore dell’esercizio precedente in virgola mobile secondo la convenzione 1.b * 2E ‘b’ è la parte della mantissa che precede l’1 più significativo, unico valore in parte intera Soluzione 1101.11 = 1101.11 * 23 * 2-3 = 1.10111 * 23 Esprimendo per esempio l’esponente in segno e valore con tre bit (quello più significativo, posto a zero, indica segno positivo): 1.10111 * 2011 Si ottiene dunque b 10111, E 011 Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis 9 L’algoritmo della potenza Con lo stesso criterio precedente, voglio implementare l’algoritmo dell’elevamento a potenza Y = BE In questo caso abbiamo una “produttoria”: E Y = ∏ B = B ⋅ B ⋅ ... ⋅ B = B E i =1 Soluzione Appoggiamoci sempre ad i come “contatore” L’espressione A = A + B può anche essere A = A * B che significa “prendo il vecchio valore di A, gli moltiplico B ed il risultato lo assegno ad A” Input: B, E; Output: Y = BE i=1; Y=1 Finché i<=E − Y=Y*B − i=i+1 Ripeti Abbiamo anticipato l’espressione “Finché” così l’algoritmo funziona anche se E = 0. Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis 11 Si supponga di implementare l’algoritmo del prodotto di due valori X e N come N volte la somma di X In altri termini, la seguente sommatoria: N Y = ∑ X = X + X + ... + X = X ⋅ N Soluzione i =1 Utilizziamo i come indice per contare il numero di volte che sommiamo X con sé stesso Ricordando che l’espressione A = A + B significa: “prendo il vecchio valore di A, gli sommo B, ed il risultato lo assegno di nuovo ad A”, posso scrivere l’algoritmo come segue: − − − − Input: X e N; Output Y = X * N i=0 Y=0 Ripeti • Y=Y+X • i=i+1 − Finché i < N Fondamenti di Informatica 1 - A.A. 2008/09 - Ing. Gian Luca Marcialis 10