princìpi di funzionamento dei computer

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.

diagrammi di flusso (flow chart)

osservazioneQualsiasi processo logico può essere ricondotto ad una sequenza di eventi elementari, che nell'insieme prende il nome di algoritmo. Tale sequenza può essere rappresentata con un diagramma di flusso (v. figura sotto), il quale a sua volta è facilmente traducibile in un particolare programma comprensibile dall'elaboratore.

Per la visualizzazione di un problema con un diagramma di flusso, sono utilizzati vari simboli grafici standard: il rombo per indicare controlli decisionali ed il rettangolo per indicare operazioni da effettuare.

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".

diagramma di flusso con AND diagramma di flusso con OR
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)

E' facile riconoscere che le due decisioni sono distinte: la prima (diagramma a sinistra), comporta il verificarsi di due condizioni (evidenziate dalle frecce in verde); la seconda (diagramma a destra), comporta il verificarsi di almeno una fra due condizioni. E' importante rendersi conto che, come vedremo, l'elaboratore non "comprende" il significato delle frasi "esco... resto in casa": si limita a considerare il valore di certe costanti associate ad ogni singolo evento.



dal diagramma di flusso agli operatori logici (algebra di Boole)

Come secondo passo, si tratta di convertire i diagramma di flusso in un linguaggio numerico, il solo comprensibile dall'elaboratore. Ciò si ottiene con i cosiddetti operatori logici elementari. Per semplicità, limiteremo la nostra discussione ai tre elementi di base.

tabella degli operatori logici 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.

decision maker
ecco come si utilizza il nostro assistente decisionale portatile. La versione è quella più restrittiva: richiede che entrambe le condizioni siano verificate.

diagramma di flusso
I dati inseriti con la tastiera o il mouse, vengono elaborati secondo le istruzioni del diagramma di flusso.

A = 1 corrisponde all'evento "bel tempo"
B = 1 corrisponde all'evento "caldo"
C = 1 corrisponde all'azione "esco"

A = 0 corrisponde all'evento "non bel tempo"
B = 0 corrisponde all'evento "non caldo"
C = 0 corrisponde all'azione "resto in casa"

con queste condizioni, il primo diagramma di flusso di fig. 1, risulta così formalizzato:

IF A AND B THEN C

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:

SE bel tempo E caldo ALLORA esco

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:

SE non bel tempo E caldo ALLORA resto in casa

SE bel tempo E non caldo ALLORA resto in casa

SE non bel tempo E non caldo ALLORA resto in casa

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:

IF A OR B THEN C

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.

circuito rappresentante una porta logica ANDPer 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: circùito rappresentante una porta logica OR 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.

circùito elettrico per la porta NOT

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.

porte logiche AND, OR, NOT

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.
porta logica OR 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).

porta logica XOR

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 principi di fuzzy logic2 applicazioni della fuzzy logic3 microinfusori per insulina4 siringhe hipospray5 capsule per videodiagnostica6 misura della temperatura7 biochip per studi preclinici8 mesoterapia, elettroterapia, microaghi9 mercato farmaceutico e aziende in INTERNET10 mercato farmaceutico e aziende in INTERNET11 mercato farmaceutico e aziende in INTERNET12 mercato farmaceutico e aziende in INTERNET13 defibrillatore14 firma digitale15
HOME PAGE HOME PAGE

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.