840 likes | 1.06k Views
fondamenti di informatica parte 4. appunti per il D.U. in Ingegneria Informatica, di Telecomunicazioni e di Meccanica, a.a. 2000-2001 di anna maria carminelli gregori. Prima di proseguire. ancora qualche riflessione utile.
E N D
fondamenti di informatica parte 4 appunti per il D.U. in Ingegneria Informatica, di Telecomunicazioni e di Meccanica, a.a. 2000-2001 di anna maria carminelli gregori fondamenti di informatica 1 parte 4 D.U.
Prima di proseguire • ancora qualche riflessione utile. • E’ gia’ stato detto che lo schema di flusso puo’ essere di notevole aiuto quando la logica del programma da costruire non e’ semplice. Altrimenti puo’ bastare indicare gli obiettivi nel linguaggio naturale (pseudocodice). • Se nel tema dell’ esame (scritto) gli obiettivi sono posti con la stesura stessa (come appare anche dal testo successivo che rappresenta la 4a domanda dell’ esame del 17.10.2000) lo schema di flusso non occorre e non e’ richiesto. fondamenti di informatica 1 parte 4 D.U.
Tema del 17.10.2000 • Scrivere in C o C++ un programma, strutturato in sottoprogrammi, che letti da tastiera 3 dati numerici, positivi e ciascuno <1 • _ ne valuti il minimo e il massimo; • _ se il minimo e’ inferiore a 0.25 proceda a moltiplicare per 1.1 i dati e a rivalutarne il minimo e il massimo, ripetendo tali operazioni fintantoche’ il minimo risulti maggiore o uguale a 0.25; • (segue) fondamenti di informatica 1 parte 4 D.U.
Tema ... • _ visualizzi sul video o i dati modificati, • o la stringa ”Non occorre modificare i valori letti”; • _ (memorizzi in una tabella in Memoria Centrale e) visualizzi sul video i dati originali. • N.B. E' SCONSIGLIATO L' USO DI VARIABILI GLOBALI. • L’ uso delle tabelle sara’ mostrato +oltre quindi nell’ ultima domanda attualmente e’ considerata solo la richiesta di visualizzazione. fondamenti di informatica 1 parte 4 D.U.
Considerazioni e ... • I 3 dati numerici, sono positivi e ciascuno <1: per memorizzarli occorreranno 3 variabili di tipo ….Di questi 3 dati si deve valutare il minimo e il massimo, NON l’ ordinamento ! • Per valutare il minimo occorre considerare una variabile dello stesso tipo dei dati e chiamarla per esempio min. Per il massimo la variabile dello stesso tipo sara’ max. • La rivalutazione del minimo implica un procedimento iterativo che si puo’ realizzare con una funzione contenente la frase while. fondamenti di informatica 1 parte 4 D.U.
… svolgimento: • Il main deve leggere i 3 valori, attivare una funzione che calcoli il minimo, un’ altra che calcoli il massimo, se il minimo e’ inferiore a 0.25 deve attivare una funzione che rivaluti minimo e massimo,e poi c’e la memorizzazione e la visualizzione: • main() • {/* Inizio Modulo principale */float a, b, c, min, max; • /*Parte esecutiva*/clrscr();cout <“\n dammi i 3 float: “; • cin >> a >> b >> c; • min = minimo(a, b, c); // passaggio per valore • max = massimo(a, b, c); // “ “ “ • if(min<0.25){max=rivaluta(&min, &a, &b, &c); // indirizzi ! • visual(a,b,c);} /*else memovis (a,b,c);*/ cin >> " "; • return 0;} fondamenti di informatica 1 parte 4 D.U.
… e la funzione minimo ? • Eccola … (e analoga sara’ la funzione massimo:) • float minimo(float a, float b, float c) • {float mi; // si puo’ usare min ?!? • cout<<“\nCon i dati: ”<<a<<“ “<<b<<“ “<<c; • if (a<b && a< c) mi=a; • else if (b<a && b<<c) mi=b; • else mi = c; • cout <<“\n il minimo e’:”<< mi; <<endl; • return mi; //la funz. ha in piu’ le visualizzazioni... • } fondamenti di informatica 1 parte 4 D.U.
Alla funzione rivaluta i parametri sono passati per indirizzo quindi: • float rivaluta (float *m, float *x1, float *y1, float *z1) // m, x1, y1, z1 sono puntatori a float: per lavorare sui valori puntati occorre usare l’ operatore * • {floatma=0;//var. locale usata per restituire il massimo • while (*m < 0.25) • {*x1= unoeun*(*x1); *y1= unoeun*(*y1); • *z1=unoeun*(*z1); *m=minimo(*x1,*y1,*z1);} • ma=massimo(*x1, *y1, *z1); // *x1,… valori !!! • return ma;} fondamenti di informatica 1 parte 4 D.U.
CAPIRE BENE E completare • il programma con le direttive al precompilatore (per es. • #define unoeun 1.1), • i prototipi dei sottoprogrammi, la funzione massimo, la procedura visual che mancano, le costanti … • farlo girare; • dopo l’ introduzione delle tabelle realizzare anche la procedura memovis. fondamenti di informatica 1 parte 4 D.U.
<condizione> • Nella sintassi delle frasi if, while et similia compare una condizione o asserzione logica che puo’ essere vera (True) o falsa (False). Sono due possibili valori di stato che vengono assunti da una qualsiasi asserzione logica nel caso che essa si verifichi o no. Potendo contrassegnare un’ asserzione logica con un identificatore di variabile, questa assumera’ il valore vero se l’ asserzione logica si verifica, falso in caso contrario. Pero’ il significato della variabile diventa quello di una variabile logica fondamenti di informatica 1 parte 4 D.U.
Il discorso quindi • si apre verso una nuova direzione che e’ la logica, trattata da molteplici studiosi ed autori gia’ nel periodo greco-romano (1 es. Aristotele) • La logica matematica studia i possibili mezzi matematici atti a descrivere la logica delle proposizioni. Tra i suoi studiosi c’ e’ per esempio il filosofo Leibnitz. Un logico-matematico molto importante e’ George Boole che nel 1847 publico’ un trattato di logica matematica che da lui prese il nome di Algebra di Boole. • A questo tipo di algebra ci introducono anche: ... fondamenti di informatica 1 parte 4 D.U.
Gli operatori logici del C e C++ : • Negazione not! • Prodotto logico and && • Somma logica or || • Il loro significato sara’ chiarito proprio dall’ algebra di Boole ed anche dall’ esempio seguente che puo’ facilitarne l’ introduzione. L’ es. si riferisce al prg. While1 che converte minuscole in maiuscole. La frase if che li’ si usa e’ simile alla seguente: fondamenti di informatica 1 parte 4 D.U.
&& = and => e inoltre • if (car>=‘a’) • {if (car<=‘z’) putchar (car+’A’-’a’) } • else putchar (car); • Significato di questa frase: se car e’ compreso nell’intervallo a-z allora scrivi car dopo averlo convertito in maiuscolo se no scrivilo cosi’ come e’. Con gli operatori logici la frase puo’ essere cosi’ riscritta: • if ((car>=‘a’) && (car<=‘z’)) • putchar (car+’A’-’a’) • else putchar (car); Si deduce dunque che: ... fondamenti di informatica 1 parte 4 D.U.
il collegamento tra espressioni relazionali • puo’ avvenire con operatori logici in modo da costruire espressioni logiche. • Preciso significato logico dell’ operatore && di collegamento nell’esempio precedente: • se car >’a’ e inoltre car < ‘z’ allora convertilo. • L’ espressione car >’a’ && car < ‘z’ e’ di tipo logico. Il C e C++ non prevedono alcun tipo di dato logico, ma lo fanno corrispondere al tipo int con i 2 valori False (=Falso) e True (=Vero) rappresentati da 0 per False e 1 per True. fondamenti di informatica 1 parte 4 D.U.
Il significato • degli operatori logici del C e C++ e’ il seguente: • Negazione not! => opposto di • Prodotto logico and && => e inoltre • Somma logica or || => oppure • Le costanti logiche True=Vero=1 e False=Falso=0 (che puo’ assumere ogni variabile e/o espressione logica) sono tipiche dell’ algebra di Boole. fondamenti di informatica 1 parte 4 D.U.
Algebra di Boole • L’ idea di G. Boole era quella di automatizzare il ragionamento. Punto di partenza del suo discorso sono le proposizioni con significato di osservazioni e/o ‘asserzioni logiche’. Es. Oggi piove; Prendo un taxi; Sono ricco; Socrate e’ un uomo; .…Di ciascuna di queste si puo’ dire che e’ vera o falsa. (Quali altre non hanno questo significato? Per es. le ingiunzioni: Non uscire!) • Ad ogni asserzione logica si puo' associare una variabile a 2 valori (binaria) contenente uno dei 2 valori Vero o Falso, (True , False), 1 o 0. Si tratta delle variabili booleane o logiche. fondamenti di informatica 1 parte 4 D.U.
True e False • sono le 2 uniche costanti logiche dell’ algebra di Boole con valori: False=0 True 0 posta = 1 • Le variabili booleane o logiche sono simili alle variabili numeriche usate nell’ algebra classica, ma possono assumere solo questi 2 valori ossia sono binarie. Oggetto dell’ algebra di Boole sono insiemi di variabili con nomi diversi e contenenti False = 0 o True =1. • Sulle 2 entita’ 0 e 1 si possono introdurre le 3 operazioni basilari dell’ algebra di Boole. fondamenti di informatica 1 parte 4 D.U.
Operazioni di base dell’ algebra sono: • il prodotto logico o congiunzione = and, • la somma logica o disgiunzione = or , • la complementazione o negazione = not. • La definizione di ogni operazione avviene tramite una tabellina: in quelle del prodotto e della somma compaiono due variabili indipendenti ed una variabile dipendente che contiene il risultato; in quella della negazione la variabile indipendente e’ solo una come la variabile dipendente. fondamenti di informatica 1 parte 4 D.U.
Tabellina di Prodotto(congiunzione = and ) • X Y X Y con X e Y var. indipend. e XY var. dipend. • 0 0 0 • 1 0 0 • 0 1 0 • 1 1 1 • Tabellina di Somma(disgiunzione = or ) • X Y X+Y con X e Y var. indipend. e X+Y var. dipend. • 0 0 0 • 1 0 1 ARITMETICA ELEMENTARE, MA PARTICOLARE • 0 1 1 perche’ 1 e’ il tetto oltre il quale non si va !!! • 1 1 1 fondamenti di informatica 1 parte 4 D.U.
Tabellina di negazione e … funzioni elementari ! • A not (A)=Ā con A var. indipend. e not(A) var. dipend. • 0 1 not (A) e’ indicata anche con A barrato • 1 0 ossia A negato o -A • Ogni operazione puo’ essere considerata come una funzione elementare di 1 o 2 variabili • G.Boole, evidenziando la correlazione tra le var. binarie e le proposizioni logiche associabili ad esse, sottolinea come anche le operazioni booleane su tali proposizioni logiche assumono un significato logico. fondamenti di informatica 1 parte 4 D.U.
Significato logico delle operazioni booleane (esempi) • Operazione logica congiunzione= and = . =‘e inoltre’ • Piove Ho soldi Prendo taxi • X Y X Y (come in algebra e’ omesso il . ) • 0 0 0 • 1 0 0 • 0 1 0 • 1 1 1 • Oper. logica complementazione Fa freddo Non Fa freddo • se la var. vale 1 il risultato e’ 0 A not (A)=Ā • “ “ “ “ 0 “ “ “ 1 0 1 • 1 0 fondamenti di informatica 1 parte 4 D.U.
Operazioni algebriche ==>operazioni logiche • Operazione logica disgiunzione = or = + = ‘oppure’ • Piove Fa fresco Metto impermeabile • X Y X + Y • 0 0 0 • 1 0 1 • 0 1 1 • 1 1 1 • Altro esempio: sia b = oggi piove ed e’ tempo brutto; • c = oggi e’ tempo bello; • se b = true (=1) deve essere c = false (=0) e viceversa, e poi non puo’ essere che sia b=c=true fondamenti di informatica 1 parte 4 D.U.
Conclusioni: • 1a conclusione: l’ A.d.B. definisce operazioni di tipo matematico che permettono di interpretare operazioni logiche; • 2a conclusione: gli operatori dell’ A.d.B. possono effettuare automaticamente le proposizioni logiche tipiche dell’ intelligenza umana … primo passo verso la programmazione logica (Prolog); • 3a conclusione: data la semplicita’ dell’ A.d.B. e’ possibile l’ automazione dei suoi calcoli con circuiti elettronici. fondamenti di informatica 1 parte 4 D.U.
Come si traducono le operazioni dell’ A.d.B. in C++ • Si definiscono le costanti True e False. In C e C++ la definizione puo’ avvenire in diversi modi dei quali uno usa la direttiva al precompilatore: • #define True 1 // in C basta che sia positiva 0 • #define False 0 • Le variabili logiche sono intere e si puo’ usarle normalmente: ES. int ripeti = True; cfr. ripeleg • Stabilito che True = 1 si capisce il significato del ciclo infinito while(1) ed anche alcune condizioni del tipo: if (ch=getchar()) cout<< “ch”; …. O NO ? Se NO cfr. in program5 Tasto.cpp
Gli operatori logici del C e C++ • (come gia’ visto) collegano le variabili logiche o le espressioni relazionali e permettono di ottenere cosi’ un’ espressione logica. • Complementazione not! • Prodotto logico and && • Somma logica or || • Es. di uso in while2. • Con questi operatori o simili, ma di uguale significato, il C, C++ e gli altri linguaggi di programmazione come il Pascal, il Basic, ... possono essere usati per costruire programmi con analisi di tipo logico (per es. gli Expert System per le diagnosi automatiche.) fondamenti di informatica 1 parte 4 D.U.
A proposito della variabile logica da usare in switch4 • Quando la funzione menu() viene attivata nella frase switch e’ giusto che richiami la funzione leggi(n) in quanto n deve dirottare il controllo al caso ennesimo; invece quando la funzione menu() viene attivata nelle 2 funzioni di elaborazione non occorrera’ una nuova lettura purche’ n sia ancora disponibile. Questo e’ il punto: n e’ ancora disponibile? NO se in menu non si dichiara: • static int n; fondamenti di informatica 1 parte 4 D.U.
Meo 1 lez.33 Significato delle variabili automatiche e statiche • In C e C++ ogni variabile e’ caratterizzata oltre che dal tipo dalla classificazione rispetto alla sua allocazione in memoria ed alla sua durata. Le variabili finora trattate sono chiamate automatiche perche’ iniziano ad esistere (sono allocate in memoria) quando la funzione in cui sono definite e’ attivata e “spariscono” all’ uscita dalla funzione, non conservando il loro valore tra una attivazione e l’ altra. Per conservarlo devono essere dichiarate static: senza questo attributo sono automatiche. fondamenti di informatica 1 parte 4 D.U.
Static => protezione • Tutte la variabili (locali o globali) definite static sono create ed inizializzate prima che il main inizi l’ esecuzione e sono distrutte solo al termine dell’ esecuzione del main program: la loro inizializzazione e’ eseguita una sola volta, se manca sono inizializzate a 0. • Anche una var. globale (o esterna) puo’ essere dichiarata static: in tal caso diventa visibile e usabile solo all’ interno delle funzioni definite nello stesso file sorgente in cui essa e’ definita, ma diventa invisibile ad altri file, a sua protezione. fondamenti di informatica 1 parte 4 D.U.
Conclusione per menu() • Per salvare il valore di n letto solo la prima volta bisogna dichiarare n static (non solo int) e quindi scrivere menu cosi’ (come in switch5): • int menu (int attiva) /* attiva param. formale di tipo logico che deve essere True solo al primo richiamo e False ai richiami successivi*/ • {static int n; // n inizializzata a 0 • if (attiva) leggi(&n) /*se attiva = True in n va il valore digitato che resta immutato fino a nuova lettura che non si verifica se attiva = False */ • return n; } fondamenti di informatica 1 parte 4 D.U.
A.d.B. e dualita’ • L’ A.d.B. si puo’ definire in modo molto rigoroso introducendo il concetto di reticolo caro ai matematici. In questo approccio elementare si introdurrano le Proprieta’ degli elementi, degli operatori logici e delle operazioni logiche. • a) l’ elemento 0 si dice duale dell’ elemento 1, l’ operatore + duale dell’ operatore .e vale la seguente legge di dualita’: • b) da qq. identita’ booleana se ne puo’ trarre un’ altra per dualita’ sostituendo i rispettivi duali agli elementi 0 e 1 ed a ogni operatore. fondamenti di informatica 1 parte 4 D.U.
c) proprieta’ delle operazioni logiche: si dimostrano con le • tabelle di verita’ e sono estensibili a n variabili. • 1) associativa della somma: • (A+B)+C = A+(B+C) • NOTA: la somma di 2 o piu’ variabili assume il valore 0 solo se tutte la var. sono 0 e assume 1 negli altri casi • 2) associativa del prodotto: • (A B)C = A(BC) • NOTA: il prodotto di 2 o piu’ variabili assume il val. 1 solo se tutte la var. sono 1 e assume 0 negli altri casi fondamenti di informatica 1 parte 4 D.U.
Proprieta’ delle operazioni dell’ Algebra di Boole • 3) doppia negazione: • not (not A) = A • 4) distributiva del prodotto: • A (B+C) = AB + AC • 5) distributiva della somma: • A+(BC) = (A+B)(A+C) (piove o (c’e’ vento e inoltre fa freddo) = (piove o c’e’ vento) e inoltre (piove o fa freddo)) • 6) assorbimento • AA = A A+A = A • 7) proprieta’ del complemento: A+Ā =1 fondamenti di informatica 1 parte 4 D.U.
Proprieta’ fondamentali & Legge di de Morgan: • not (A+B) = not(A)not(B) il negato della somma logica = prodotto dei negati (ossia il negato di piove o fa fresco = non piove e inoltre non fa fresco) • duale: not(AB) = not(A) + not(B) • Legge di de Morgan estesa: (chiarisce la dualita’ ) • se in un’ espressione booleana si sostituisce ogni variabile col suo complemento, ogni operatore + con l’operatore prodotto, ogni operatore prodotto con l’operatore + si ottiene il complemento dell’ espressione data.
Applicazione alla • legge di de Morgan duale che e’: • not(AB) = not(A) + not(B) (il negato del prodotto = somma dei negati) • Se in not(AB) (1o menbro) si sostituisce • A con not(A), B con not(B) e l’ operatore . con + si ottiene: • not(not(A) + not(B)) ossia il complemento di not(A) + not(B) (2o menbro) che e’ uguale a not(AB)!! quindi il complemento di not(AB)=AB, • o come si indichera’ tra 2 diapo, nand(AE) = (Ā+Ē). fondamenti di informatica 1 parte 4 D.U.
Operazioni algebriche ==> circuiti logici • Come si e’ gia’ visto, ogni operazione eseguibile su variabili booleane (somma, prodotto, complementazione ed altre da questa deducibili) puo' essere definita tramite una tabella con variabili indipendenti e dipendenti detta tabella di verita’ . • E per ciascuna di queste tabelle di verita' esiste il corrispondente circuito elementare …=>Importanza delle tabelle di verita’ fondamenti di informatica 1 parte 4 D.U.
Meo 1 lez.9 e seg. Tabelle di verita’ delle Operazioni fondamentali • che sono: not • or • and • ed anche: xor or esclusivo • nand and negato • nor or negato • Per le relative tabelle ed i corrispondenti circuiti elementari (detti porte logiche) vedere il lucido tratto dal Bishop ed esteso da dove appare: nand(AE) = (Ā+Ē); nor(AE) = ĀĒ. fondamenti di informatica 1 parte 4 D.U.
Realizzazione circuitale del calcolo binario • Per rappresentare grandezze binarie si usa di norma la tensioneelettricacome grandezza di riferimento con valori convenzionali: alto =1 basso =0. • Un circuito elettronico elementare che rappresenti un’ operazione dell A.d.B. e’ detto porta (gate). Esso riceve in ingresso uno o due impulsi elettrici da 1 o da 2 punti di ingresso e fornisce 1 uscita nel punto di uscita: le tensioni sui 2 punti di ingresso rappresentano i valori delle variabili indipendenti; la tensione sul punto di uscita il valore della variabile dipendente. fondamenti di informatica 1 parte 4 D.U.
Grafici dei circuiti elementari = porte • I simboli dei circuiti elementari sono nel lucido tratto dal Bishop: si riconoscano le varie operazioni trattate per es. AB (ossia A and B) come e’ rappresentata ? e A+B ? • In ogni circuito elettronico di E.E. sono utilizzate le porte. • I circuiti logici ottenuti combinando le porte logiche corrispondono a funzioni dell’ A.d.B. • Esercizio: scrivere in C o C++ 3 funzioni per attuare xor= or esclusivo, nand = and negato, nor= or negato e nominarle oresc, andne, orne. fondamenti di informatica 1 parte 4 D.U.
Funzioni di variabili booleane • Con solo 2 valori discreti (e non un' infinita' di valori continui come 0.001, 0.011, 0.111 … 0.990 ...) anche le Funzioni dell’ A.d.B. si possono rappresentare in forma tabellare. • Per esempio siano 2 variabili booleane A, E col significato di: • A = oggi piove; E = ho l' ombrello; la funzione f(A,E) (col significato di: f(A,E) = esco in auto), si potra' scrivere cosi’: • A E f(A,E) • 0 0 0 oggi piove=ho l’ombrello=esco in auto=falso • 1 0 1 “ “ vero “ “ falso “ “ “ vero • 0 1 0 etc. • 1 1 1 fondamenti di informatica 1 parte 4 D.U.
Tabelle di verita' delle f(x,y) • La tabella precedente e' la tabella di verita' della funzione f(A,E). La sua espressione booleana si costruisce "elencando" tutte le condizioni che portano f(A,E) ad assumere valore VERO. • Nell’ esempio: f(A,E) e’ vera (ossia esco in auto) se A e’ vera e inoltre E e’ falsa (oggi piove e non ho l’ ombrello) oppure se A e’ vera e inoltre E e’ vera (oggi piove e inoltre ho l’ ombrello). ANCHE: f(A,E) e’ vera se: A e’ vera e inoltre Ē e’ vera oppure se A e inoltre E sono vere. fondamenti di informatica 1 parte 4 D.U.
L’ espressione booleana di f • e’ quindi: f(A,E) = AĒ + AE = A(Ē+E) = A • Questo e’ il modo di costruire l’ espressione booleana di una qualunque funzione f(X,Y,Z …) dove X, Y, Z… sono variabili booleane • (L’ "elenco" di tutte le condizioni che portano f ad assumere SOLO il valore VERO =1, e’ costruito con le righe della tabella di verita’ in cui f=1: su ogni riga le variabili sono legate da operatori and mentre le righe sono legate da operatori or). fondamenti di informatica 1 parte 4 D.U.
Semplificazione • L’ espressione ottenuta puo’ poi essere tradotta in un circuito logico equivalente: se pero’ non e’ semplice e’ meglio semplificarla applicando le fondamentali proprieta’ dell' algebra di Boole. • Si arriva ad un' espressione booleana semplificata che si traduce in un circuito logico piu’ semplice e quindi piu’ economico di quello che si otterrebbe utilizzando l' espressione non semplificata. fondamenti di informatica 1 parte 4 D.U.
A E U f 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 A parole: f e’ VERA se A,E,U sono tutte FALSE oppure se A e E sono FALSE e inoltre U e’ VERA oppure se A,E,U sono tutte VERE oppure se A einoltre U sono VERE einoltre E e’ FALSA. Esempio: fondamenti di informatica 1 parte 4 D.U.
Semplificazione • L' espressione booleana corrispondente e’: • f= ĀĒŪ + ĀĒU + AĒU + AEU 1a espressione da semplificare • 1o passo ĀĒŪ + ĀĒU = ĀĒ (Ū+U) = ĀĒ proprieta’ dist. del prodotto e del complemento (U+ Ū)=1 • 2o passo AĒU + AEU = AU(E+Ē) = AU proprieta’ dist. del prodotto e del complemento (E+Ē)=1 • Quindi: • f= ĀĒ + AU ... f ... fondamenti di informatica 1 parte 4 D.U.
Il circuito corrispondente • (molto piu’ semplice di quello relativo all’ espressione non semplificata) e’ elementare: • i 2 segnali A e U entrano direttamente in una porta and mentre i segnali A e E prima di entrare in una porta and devono essere complementati o possono entrare direttamente in una porta nor. Riflettere su questo: per quale legge ? Le uscite delle 2 porte and e nor entrano poi in una porta OR da cui esce il segnale risultante, valore della f(A,E,U). fondamenti di informatica 1 parte 4 D.U.
Conclusioni: • i circuiti logici che si ottengono combinando le porte logiche, corrispondono a funzioni dell' algebra booleana ciascuna caratterizzata da una Tabella di Verita’ e rappresentata da un' espressione. • L’ espressione si semplifica usando le relazioni fondamentali, per es. la proprieta’ distributiva del prodotto: A(B+C) = AB + AC; • o la proprieta’ distributiva della somma: A+(BC) = (A+B)(A+C); (fa freddo o (nevica e piove)) • o … fondamenti di informatica 1 parte 4 D.U.
La semplificazione si ottiene • anche usando la proprieta’ di assorbimento: • A+A = A; • AA = A • o le leggi di de Morgan, di dualita’ … • Si otttengono cosi’ i • Circuiti logici Combinatori che hanno la caratteristica di essere "smemorati": • i valori di uscita sono funzione dei soli valori di ingresso in un dato istante. fondamenti di informatica 1 parte 4 D.U.
Altro tipo di circuiti logici sono i circuiti sequenziali • con memoria: i valori di uscita sono funzione dei valori di ingresso e dello Stato del circuito. • Per Stato di un sistema si intende in generale il valore della situazione in cui il sistema si trova. • Esempio del prof. Mezzalama e’ il sistema "apriporta” a 2 Stati: porte aperte-porte chiuse e relativi comportamenti diversi. • Esempio tipico di Circuiti Combinatori e’ il Decodificatore; di Circuiti Sequenziali e’ il Registro di Memoria detto Flip-Flop. • Tutti questi Circuiti si trovano nella CPU di E.E. fondamenti di informatica 1 parte 4 D.U.
Decodificatori • Per la conversione dei dati da un formato all' altro sono necessari appositi DECODIFICATORI. • Un semplice esempio di DECODIFICATORE elementare e’ formato da un circuito con 2 morsetti di ingresso (su cui scrivere un codice da 0 a 3) e 4 morsetti di uscita di cui solo uno deve essere attivo in un certo istante. Il codice scritto sui 2 morsetti di ingresso indica il morsettodi uscita che si vuole rendere attivo nell' istante considerato. Queste sono le specifiche del circuito DECODIFICATORE. fondamenti di informatica 1 parte 4 D.U.
L’ esempio di decodificatore • presentato appare inizialmente come una scatola nera qui sotto rappresentata che per ogni segnale di input ha un segnale di output. • A _____ ______0_ • ______1_ • E _____ ______2_ • ______3_ fondamenti di informatica 1 parte 4 D.U.