George Boole, nel 1854, pubblicò un libro, An Investigations of the Laws of Thought (Un esame sulle leggi logiche del pensiero), in cui dimostrava che la maggior parte del pensiero logico, privata di particolari irrilevanti e verbosità, potesse essere concepita come una serie di scelte. Questa idea è divenuta la base dei computer.
In questa presentazione l'algebra di Boole, piuttosto che con il suo formalismo matematico, verrà proposta in modo da renderla più simile al linguaggio naturale: in tal modo, risulterà più intuitivo comprendere il funzionamento dei circùiti digitali che costituiscono la base dei computer.
Prenderemo le mosse per la nostra discussione riferendoci ad un "problema" del tutto comune. Questo approccio, ha il vantaggio di evidenziare come un sistema di elaborazione dati permetta di trattare non solo problemi numerici, ma anche alfanumerici (alfabetico-numerici) e dunque di carattere generale. Immaginiamo, per esempio, di voler tradurre in un diagramma di flusso le seguenti affermazioni: "esco se è bel tempo ed è caldo"; "esco se è bel tempo o se è caldo".
fig. 1: diagramma di flusso con AND (entrambe le condizioni devono essere verificate) | fig. 2: diagramma di flusso con OR (almeno una condizione deve essere verificata) |
Con le istruzioni riportate nella tabella a fianco, possiamo tradurre i due differenti diagrammi di flusso esaminati in sequenze di istruzioni. Per far questo, è necessario aggiungere un nuovo simbolo grafico (un parallelogramma) di inizializzazione ai nostri diagrammi di flusso. Questo simbolo implica che l'elaboratore si attende che gli vengano forniti i valori di A e B (che possono essere 0 o 1) tramite tastiera, oppure tramite "radio button" (come quelli del Decision Maker). Appena inseriti questi valori (per es. A=1 e B=1), l'elaboratore esegue il programma tenendo conto dei valori di inizializzazione (C=1 "esco"; C=0 "rimango in casa"): a seconda del risultato ottenuto, sullo schermo verrà mostrata una delle due frasi.
I dati inseriti con la tastiera o il mouse, vengono elaborati secondo le istruzioni del diagramma di flusso. |
con queste condizioni, il primo diagramma di flusso di fig. 1, risulta così formalizzato:
Le istruzioni AND e OR, dette operatori logici, sono prese dall'algebra di Boole e forniscono il risultato 1 o 0, a seconda del valore delle variabili A e B.
Ad esempio, se entrambe le variabili A e B valgono 1, allora l'operatore AND assumerà il valore 1. In questo caso, il simbolismo, tradotto in parole, corrisponde a:
viceversa, se una sola delle due variabili, oppure entrambe valgono 0, allora l'operatore AND assumerà il valore 0. In questo caso, il simbolismo, tradotto in parole, corrisponde a:
Come abbiamo detto, i valori delle variabili A e B sono introdotti da tastiera prima di "raggiungere" l'operatore AND. Così, se entrambe le variabili A e B valgono 1, quando saranno esaminate dall'operatore AND seguirà necessariamente il risultato C = 1.
Con le stesse modalità, il diagramma di flusso di fig. 2, risulta così formalizzato:
In questo caso, se almeno una delle variabili A e B vale 1, allora l'operatore OR assumerà il valore 1; viceversa, se entrambe valgono 0, allora l'operatore OR assumerà il valore 0. Dunque, se almeno una delle variabili A e B vale 1, quando saranno esaminate dall'operatore OR seguirà necessariamente il risultato C = 1.
Ora che abbiamo visto come definire un linguaggio numerico (ricordiamo che l'elaboratore non comprende il significato delle frasi che leggiamo) interpretabile dall'elaboratore, vediamo come applicarlo. Per far questo, esaminiamo un semplice "elaboratore" in grado di automatizzare la nostra decisione. La realizzazione di questo - e di tutti gli elaboratori - richiede la costruzione di circùiti detti porte logiche.
Per esempio, osservando il circùito elettrico schematizzato in figura, è facile riconoscere che la lampadina si accenderà solo se entrambi gli interruttori A e B verranno abbassati in modo da chiudere il contatto elettrico. Questo circùito, corrisponde ad un operatore logico AND.
Per riassumere il comportamento di una porta logica, si ricorre alle cosiddette tavole di veridicità. Per la porta AND, la tavola è in tabella a destra del circùito. Si osservi, per esempio, che quando A=1 e B=1 (entrambi gli interruttori abbassati), allora la lampadina (indicata con C) è accesa e quindi C=1.
Ora, come secondo passo, esaminiamo un altro circùito: in questo caso, è facile riconoscere che la lampadina si accenderà solo se almeno uno degli interruttori A e B verrà abbassato in modo da chiudere il contatto elettrico. Questo circùito, corrisponde all'operatore logico OR.
La sua rappresentazione secondo una XORmativa standardizzata, è rappresentata con il simbolo sottoindicato. A destra, è riportata la corrispondente tavola di veridicità. Si noti come sia sufficiente che un solo interruttore sia abbassato per accendere la lampadina.
Oltre alle porte AND e OR, c'è la porta NOT, capace di invertire il segnale in ingresso: se vale 1, diventa 0 e viceversa.
Il corrispondente circùito, comprende due alimentatori con polarità opposta. Quando il circùito inferiore è aperto (0), la batteria A alimenta il circùito superiore e la lampadina è accesa; quando il circùito inferiore è chiuso, la seconda batteria fornisce una corrente uguale e opposta che impedisce il passaggio di corrente per cui la lampadina si spegne.
La tavola di veridicità corrispondente a questo circùito, comprende un solo ingresso. Si osservi che quando l'interruttore è alzato (A=0), la lampadina è accesa (C=1) e viceversa.
Le porte logiche descritte, sono rappresentate simbolicamente con i simboli in figura; combinandoli fra loro, si può codificare in linguaggio binario qualsiasi diagramma di flusso.
Per esempio, la frase "se è bel tempo ed è caldo esco; tuttavia, se ho un impegno esco in ogni caso" richiede una porta AND ed una porta OR unite tra loro come in figura.
La combinazione di più porte logiche, permette di ottenere risultati più articolati. Per esempio, nella figura sotto è mostrata una porta XOR (exclusive or), costituita dalla combinazione di due porte AND, due porte NOT ed una porta OR. Questa porta permette di selezionare un valore positivo (1) se e solo se uno dei due dati in ingresso è positivo (a differenza della porta OR che fornisce un valore unitario anche se entrambi i dati in ingresso sono positivi).
Il lettore può verificare da solo il funzionamento della porta XOR, tenendo conto che i dati in ingresso A e B sono duplicati però formando coppie invertite, e quindi inviati a due porte AND.
Per esempio, nella figura a sinistra, il segnale al morsetto A vale 1: questo segnale è sdoppiato in modo da raggiungere una porta AND con il segnale 1 e l'altra porta AND con il segnale invertito, 0; il segnale al morsetto B vale 0: questo segnale è sdoppiato in modo da raggiungere una porta AND con il segnale 0 e l'altra porta AND con il segnale invertito, 1. Dalle due porte AND escono quindi due segnali 0 e 1, che raggiungono la porta OR fornendo un segnale 1
Quello che abbiamo esaminato finora, può definirsi un semplice elaboratore dedicato, capace cioè di eseguire un compito particolare: verificare la presenza di due eventi (bel tempo, caldo) o di un evento alternativo (impegno). E' ovvio che un simile elaboratore è troppo semplice per avere qualche utilità. Tuttavia, si può facilmente intuire che gli elementi discussi costituiscono la base per combinare tra loro più porte logiche in modo da ottenere rapidamente, e senza confusione, decisioni immediate. Inoltre, si possono costruire circùiti in grado di effettuare operazioni matematiche.
Quanto discusso ci permette di comprendere come opera un elaboratore analogico. In realtà, un processore elettronico non è costituito da parti mobili, tuttavia la logica di base può essere compresa con alcune semplici considerazioni.
I circùiti elettronici digitali sono costituiti da transistor. Un transistor permette di far passare o non far passare elettroni. Il passaggio di elettroni è un segnale elettronico binario (1 se passano elettroni, 0 se non passano). La caratteristica che distingue gli interruttori elettronici dai più comuni interruttori elettrici è che essi sono comandati da un segnale elettronico binario e non dall'intervento umano. Questo significa che è possibile usare il segnale elettronico di un transistor per comandare un altro transistor e così ottenere un nuovo segnale elettronico che, a sua volta, può comandare un altro transistor e così via. L'insieme di questi interruttori elettronici che si comandano a vicenda viene detto circùito elettronico. Vi sono infinite possibilità di costruzione di circùiti elettronici, ma essenzialmente sono tutte riconducibili agli elementi fondamentali qui esaminati.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Marcello Guidotti, copyright 2003
questa pagina può essere riprodotta su qualsiasi supporto o rivista purché sia citata la fonte e l'indirizzo di questo sito (ai sensi degli artt. 2575 e 2576 cc. Legislazione sul diritto d'autore). Le fotografie sono tratte da siti web e sono, o possono ritenersi, di pubblico dominio purché utilizzate senza fini di lucro. Le immagini di prodotti presenti nel sito hanno unicamente valenza esemplificativa oltre che, eventualmente, illustrare messaggi fuorvianti e non vi è alcun richiamo diretto o indiretto alla loro qualità e/o efficacia il cui controllo è affidato alle autorità regolamentatorie.