Convertitori numerici in Excel

Pagina creata da Salvatore Spina
 
CONTINUA A LEGGERE
Convertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE “G. M. ANGIOY”
                                            CARBONIA

                      Convertitori numerici in Excel
                                          Prof. G. Ciaschetti

Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel (o
con Calc, il suo equivalente gratuito e open source di OpenOffice).
Sfrutteremo la capacità di Excel (o di Calc) di memorizzare un numero in una cella e di chiamare il
contenuto di questa cella in forma simbolica attraverso le sue coordinate (es. scrivere A4 significa
“il contenuto della cella A4”), e alcune funzioni come quelle per fare la somma (funzione
SOMMA), o quelle per trovare il quoziente (funzione QUOZIENTE) e il resto (funzione RESTO)
della divisione tra due numeri.
L’idea è quella di riservare alcune celle per l’input, dove andrà scritto il numero da convertire, e
altre celle per l’output, dove si leggerà il risultato della conversione. E’ ovvio che specificando “a
priori” il numero delle celle utilizzate, potremo solo realizzare convertitori che sanno convertire un
numero limitato di valori.

Convertitore binario  decimale
Iniziamo con l’esempio più semplice: realizziamo un foglio Excel per convertire un numero da
binario a decimale. Predisponiamo le celle per l’input, quelle in cui vogliamo che venga scritto il
numero binario da convertire, evidenziandole con un colore di sfondo:

Avendo scelto solo 4 celle per il nostro input, e poiché scriveremo un bit per ogni cella, il nostro
convertitore saprà convertire solo numeri binari con 4 bit, e non di più. Ora predisponiamo una cella
per l’output, dove leggeremo i risultati della conversione:
Convertitori numerici in Excel
Ora dobbiamo impostare le formule in modo da ottenere la conversione: ricordando che per
convertire un numero binario (b1b2b3b4)2 in decimale, dove b1, b2, b3 e b4 sono i suoi 4 bit che
possono essere 0 o 1, si applica la formula
                          (b1b2b3b4)2 = b1 * 23 + b2 * 22 + b3 * 21 + b4 * 20
e poiché nelle caselle A2, B2, C2 e D2 leggeremo rispettivamente i valori dei bit b1, b2, b3 e b4 del
numero da convertire, dobbiamo indicare che il contenuto della cella A9, dove si leggerà il risultato,
è uguale alla somma tra il contenuto di A2 (bit b1) moltiplicato per 23, più il contenuto di B2 (bit b2)
moltiplicato per 22, più il contenuto di C2 (bit b3) moltiplicato per 21, più il contenuto di D2 (bit b4)
moltiplicato per 20. Selezioniamo con il cursore, quindi, la cella A9 e scriviamo nella barra della
formula:
                           = SOMMA(A2*2^3; B2*2^2; C2*2^1; D2*2^0)

Excel e Calc ci mettono a disposizione anche un altro modo di scrivere le formule, che impareremo
a lezione, ma il risultato è lo stesso. Ora facciamo una prova per vedere se il nostro convertitore
funziona:
Convertitori numerici in Excel
Facciamo un'altra prova:

Perfetto!

Convertitore ottale  decimale
Una volta fatto il convertitore da binario a decimale, realizzare quello da ottale a decimale è una
stupidaggine. Infatti, il procedimento è esattamente lo stesso, solo che stavolta il sistema di
numerazione ha base 8, quindi il valore che le cifre assumono nelle diverse posizioni sono potenze
dell’8, e non del 2. Per il resto, tutto è uguale.
Predisponiamo un nuovo file, o un nuovo foglio di lavoro nello stesso file precedente, per realizzare
questo convertitore; come prima, predisponiamo le caselle per l’input e l’output, e inseriamo nella
casella A9 la seguente formula:

                             = SOMMA(A2*8^3;B2*8^2;C2*8^1;D2*8^0)

Abbiamo la seguente situazione:
Convertitori numerici in Excel
Fatto, il nostro convertitore è pronto e funzionante. Ci possiamo divertire ora a fare le conversioni
in automatico, senza dover stare a fare i conti a mano: qualunque numero ottale inseriremo nelle
caselle gialle, troveremo nella casella verde il suo equivalente in decimale. Wow!

ATTENZIONE: occorre ricordarsi che perché il convertitore funzioni non bisogna inserire
nell’input cifre superiori al 7, altrimenti il numero non sarebbe ottale, e tutto salta! (proprio come
nel convertitore precedente da binario a decimale non possiamo inserire cifre che non siano 0 o 1).

Convertitore esadecimale  decimale
Questo convertitore è un po’ più difficile da realizzare, in quanto il sistema esadecimale comprende
le cifre da 0 a 9 e le lettere A, B, C, D, E ed F. Il meccanismo è lo stesso dei precedenti, ma stavolta
ci sono le lettere che ci danno un po’ fastidio. Sappiamo che A=10, B=11, C=12, D=13, E=14 e
F=15, occorre quindi prevedere un meccanismo di traduzione dalle lettere ai numeri, per poter
effettuare i calcoli. Di nuovo, usiamo le funzioni di Excel per effettuare questa traduzione.
Convertitori numerici in Excel
Predisponiamo, come nei due convertitori precedenti, l’input e l’output evidenziando le celle dove
andrà scritto il numero esadecimale da convertire, e quella dove si leggerà il risultato.

Ora, nelle caselle da A2 a D2 si scriverà il numero esadecimale da convertire, e queste potranno
contenere sia numeri (da 0 a 9) sia lettere (dalla A alla F). Faremo in modo che nella riga 3 compaia
lo stesso numero dove però al posto delle lettere troveremo i numeri corrispondenti: ad esempio, se
nella casella B2 compare la lettera C, nella casella B3 vogliamo che compaia il numero 12; oppure,
se nella casella D2 compare la lettera F, vogliamo che nella casella D3 compaia il numero 15; se
invece compare un numero, nella riga 3 dovrà apparire lo stesso numero. In sostanza, vogliamo che
Excel faccia per noi la seguente cosa in automatico:

E’ chiaro che una volta che saremo riusciti a fare ciò, basterà modificare la stessa formula che
abbiamo usato nei precedenti convertitori mettendo la base 16 al posto di 2 o di 8, per convertire il
nostro numero in decimale.
Ma come è possibile trasformare la A in 10, la B in 11, ecc.?
Prendendo per esempio la casella A3 (ma il ragionamento è lo stesso per le altre caselle B3, C3,
D3), proviamo a dire “a voce” quello che vogliamo fare: “se il contenuto di A2 è la lettera A, allora
Convertitori numerici in Excel
il contenuto di A3 è 10; se il contenuto di A2 è la lettera B, allora il contenuto di A3 è 11; se il
contenuto di A2 è la lettera C, allora il contenuto di A3 è 12; se il contenuto di A2 è la lettera D,
allora il contenuto di A3 è 13; se il contenuto di A2 è la lettera E, allora il contenuto di A3 è 14; se
il contenuto di A2 è la lettera F, allora il contenuto di A3 è 15; in tutti gli altri casi, il contenuto di
A3 è lo stesso della casella A2”.
Bene, per fare ciò, usiamo la formula SE di Excel, che ha la seguente sintassi:

                        = SE (condizione; condizione_vera; condizione_falsa)

e il seguente significato: valuta la condizione, se la condizione è vera, il valore della formula è
espresso dopo il primo punto e virgola, e se la condizione è falsa il valore della formula è espresso
dopo il secondo punto e virgola. Per dire di scrivere il numero 10 al posto della A nella casella A3,
quindi, noi dovremmo scrivere una cosa del tipo

                                = SE (A2 = ”A”; 10; …gli altri casi…)

L’inconveniente è che la formula SE tiene conto di soli due casi possibili (la condizione è vera,
oppure la condizione è falsa), mentre noi dobbiamo tener conto di diversi casi (se A2 = A, se A2 =
B, se A2 = C, ecc.). Come si può fare? Osserviamo la cosa usando i diagrammi di flusso, che
impareremo in una successiva unità didattica: l’istruzione SE crea un bivio con solo due strade
possibili:

Per realizzare un bivio con tre strade, occorre dividere una delle due strade in due, usando una
seconda condizione, come in figura seguente:
Convertitori numerici in Excel
Dalla figura, appare evidente che per tenere conto di tre casi occorre quindi scrivere una formula SE
nel seguente modo:

                     SE (condizione1; azione1; SE (condizione2; azione2; azione3) )

Siamo a buon punto, possiamo scrivere finora qualcosa del tipo:

                         SE (A2 = ”A”; 10; SE (A2 = “B”; 11; …gli altri casi…) )

Ripetendo il ragionamento, possiamo continuare a dividere l’ultima strada (quella dell’altrimenti,
quando la condizione non è vera) tutte le volte che vogliamo, fino ad arrivare a considerare tutti i
casi che ci interessano. Arriviamo quindi a scrivere la seguente formula:

  SE (A2 = ”A”; 10; SE (A2 = “B”; 11; SE (A2 = “C”; 12; SE (A2 = “D”; 13; SE (A2 = “E”; 14; SE (A2 = “F”; 15;A2))))))

Che si legge proprio nel modo che intendevamo: “se A2 = A scrivi 10, altrimenti se A2 = B scrivi
11, altrimenti se A2 = C scrivi 12, altrimenti se A2 = D scrivi 13, altrimenti se A2 = E scrivi 14,
altrimenti se A2 = F scrivi 15, altrimenti scrivi semplicemente A2”.

Ci siamo! Evidenziamo la casella A3, e scriviamo quindi nella barra della formula l’espressione

 = SE (A2 = ”A”; 10; SE (A2 = “B”; 11; SE (A2 = “C”; 12; SE (A2 = “D”; 13; SE (A2 = “E”; 14; SE (A2 = “F”; 15;A2))))))

Poi evidenziamo la casella B3, e scriviamo nella barra della formula l’espressione

  = SE (B2 = ”A”; 10; SE (B2 = “B”; 11; SE (B2 = “C”; 12; SE (B2 = “D”; 13; SE (B2 = “E”; 14; SE (B2 = “F”; 15;B2))))))

E ripetiamo lo stesso anche per le caselle C3 e D3.

Abbiamo ottenuto quanto cercavamo, la traduzione automatica delle lettere in numeri!
Convertitori numerici in Excel
Completiamo il convertitore, a questo punto, nel solito modo, cioè inserendo nella casella A9 la
formula

                       = SOMMA(A3*16^3;B3*16^2;C3*16^1;D3*16^0)

Dove abbiamo messo, a differenza delle precedenti, le caselle A3, B3, C3 e D3 al posto delle
caselle A2, B2, C2 e D2 proprio perché abbiamo bisogno dei valori numerici al posto di quelli
letterali.

Niente male, no? 

Convertitore decimale  binario

Ritorniamo al sistema binario, e cerchiamo ora di realizzare un convertitore per trasformare i
numeri decimali in numeri binari. Il procedimento, come abbiamo studiato a lezione, è quello di
dividere successivamente il numero per 2 fino a quando il quoziente è uguale a 0, e poi prendere i
Convertitori numerici in Excel
resti in ordine inverso. Al solito, iniziamo predisponendo alcune caselle di input per il numero da
convertire, e altre caselle di output per il numero convertito.

Come si può notare dalla figura, avremo bisogno di altre caselle dove memorizzare i quozienti delle
divisioni per 2, mentre nelle caselle verdi leggeremo i resti, che formano il nostro numero binario.
Per trovare quozienti e resti, useremo le formule QUOZIENTE e RESTO di Excel.

Iniziamo con la prima divisione: occorre trovare il quoziente e il resto della divisione di A2 per 2. Il
quoziente andremo a scriverlo nella casella D6, e il resto nella casella D9. Selezioniamo la casella
D6, e scriviamo nella barra della formula

                                        = QUOZIENTE (A2;2)

Poi selezioniamo la casella D9, e scriviamo nella barra della formula

                                            = RESTO (A2;2)

Siamo nella seguente situazione:
Convertitori numerici in Excel
Vediamo se la divisione funziona: proviamo a inserire un numero nella casella A2

Perfetto, 13:2 fa 6 con resto 1, proprio come ci aspettavamo. Ora, occorre prendere il 6 e dividerlo
per 2, o meglio, più in generale, il contenuto della casella D6 e dividerlo per due, ottenendo di
nuovo un quoziente e un resto. Il quoziente andremo a scriverlo nella casella C6, e il resto nella
casella C9. Selezioniamo la casella C6, e scriviamo nella barra della formula

                                       = QUOZIENTE (D6;2)

Poi selezioniamo la casella C9, e scriviamo nella barra della formula

                                          = RESTO (D6;2)

Ora la nostra situazione è la seguente (nell’esempio particolare in cui il numero inserito in A2 è 13,
ma poiché nelle formule ci riferiamo alle caselle qualunque sia il loro contenuto, la cosa funziona
con ogni numero in input):

Continuando in questo modo, dividiamo per due il contenuto della cella C6 ottenendo il quoziente
in B6 e il resto in B9: selezioniamo la casella B6, e scriviamo nella barra della formula
= QUOZIENTE (C6;2)

Poi selezioniamo la casella B9, e scriviamo nella barra della formula

                                           = RESTO (C6;2)

E di nuovo, terminando, dividiamo il contenuto della cella B6 per 2 ottenendo il quoziente in A6 e il
resto in A9, come nella seguente figura:

Il nostro convertitore è terminato! Facciamo un’altra prova:
Perfetto, funziona benissimo! 

Si noti che usando solo 4 caselle per il numero binario, il nostro convertitore saprà convertire
numeri decimali da 0 fino a 15, e non maggiori. Infatti, per i numeri da 16 in poi, avremmo bisogno
di un quinto bit, che non avevamo predisposto.

ESERCIZI:

   1) Si modifichi il convertitore da binario a decimale in modo da convertire almeno un byte
       (ricordiamo che un byte è una sequenza di 8 bit).
   2) Si realizzi il convertitore da decimale a ottale (funziona come quello da decimale a binario,
       solo che bisogna dividere per 8 anziché per 2)
   3) Si realizzi il convertitore da decimale a esadecimale. Questo esercizio è più complicato in
       quanto bisogna ripetere gli stessi ragionamenti fatti per il convertitore da esadecimale a
       decimale, usando la formula SE nel seguente modo: se il resto ottenuto è 10, allora scrivi
       “A”, altrimenti se il resto ottenuto è 11, allora scrivi “B”, altrimenti…).
   4) Si realizzino i convertitori da binario a ottale e viceversa (ricordarsi che ogni cifra ottale
       corrisponde a un gruppo di 3 bit)
   5) Si realizzino i convertitori da binario a esadecimale e viceversa (ricordarsi che ogni cifra
       ottale corrisponde a un gruppo di 4 bit, e si usi la formula SE per la traduzione delle lettere)
Puoi anche leggere