La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

R. Grande - Corso di Informatica - 2006 - '07 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione anche per la logica.

Presentazioni simili


Presentazione sul tema: "R. Grande - Corso di Informatica - 2006 - '07 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione anche per la logica."— Transcript della presentazione:

1 R. Grande - Corso di Informatica '07 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione anche per la logica di elaborazione i computer digitali utilizzano circuiti di tipo ON/OFF con due stati elettrici. È quindi necessario disporre di un sistema di calcolo che operi su variabili che possono assumere due soli valori. Un tale sistema era stato creato nel XIX secolo dal matematico inglese George Boole ed è noto come algebra booleana. Le variabili booleane possono assumere i valori logici 0 e 1 oppure V (vero) e F (falso) (true e false)

2 R. Grande - Corso di Informatica '07 2 Funzioni booleane Come in qualsiasi algebra, anche in quella booleana si possono definire delle funzioni f(a,b,c,…) che operano sulle variabili e possono quindi restituire due soli risultati: 0 e 1 oppure V (vero) e F (falso) (true e false). Potendo le variabili assumere solo 2 valori le possibili combinazioni di n variabili sono 2 n (un numero finito) e quindi per rappresentare le funzioni logiche si possono usare delle tabelle dette tavole di verità Esempio: abcf(a,b,c) Nella tavola di verità, per ogni possibile combinazione delle variabili si riporta il valore assunto dalla funzione. Nel caso dellesempio con tre variabili abbiamo 2 3 =8 combinazioni possibili quindi la tavola ha 8 righe. Al posto dei simboli 0 e 1 avremmo potuto usare Vero e Falso

3 R. Grande - Corso di Informatica '07 3 Operatori booleani Come in ogni algebra, anche nellalgebra booleana, sono definite alcune operazioni eseguibili sulle variabili. Per costruire una funzione booleana si utilizzano gli operatori booleani o logici che stabiliscono le relazioni tra le variabili della funzione. Nellalgebra di Boole esistono tre operatori fondamentali: NOTnegazione o complemento ORdisgiunzione o somma logica ANDcongiunzione o prodotto logico E alcuni operatori derivati tra cui XOR (da eXclusive OR disgiunzione esclusiva)

4 R. Grande - Corso di Informatica '07 4 Operatore NOT NOT è un operatore unario, cioè opera su una sola variabile invertendone il valore secondo la seguente tavola di verità: aNOT(a) Loperazione di negazione si indica anche con ā

5 R. Grande - Corso di Informatica '07 5 Operatore OR OR è un operatore binario, cioè opera tra due variabili eseguendo la somma logica secondo la seguente tavola di verità: aba OR b Il risultato è 1 se almeno una delle variabili è 1 Oppure Il risultato è 0 se e solo se entrambe le variabili sono 0 Loperazione di somma logica si indica anche con a + b

6 R. Grande - Corso di Informatica '07 6 Operatore AND AND è un operatore binario, cioè opera tra due variabili eseguendo il prodotto logico secondo la seguente tavola di verità: aba AND b Il risultato è 1 se e solo se tutte le variabili hanno il valore 1 Oppure Il risultato è 0 se almeno una delle variabili è 0 Loperazione di prodotto logico si indica anche con a. b

7 R. Grande - Corso di Informatica '07 7 Esempi di funzioni booleane (1) Con i tre operatori visti si può realizzare qualsiasi funzione booleana ad esempio: f(a,b,c) = a AND b OR NOT c che ha la seguente tavola di verità costituita da 2 3 =8 righe, se avessimo una funzione di 4 variabili avremmo 2 4 = 16 righe, con 5 variabili 2 5 =32 righe ecc. abcf(a,b,c) Tra gli operatori logici esiste la seguente scala di precedenza: NOT, AND, OR Quindi nella funzione a fianco si esegue prima il NOT c quindi si esegue lAND tra a e b e infine si esegue lOR tra i due risultati.

8 R. Grande - Corso di Informatica '07 8 Esempi di funzioni booleane (2) Lordine di precedenza visto può essere cambiato con luso delle parentesi: f(a,b,c) = a AND (b OR NOT c), in questo caso si risolve prima la parentesi quindi si esegue NOT c, quindi si fa lOR con b e infine si esegue lAND tra a e il risultato della parentesi; la tavola di verità diventa: abcf(a,b,c)

9 R. Grande - Corso di Informatica '07 9 Esempi di funzioni booleane (3) Consideriamo la seguente funzione: f(a,b,c) = NOT(a OR b) OR c la tavola di verità si ricava in questo modo: si risolve la parentesi facendo lOR tra a e b, quindi si applica il NOT al risultato e infine si esegue lOR con c abcf(a,b,c) abc

10 R. Grande - Corso di Informatica '07 10 Operatore XOR XOR è un operatore binario, cioè opera tra due variabili eseguendo loperazione di OR esclusivo secondo la seguente tavola di verità: aba XOR b Il risultato è 1 se le variabili hanno valore diverso Oppure Il risultato è 0 se le variabili hanno lo stesso valore Loperazione di OR esclusivo si indica anche con a (+) b

11 R. Grande - Corso di Informatica '07 11 Lalgebra di Boole è alla base dei circuiti logici (Hardware) delle procedure logiche secondo le quali avvengono le elaborazioni (Software) Le basi dellhardware e del software

12 R. Grande - Corso di Informatica '07 12 Un circuito logico (o rete logica) è costituito da porte logiche elementari che realizzano le operazioni dellalgebra di Boole La porta NOT la porta OR La porta AND la porta XOR Logica e hardware

13 R. Grande - Corso di Informatica '07 13 Logica e hardware (un esempio) Il semi-sommatore Nella somma di due bit si verificano i seguenti casi: Logica e hardware ABSommaRiporto Si vede che la somma è lOR esclusivo (XOR) dei due ingressi, mentre il riporto è il prodotto logico (AND) dei due ingressi. A B Somma Riporto Quindi un semi-sommatore può essere realizzato dalla rete logica:

14 R. Grande - Corso di Informatica '07 14 Nella preparazione del software si ricorre spesso alluso di operatori logici quando il programma deve decidere le operazioni da eseguire in base al verificarsi o meno di una combinazione di eventi (vero/falso). Esempio 1: Decisione sulla procedura da eseguire in un programma SE esami = sostenuti AND tasse = pagate ALLORA accesso esame di laurea = SI ALTRIMENTI accesso esame di laurea = NO Si può accedere allesame di laurea solo se sono stati sostenuti tutti gli esami E sono state pagate le tasse Esempio 2: Interrogazione di un archivio (autore = Pirandello OR autore = Verga) AND (prezzo NOT > 20) Cerchiamo i libri di Pirandello O Verga E che NON costino più di 20 euro Esempio 3: Impostazione di una ricerca nel Web Trova i documenti in cui siano presenti i termini (Olimpiadi OR Giochi) AND invernali Cerchiamo i documenti che contengano i termini olimpiadi O giochi E il termine invernali Logica e software (esempi)

15 R. Grande - Corso di Informatica '07 15 Sviluppo e produzione del software ProblemaAlgoritmo Programma sorgente scritto in un linguaggio di programmazione Programma eseguibile linguaggio macchina (binario) Test Analisi Codifica Traduzione: (compilatore o interprete) Funziona ? si no Fine Errori formali? no si

16 R. Grande - Corso di Informatica '07 16 Linguaggi di programmazione Hardware Linguaggio macchina Linguaggio assembler Linguaggi di alto livello

17 R. Grande - Corso di Informatica '07 17 Linguaggio macchina Unico linguaggio effettivamente comprensibile al processore (CPU) Le istruzioni sono costituite da sequenze di bit: ad esempio un byte per il Codice Operativo e altri byte per gli Operandi dellistruzione: Legato strettamente al particolare processore – ogni CPU ha il suo set di istruzioni C.O. della somma1° operando2° operando Somma di due numeri

18 R. Grande - Corso di Informatica '07 18 Linguaggio assembler Deve essere tradotto da un assemblatore; Le istruzioni sono costituite da codici mnemonici e operandi espressi in vari modi (immediati, a registro, tramite indirizzamenti diretti o indiretti): es. ADD A,B (somma il contenuto dei registri A e B e metti il risultato in A) È molto efficiente in termini di velocità di esecuzione in quanto molto vicino allhardware È legato al processore Utilizzato per programmare procedure di basso livello (vicine allhardware) come ad esempio i driver dei dispositivi

19 R. Grande - Corso di Informatica '07 19 Linguaggi di alto livello (1) Fortran - Cobolanni 50 Algol60- PL1 - BASICanni 60 Pascal - C anni 70 C++anni 80 Javaanni 90

20 R. Grande - Corso di Informatica '07 20 Linguaggi di alto livello (2) Necessitano di programmi traduttori per ottenere codici eseguibili dal processore: Compilatori programmi che traducono tutto il codice sorgente in un codice macchina eseguendo controlli sintattici. Producono un programma eseguibile indipendente dal sorgente e molto efficiente. (Fortran, Cobol, Pascal, C, C++) Interpreti programmi che traducono ed eseguono il codice sorgente riga per riga senza produrre un codice eseguibile. Ogni esecuzione richiede la presenza e la traduzione del sorgente e ciò ne limita lefficienza. (BASIC) Virtual Machine sistema che combina i due precedenti: il codice sorgente viene tradotto da un compilatore in un codice intermedio (bytecode) il quale poi è interpretato dalla V.M. Ciò rende i programmi portabili su piattaforme diverse (ognuna dispone della sua V.M.) (JAVA)

21 R. Grande - Corso di Informatica '07 21 Algoritmo (definizione) Un algoritmo è una sequenza finita e ordinata di operazioni che, eseguite su opportuni dati, portano alla soluzione di un problema in un tempo finito. Un algoritmo è quindi costituito da : Operazioni + Dati

22 R. Grande - Corso di Informatica '07 22 Algoritmo (proprietà) Un algoritmo deve essere: Eseguibilecostituito da operazioni che lesecutore può fare Non ambiguoogni operazione deve essere univocamente interpretabile dallesecutore Finitoil numero totale delle operazioni da eseguire deve essere finito ed eseguibile in un tempo finito Deterministicola sequenza delle operazioni è esattamente determinata e non dipende da elementi aleatori Completodeve prevedere tutte le situazioni che si possono presentare nella risoluzione del problema

23 R. Grande - Corso di Informatica '07 23 Algoritmo & Programma Un algoritmo può essere codificato in un linguaggio di programmazione per dar vita a un programma Un programma è una sequenza ordinata di istruzioni che dicono a un esecutore (computer) come operare sui dati per ottenere i risultati Esecutore Programma Dati di ingresso Risultati

24 R. Grande - Corso di Informatica '07 24 Dati - Variabili Una variabile è un dato il cui valore può essere modificato durante lesecuzione del programma Una variabile è caratterizzata da un nome, da un tipo e da un contenuto Esempi: n1numero intero15 n2numero reale12,34 s1stringa di caratteripippo logbooleanotrue NomeTipo Contenuto o valore

25 R. Grande - Corso di Informatica '07 25 Dati - Costanti Una costante è una rappresentazione simbolica di un dato che non deve cambiare durante lesecuzione del programma: Costante numerica23 Costante stringapippo Le costanti stringa si scrivono tra virgolette per distinguerle dai nomi di variabile

26 R. Grande - Corso di Informatica '07 26 Dati - Espressioni Unespressione è un insieme di dati, variabili e costanti, operatori e parentesi a cui corrisponde un risultato: Espressionerisultato (n1+n2)/2somma dei contenuti delle variabili n1 e n2 diviso * 1251 (si applicano le regole di precedenza dellalgebra) conto + correntecontocorrente (loperatore + tra stringhe ha significato di concatenazione)

27 R. Grande - Corso di Informatica '07 27 Linguaggio di progetto e Pseudocodifica Per introdurre i concetti di base della programmazione usiamo un linguaggio di progetto che ci consente di eseguire una pseudocodifica. Il linguaggio di progetto è uno strumento linguistico (vocabolario, sintassi e semantica) per rappresentare algoritmi. Il passo successivo è la traduzione in un vero e proprio linguaggio di programmazione cioè la codifica

28 R. Grande - Corso di Informatica '07 28 Un esempio di linguaggio di progetto Il programma è costituito da due parti: la parte dichiarativa - in cui si definiscono le variabili utilizzate nel programma e inizia con la parola var la parte esecutiva - in cui si definiscono le operazioni da eseguire chiusa tra le parole inizio e fine Un blocco di istruzioni è un insieme di istruzioni chiuso tra le parole inizio e fine Ogni istruzione è terminata da un ; Definiamo un linguaggio di progetto molto semplificato con un minimo di regole di sintassi:

29 R. Grande - Corso di Informatica '07 29 Istruzioni di Ingresso e Uscita leggi(Variabile): prende il dato presente in ingresso e lo mette nella variabile scrivi(Variabile): manda il contenuto della variabile in uscita; Unoperazione di ingresso (input) è normalmente indicata come una lettura di uninformazione da parte dellesecutore Unoperazione di uscita (output) è normalmente indicata come una scrittura di uninformazione da parte dellesecutore

30 R. Grande - Corso di Informatica '07 30 Ingresso e Uscita - Esempio var cognome, nome: stringa; anni: numero intero; inizio leggi (cognome); leggi (nome): leggi (anni); scrivi (nome, cognome, anni); fine Parte dichiarativa Parte esecutiva

31 R. Grande - Corso di Informatica '07 31 Istruzione di Assegnamento Listruzione di assegnamento dà un valore a una variabile: Variabile = espressione Esempi: n1 = 1; n2 = n1 + 2; somma = n1 + n2; media = (n1 + n2 + n3 + n4 + n5)/5;

32 R. Grande - Corso di Informatica '07 32 Istruzione Condizionale Listruzione condizionale decide quali operazioni eseguire in base al verificarsi o meno di una condizione: se (condizione) allora blocco-istruzioni 1 altrimenti blocco-istruzioni 2 La condizione è unespressione booleana, se è vera viene eseguito il blocco di istruzioni 1, altrimenti (se è falsa) viene eseguito il blocco di istruzioni 2

33 R. Grande - Corso di Informatica '07 33 Istruzione Condizionale - Esempio var x, y: numero intero; …………. inizio leggi x; leggi y; se (x>=y) allora scrivi (x) altrimenti scrivi (y); ………. fine

34 R. Grande - Corso di Informatica '07 34 Istruzioni di Iterazione Uniterazione è la ripetizione ciclica di un blocco di istruzioni per un certo numero di volte. Il numero di cicli da effettuare è determinato da una condizione di uscita dalliterazione. La posizione della condizione di uscita classifica le iterazioni in due tipi: Iterazione a condizione iniziale Iterazione a condizione finale

35 R. Grande - Corso di Informatica '07 35 Iterazione a condizione iniziale mentre (condizione) esegui blocco-istruzioni Viene esaminata, allinizio di ogni ciclo, la condizione di uscita e, se questa è vera, viene eseguito il blocco di istruzioni; quando la condizione risulta falsa si esce dalliterazione. In questo modo il blocco potrebbe anche non essere eseguito per niente, nel caso in cui la condizione di uscita sia subito falsa

36 R. Grande - Corso di Informatica '07 36 Iterazione a condizione iniziale - Esempio var c, max: numero intero; ……………. inizio leggi (max): c = 1; mentre (c<=max) esegui inizio scrivi (c); c = c +1; fine ………. fine Vengono scritti i numeri naturali da 1 a max. Nel caso in cui nella variabile max venga letto un valore nullo o negativo literazione non avviene neanche una volta e non viene scritto nessun numero.

37 R. Grande - Corso di Informatica '07 37 Iterazione a condizione finale esegui blocco-istruzioni finché (condizione) Viene esaminata, alla fine di ogni ciclo, la condizione di uscita e, se questa è vera, viene rieseguito il blocco di istruzioni; quando la condizione risulta falsa si esce dalliterazione. In questo modo il blocco viene eseguito almeno la prima volta.

38 R. Grande - Corso di Informatica '07 38 var c, max: numero intero; ……………… inizio ……………. leggi (max); c = 1; esegui scrivi (c); c = c +1; finché (c<=max); ………. fine Vengono ancora scritti i numeri naturali da 1 a max. Nel caso in cui nella variabile max venga letto un valore nullo o negativo literazione avviene una volta e viene scritto il numero 1. Iterazione a condizione finale - Esempio In questo caso quindi sarebbe più opportuno usare literazione a condizione iniziale

39 R. Grande - Corso di Informatica '07 39 Esempio di programma (1) Si vuole un programma che riceva in ingresso una serie di 10 valori e li controlli mandando in uscita solo quelli che rientrano in un certo range (ad es. 10 – 50), mentre per gli altri emette il messaggio fuori range. var valore, cont: numero intero; inizio cont = 1; mentre (cont <= 10) esegui inizio leggi(valore); se (valore >= 10) AND (valore <= 50) allora scrivi (valore) altrimenti scrivi(fuori range); cont = cont + 1; fine; scrivi (fine valori); fine. Una possibile soluzione contiene una iterazione a condizione iniziale per leggere i dieci valori e, al suo interno, una struttura condizionale per controllare il valore ricevuto. Notare luso delloperatore logico AND nella condizione

40 R. Grande - Corso di Informatica '07 40 Esempio di programma (2) Si vuole un programma che, ricevuti in ingresso due numeri a e b, calcoli il loro Massimo Comun Divisore (MCD). var a, b, r: numero intero; inizio leggi (a); leggi (b); esegui r = a mod b; a = b; b = r; finchè (r 0); scrivi a; fine. Una possibile soluzione è lalgoritmo di Euclide che funziona così: 1.Si calcola il resto r della divisione intera a/b; 2.Se r = 0 b è il risultato cercato e il processo finisce; altrimenti si pone a = b e b = r e si ripete dal punto 1


Scaricare ppt "R. Grande - Corso di Informatica - 2006 - '07 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione anche per la logica."

Presentazioni simili


Annunci Google