La automazione
Dalle macchine semplici alle macchine programmabili
Scheda 2
Le calcolatrici tascabili
0. Introduzione
1. Funzioni a 1 e a 2 input
2. I registri di lavoro e la gerarchia delle operazioni
3. La memoria-utente e i tasti-parentesi
4. I numeri delle CT e la loro codifica interna
5. Altri tasti-funzione
6. La radice quadrata
7. Composizione di funzioni – Funzioni inverse
8. Esercizi
Sintesi
0. Introduzione
In questa scheda approfondiremo il funzionamento delle calcolatrici tascabili. Volendo i primi 5 paragrafi puoi trovarli riassunti brevemente negli Oggetti Matematici, alla voce Calcolatrice tascabile. In questo caso puoi saltare direttamente al §6 di questa scheda.
1. Funzioni a 1 e a 2 input
Prima
di approfondire la conoscenza e l'uso del calcolatore, ci soffermiamo ad
indagare ulteriormente il funzionamento delle calcolatrici tascabili (CT), delle quali abbiamo già fatto uso
numerose volte: si tratta di uno strumento di lavoro d'uso comune (sia a scuola
che nella vita) di cui è opportuno avere una buona padronanza e la cui
conoscenza ci può servire come introduzione allo studio dei calcolatori.
Infatti le CT sono
macchine che registrano ed elaborano le informazioni in maniera simile ai
calcolatori, anche se, in genere, sono in grado di trattare solo dati numerici e non sono programmabili, ma usano solo programmi
incorporati (per chiarezza, useremo
i termini "calcolatori tascabili" o "pocket computer" per
indicare i mezzi di calcolo tascabili e programmabili).
Ad esempio se voglio trovare qual è la percentuale corrispondente a un dodicesimo posso calcolare l'espressione decimale di 1/12 usando il tasto :
batto |
|
premo | ottengo |
|
|||
input | funzione | output |
  Con la sequenza 12 ho comunicato alla CT che deve
operare sul dato 12 mediante la funzione x → 1/x che
che trasforma un numero nel
suo reciproco. Per effettuare questa trasformazione la CT deve essere in grado
di registrare il dato che ho introdotto con i tasti "1" e "2" e deve
avere incorporato un programma
per l'esecuzione del calcolo del reciproco.   Il tasto e il tasto sono tasti di funzione a 1 input: dopo la loro pressione viene visualizzato un numero che la CT calcola sulla base di un solo dato di input: il numero che appariva sul visore prima della pressione di o .   Se invece vogliamo calcolare il costo di un prodotto che pesa 2.45 hg e è venduto al prezzo di 1.80 €/hg usiamo il tasto nel modo seguente: |
batto |
|
premo | batto |
|
premo | ottengo |
|
|||||
input | funzione | input | output |
  La moltiplicazione, così come la addizione, la sottrazione e la divisione, sono funzioni a 2 input: l'output viene calcolato sulla base di due dati di input: i 2 numeri che l'utente ha battuto prima e dopo il tasto (o o o ). |
  Gli input di una funzione a volte vengono introdotti direttamente dall'utente, altre volte sono output di funzioni calcolate in precedenza. Ad esempio di fronte a 12·5+9 la CT prima calcola 12·5 e poi calcola 60+9: 60 non viene introdotto dall'utente. |
| Per battere i seguenti termini con una CT, in quali
casi devi usare e in
quali devi usare | |
(1) 3 · 8     (2) 3 8   (3) 3 · 8     (4) 7 5     (5) 9 / 3 |
| Si è rotto il tasto della
tua CT. Come puoi calcolare 12356
usando i tasti e |
  Possiamo quindi dire che la sottrazione è equivalente a una opportuna composizione (→ figura a fianco) della funzione cambio-segno e della funzione addizione. |
|
  In formule:     x y = x + (y) [→ ques.3]         x / y = x · (1/y) [→ ques.4]
| Che cosa ottieni man mano sul visore della CT battendo: 5 ? |
  Per calcolare 75 ( ques.2) occorre battere: 7 5 . Si è visto ( ques.3) che si può fare a meno di battendo 7 5 , cioè calcolando 7 + 5.
| Per quanto visto nel quesito 5 invece di 7 5 potevo battere | ||
cioè calcolare direttamente | ............................. |
Nei
casi della sottrazione e della divisione se si commutano (cioè
scambiano) il 1° e il 2° input si ottiene un output differente (a
meno che 1° e 2° input siano uguali). Nel caso della addizione e
della moltiplicazione l'output non cambia. Per esprimere ciò si usa
dire che addizione e moltiplicazione soddisfano
la proprietà commutativa
o, più in breve, che sono commutative: una funzione F a 2 input si dice commutativa
quando, comunque si diano a F due input x
e y,
se |
| Molte
CT sono dotate anche del tasto (o ): la sequenza a b fa
calcolare e visualizzare il risultato di ab. Questa funzione a 2 input è commutativa o
no? [nel primo caso spiega il perché, nel secondo caso mostra un "contro-esempio", cioè indica una coppia di input il cui output dipende da quale tra essi si prenda come base e quale come esponente] |
2. I registri di lavoro e la gerarchia delle operazioni
|
Vediamo che cosa appare sul visore man mano che eseguiamo il calcolo di 12·5+9 con una CT (o con la calcolatrice di un cellulare).
Quando premiamo sul
visore si continua ancora a leggere 12; quando battiamo il secondo
termine della moltiplicazione, 5, il numero 12 scompare. Ciò
significa che la CT dopo la battitura di 5, oltre che del 5
stesso, si ricorda del Per far questo deve essere dotata di opportuni dispositivi in cui memorizzare le informazioni che le vengono comunicate attraverso la tastiera (numeri e operazioni). Ce ne saranno almeno due per conservare i termini dell'operazione e uno per conservare (opportunamente codificato) il segno dell'operazione. |
Dopo la pressione di scompare
il 5 e compare il risultato della moltiplicazione, 60. A questo
punto la CT può dimenticare
I dispositivi per la conservazione dei dati vengono chiamati registri (o memorie) di lavoro.
| Batti 1 2 5 . Quale risultato ottieni? E` lo stesso ottenuto dai tuoi compagni? |
L'ultimo esercizio mette in luce che non tutte le CT sono costruite in modo da rispettare le priorità tra le operazioni.
Come sai, il termine 1+2·5 deve essere interpretato come 1+(2·5), cioè il suo valore deve essere calcolato eseguendo le operazioni non "a catena", man mano che vengono incontrate, ma dando la precedenza alla moltiplicazione rispetto alla addizione. Invece 8/2·2, 1/10/2, 92+3, devono essere interpretati come (8/2)·2 [non 8/(2·2)], (1/10)/2 [non 1/(10/2)], (92)+3 [non 9-(2+3)], , cioè devono essere calcolati a catena, in quanto presentano operazioni con uguale livello di priorità.
Invece, alcune CT non danno il risultato 11, ma eseguono il calcolo a catena, cioè calcolano (1+2)·5, dando come risultato 15. Cerchiamo di capirne il motivo.
|
Consideriamo una CT che "non sbaglia". |
|
Consideriamo una CT che "sbaglia". |
Le CT che "sbagliano" in realtà non sbagliano. Si comportano seguendo il programma che è stato incorporato dal costruttore, programma che prevede l'esecuzione dei calcoli a catena: appena viene premuto il tasto o un nuovo tasto di operazione viene eseguita l'operazione precedentemente impostata. Sta all'utente utilizzare la CT rispettandone e sfruttandone al meglio le caratteristiche.
In una CT che "non sbaglia" è invece incorporato un programma più complesso, che effettua dei controlli sui tasti di operazione battuti: quando viene premuto un nuovo tasto di operazione l'operazione precedentemente impostata non viene eseguita se la nuova operazione è prioritaria: se la nuova operazione è "·" o "/" e l'operazione precedentemente introdotta è "+" o "", questa viene tenuta in sospeso in attesa che venga completato il calcolo della nuova operazione.
| Introduci nei termini seguenti (solo quando è necessario) parentesi in modo che una persona che non conosca le "priorità" possa interpretarli correttamente. [il primo termine è già completato come esempio] |
59 + 147 / 7 | → | 59 + (147 / 7) |
73 27 + 125 | → | .................... |
573 17 · 25 | → | .................... |
53 · 12 + 25 | → | .................... |
(18 + 37) / 5 + 19 · 3 | → | .................... |
| Come
è possibile eseguire correttamente il calcolo di 1+2·5
con una calcolatrice dotata di due soli registri di lavoro (senza
fare calcoli a mente o annotarsi o ricordarsi risultati intermedi)? e di 58/4? e di 5/(1+2)? e di 4·3+2·5? [Si tratta di esempi con numeri che consentono il calcolo mentale; in questo modo potete fare più velocemente e facilmente i tentativi e le loro verifiche] |
3. La memoria-utente e i tasti-parentesi
Per fare un calcolo come a+b/c [o a+b·c] con una CT che non ha incorporata la gerarchia delle operazioni posso usare la proprietà commutativa dell'addizione e trasformare il termine dato in quello equivalente b/c+a [b·c+a] riconducendomi a un calcolo in cui le operazioni devono essere eseguite una dopo l'altra a partire da sinistra.
Di
fronte a ab/c [o
ab·c] posso interpretare la
sottrazione come la somma di a e di b/c
[ quesito 3] e, grazie alla proprietà commutativa
dell'addizione, scambiare i due termini a e b/c.
Posso perciò calcolare (b/c)+a
[(b·c)+a]. Ossia
battere:
Per calcolare |
| non posso battere a b c , che invece calcola |
| : | |||||||
il secondo termine della divisione è tutto b+c. Posso ricorrere al tasto . |
Infatti posso interpretare la divisione come il prodotto di a per 1/(b+c) [ quesito 4] e, grazie alla commutatività della moltiplicazione, scambiare i due termini a e 1/(b+c). Posso cioè calcolare 1/(b+c)·a, ossia battere: b c a .
Nei casi precedenti potevamo anche usare il tasto di memoria e, ad esempio nell'ultimo caso, battere: |
Invece
a·b+c·d non si può
trasformare in un termine che sia calcolabile a catena. Con una CT
senza gerarchia devo usare il tasto di memoria. Ricorrendo al tasto
di memoria posso, dopo aver eventualmente azzerato la memoria con ,
battere:
Il tasto di memoria comanda alla CT di copiare o addizionare (a seconda del modello di CT o del tipo di tasto, come abbiamo già avuto modo di vedere) il numero che appare sul visore in un apposito registro. Questo registro, a diversità dei registri di lavoro, non è un dispositivo di memorizzazione gestito automaticamente dalla CT ma è azionato direttamente dall'utente. Per distinguerlo dalle memorie di lavoro lo chiameremo memoria-utente.
Invece di ab, se non voglio usare una scrittura "a due piani", posso scrivere a^b. Per convenzione, l'elevamento a potenza ha priorità rispetto a moltiplicazione e divisione: 2·52, cioè 2·5^2, è da interpretare come 2·(52), cioè 2·(5^2), non come (2·5)2, cioè (2·5)^2. Le CT rispettano questa priorità?
| Interpreta il comportamento della tua CT (o quella di un tuo compagno che sia dotata di ) di fronte all'esecuzione di 10·2^3, 10^2·3 e 10^2^3 (battendo i tasti nello stesso ordine dei segni di operazione · e ^), cioè cerca di capire qual è l'ordine in cui esegue le operazioni. |
Le CT dotate di tasti parentesi consentono di calcolare
5/(1+3) direttamente, senza usare la memoria-utente o .
In genere si tratta di CT che hanno incorporata la priorità
delle operazioni. Vediamo come può funzionare una CT di questo
tipo.
|
Dopo la battitura di la CT non calcola 5/1 ma, essendo stato premuto tiene in sospeso 5/.
........................................ |
Vediamo ora come si comportano le CT dotate di parentesi di fronte a calcoli più complessi. Se si batte: 2 1 2 1 1 possono visualizzare uno dei seguenti messaggi:
Di fronte al calcolo di 10/3 le CT possono dare risultati differenti. Ad esempio:
Le CT del tipo (1) visualizzano 8 cifre del risultato, quelle del tipo (2) ne visualizzano 10. Di fronte al calcolo di 20/3 CT che visualizzino lo stesso numero di cifre, ad es. 8, possono dar luogo a uscite diverse:
Nel caso (1) il risultato viene troncato a 8 cifre, nel caso (2) viene arrotondato a 8 cifre. In questo secondo caso la CT deve conoscere almeno un'altra cifra del risultato: per stabilire se lasciare immutata l'8a cifra o aumentarla di 1 deve sapere se la 9a cifra è minore di 5 o no; per eseguire i calcoli deve quindi impiegare più cifre di quelle che compaiono sul visore.
Vediamo come si comporta una CT se si batte 10 6 12345678 12345678 . Poiché 10/6=1.666 e aggiungere e togliere lo stesso numero 12345678 non dovrebbe modificare il risultato, con una CT che visualizza 8 cifre ci aspetteremmo di ottenere 1.6666666 o 1.6666667. Tuttavia ciò non accade, ma si possono ottenere ad esempio:
Una CT con visore a 8 cifre se ottiene come risultato di un calcolo 0.00000000001 lo visualizza nella forma esponenziale 1E-11 (1·10-11) in quanto la sua scrittura per esteso richiederebbe troppe cifre.
Nel caso di 12345678·12345678 anche nel registro di lavoro il risultato era approssimato solo a 5 cifre?
Il fatto che si sia ottenuto 1.5241577, cioè un numero con il massimo numero di cifre visualizzabili dalla CT, significa che all'interno, a differenza di quanto accade sul visore, la registrazione dell'esponente non riduce lo spazio per la registrazione delle cifre significative. Vediamo più in dettaglio come sono memorizzati i numeri in un registro di lavoro. Riferiamoci a una CT che approssima a 8 cifre significative. Il numero viene registrato in notazione scientifica (ossia nella forma h·10n dove h ha una sola cifra, diversa da 0, a sinistra del punto decimale e n è l'ordine di grandezza). Ad esempio il risultato di 12345678·12345678, viene interpretato come 1.5241577·1014 e vengono memorizzati separatamente 1.5241577 (h) e 14 (n). La configurazione del registro che contiene questo numero è illustrata nella figura 1.
I numeri h e n vengono detti mantissa ed esponente della notazione scientifica. Oltre alle cifre della mantissa e dell'esponente vengono memorizzati i loro segni (nella figura li abbiamo indicati con "+" poiché sia mantissa che esponente in questo caso sono positivi).
Con il primo calcolo, dopo la visualizzazione di 1E99, alla
successiva moltiplicazione compare un messaggio d'errore. Esso
indica che c'è stato un overflow, cioè
uno "straripamento": il risultato di Con il secondo calcolo, invece del risultato "corretto" 1E-100, viene visualizzato 0: quando un calcolo ha come risultato un numero positivo inferiore a 10-99 la CT lo memorizza come 0. Un fenomeno di questo genere viene chiamato underflow. Fenomeni analoghi si verificano nel caso di risultati negativi.
I numeri-macchina di una CT, cioè i numeri che essa è in grado di memorizzare, non soltanto hanno un minimo e un massimo entro cui devono variare, ma sono in quantità finita.
Approfondimenti La possibilità di rappresentare internamente non un qualunque numero, ma solamente una quantità finita di numeri, è una caratteristica non solo delle CT, ma anche dei calcolatori di qualsiasi dimensione. Infatti un registro di lavoro o un qualsiasi altro dispositivo realizzato dall'uomo, essendo costituito da una quantità finita di componenti, può registrare solo una quantità finita di espressioni. Vediamo un po' più in dettaglio come vengono memorizzati i numeri-macchina. In una CT i registri di lavoro non sono di natura meccanica come accadeva per i contatori delle schede precedenti (sequenze di ruote che cambiavano posizione automaticamente sotto l'azione di ingranaggi e leve), ma sono costituiti da sequenze di particolari dispositivi, simili a interruttori, detti flip-flop, che, sotto l'azione di impulsi elettrici, possono assumere due sole posizioni.
Le CT, e più in generale i calcolatori, memorizzano le informazioni mediante flip-flop collegati elettricamente. Indicando con 0 e con 1 i due stati che può assumere un flip-flop, possiamo dire che le informazioni vengono codificate impiegando l'alfabeto 0, 1. Questo è il motivo per cui, quando si ha a che fare con mezzi di calcolo elettronici, la quantità di informazione registrata, la capacità di memorizzazione di un dischetto, la ampiezza di un documento, vengono misurate in bit: i bit sono i simboli 0 e 1 con cui viene rappresentato il codice impiegato internamente dai dispositivi elettronici. La parola "bit" deriva dall'inglese binary digit (cifra binaria: cifra impiegata nella notazione numerica binaria, cioè a due cifre). Il vantaggio dei dispositivi di registrazione elettronici rispetto ai dispositivi meccanici (ruote dentate e simili) è quello di essere estremamente più piccoli (con opportune tecniche produttive in una piastrina grande quanto un'unghia possono essere realizzati circuiti elettrici contenenti migliaia di flip-flop) e più facili da produrre. I registri della CT che stiamo considerando nel nostro esempio sono organizzati nel modo illustrato nella figura 2.
I segni vengono codificati con 1 bit (0 il segno "", 1 il segno "+") e ogni cifra viene codificata con 4 bit.
5. Altri tasti funzione In una CT sono incorporati (memorizzati in opportuni dispositivi elettronici) programmi per eseguire le "quattro operazioni". Così come nel calcolo a mano possiamo utilizzare procedimenti diversi ( la "conta" oppure le tabelline), per eseguire queste operazioni con le CT possono essere utilizzati programmi che traducono algoritmi diversi, più o meno veloci. Ad esempio si può calcolare 27+65 attraverso incrementi unitari, oppure mediante l'algoritmo della somma in colonna; posso far avanzare il contatore che contiene 27 di 65 posizioni contate una per una (65 "scatti"), oppure posso:
Abbiamo anche visto ( quesito 4) che se fosse incorporato un programma per calcolare il reciproco di un numero la CT potrebbe fare a meno di un programma specializzato nel calcolo delle divisioni: potrebbe utilizzare tale programma e quello per il calcolo delle moltiplicazioni. Viceversa potrebbe non avere un programma specializzato nel calcolo dei reciproci e calcolare il reciproco mediante un programma specializzato nel calcolo delle divisioni. Comunque non ci preoccuperemo di analizzare in dettaglio questi aspetti. Ci limitiamo ad ammettere che le CT abbiano incorporati opportuni programmi per calcolare le "quattro operazioni", il reciproco e il cambio-segno; si tratterà di programmi più o meno simili agli usuali algoritmi per il calcolo con i numeri decimali limitati che abbiamo imparato nella scuola elementare. Analogamente possiamo comprendere come possa funzionare il tasto (o un tasto simile) presente su alcune CT, che opera nel modo seguente:
Dati come input i numeri interi 170 e 18 vengono visualizzati due output: il risultato della divisione intera (cioè il troncamento agli interi di 170/18, che a volte viene indicato 170\18), cioè 9 (infatti 170 diviso 18 fa 9 e rotti) e (preceduto da una R) il relativo resto, cioè 8 (infatti prendendo 18 parti grandi 9 ottengo 162, e mi rimane ancora 170-162 = 8 da suddividere).
Come vengono calcolate le funzioni corrispondenti agli altri tasti? Senza preoccuparci di descrivere esattamente qual è il procedimento impiegato, vediamo come una CT potrebbe essere stata programmata in modo da effettuare il calcolo a partire dai procedimenti per eseguire le "quattro operazioni".
Più complicato è interpretare il funzionamento del tasto .
Nel caso di potenze a esponente intero (come -1, 2 e 3) sappiamo che il calcolo può essere effettuato attraverso una sequenza di moltiplicazioni o di divisioni per la base a partire da 1: 1=20, 1·2=21, 1·2·2=22, , 1/2=2-1, 1/2/2=2-2, . Basterebbe quindi impiegare il programma per eseguire la moltiplicazione o quello per eseguire la divisione e un contatore per tenere il conto delle volte che tale operazione è stata effettuata. Nel quesito 26 abbiamo tuttavia visto che la CT esegue il calcolo anche nel caso in cui l'esponente non è intero: per 2.7 viene dato come risultato 6.4980192. Si tratta di un valore compreso tra 2²= 4 e 2³= 8 ma, a prima vista, non si riesce a comprendere come questo numero possa essere ottenuto a partire dagli input 2 e 2.7. Su questo problema ritorneremo più avanti, quando avremo messo a punto i concetti matematici che ci permetteranno di affrontarlo (nel quesito e7 vengono introdotti alcuni aspetti del problema).
Consideriamo il tasto . Esso permette di calcolare la funzione estrazione della radice quadrata.
L'insieme degli input a cui una funzione f fa corrispondere un output viene detto insieme di definizione (o dominio) di f. Nel caso della radice quadrata (x → √x) il suo insieme di definizione è costituito dai numeri maggiori o uguali a 0. Nel caso del reciproco (x → 1/x) l'insieme di definizione è costituito dai numeri diversi da 0. Nel caso della divisione (x,y → x/y) è costituito da tutte le coppie di numeri x,y con y diverso da 0. L'insieme di definizione dell'elevamento al quadrato (x → x²) comprende invece tutti i numeri: x² è sempre definito.
Le CT non sempre calcolano esattamente la radice quadrata di un numero.
Come di 10/3 le CT calcolano una approssimazione con una quantità
finita di cifre, così nel caso ad esempio di
Ma una CT come può essere in grado di calcolare la radice quadrata di un numero A, cioè di trovare il numero X che al quadrato faccia A (o trovare una sua approssimazione)? Dovrà usare un procedimento meccanico, basato su operazioni elementari che la macchina è in grado di eseguire.
Per trovare una risposta proviamo a vedere come possiamo calcolare Un'idea può essere quella di procedere per tentativi; consideriamo ad esempio A=5: proviamo con X=2; il suo quadrato X·X è 4; quindi 2 è troppo piccolo; proviamo con X=3; X·X=9; quindi 3 è troppo grande; proviamo prendendo X compreso tra 2 e 3; proviamo con X=2.1; X·X è 4.41 < 5; proviamo con X=2.2; X·X è 4.84 < 5; proviamo con X=2.3; X·X è 5.29 > 5; dunque X è compreso tra 2.2 e 2.3; proviamo con X=2.21; ... ; dunque X è compreso tra 2.23 e 2.24; . Il procedimento che impiega una CT è simile. Qui ne trovi una descrizione più approfondita. Questo procedimento, nel caso della radice quadrata di 5, dà luogo alla sequenza di uscite: 2, 2.2, 2.23, 2.236, 2.2360, 2.23606, 2.236067, 2.2360679, 2.23606797, 2.236067977, 2.2360679774, Nel caso della radice di 10 si ottengono: 3, 3.1, 3.16, 3.162, 3.1622, 3.16227, . Nel caso della radice di 1000: 30, 31, 31.6, 31.62, 31.622, . Nel caso di 0.1: 0.3, 0.31, 0.316, 0.3162, 0.31622, .
Eseguendo la moltiplicazione X·X a mano si può trovare
la radice quadrata di un qualunque numero positivo A con quante cifre
si vogliono. Ad esempio dopo aver trovato il troncamento di
La CT, invece, ci fornirà soltanto una quantità fissata
di cifre. Ad esempio ci potrebbe fornire come valore di Comunque, in genere, è sufficiente conoscere una quantità piccola di cifre.
7. Composizione di funzioni - Funzioni inverse
Abbiamo visto che applicando a un input la funzione f e poi la funzione g del quesito 34 cioè applicando la funzione g(f(.)) l'output ottenuto è uguale all'input. In altre parole g(f(x))=x, ossia g(f(.)) è la funzione x → x.
Le funzioni x → x·1.25 e x → x·0.8 sono dunque una l'inversa dell'altra. Più in generale sono tali le funzioni x → x·k e x → x·(1/k) (cioè x → x/k).
Il numero che si ottiene come output viene chiamato valore assoluto del numero che si è dato come input. Quindi 3 e 3 hanno entrambi 3 come valore assoluto. Il valore assoluto di un numero x viene indicato |x|. Quindi: |6.3| = |6.3| = 6.3.
Molte CT impiegano lo stesso tasto per il quadrato e per la radice quadrata. Battendo direttamente il tasto viene calcolata la radice (o il quadrato, in alcune CT, come in quella "virtuale" presente in Windows), battendo prima un apposito tasto ( o o o ) viene calcolata la funzione inversa.
8. Esercizi
|