Esperimenti

Lineette di sicurezza - La cifra di controllo

Anna riesce a trasformare un normale pomeriggio al supermercato col papà in un vero e proprio test d'intelligenza. Non ha ancora finito di rimuginare su quello che gli ha appena insegnato a proposito delle code e degli orologi, che è tutta concentrata a pensare una domanda: una spiegazione per uno non fa male a nessuno. E per farsi venire l'ispirazione, cosa c'è di meglio che curiosare in un carrello mentre la coda alla cassa è lunghissima?

Neanche quel giorno, papà Apotema ha saputo resistere alla tentazione di comprare qualche libro per sé, per la mamma e per i due figli. Così, sta ingannando l'attesa immerso nell'ultima avventura del commissario Montalbano, e gli rimane solo quella minima attenzione necessaria a spingere avanti il carrello man mano che la coda procede.

A un bel punto però la lettura comincia a essergli un po' difficile, perché Anna continua a strattonargli la manica e a chiamarlo %3C%3Cpapà, papà%3E%3E: così Giorgio è costretto a voltarsi verso la figlia e a starla a sentire. La bambina è mezza sommersa nel carrello, con le gambette che sventolano per aria, che prende in mano di volta in volta una lattina di coca cola, un pacco di pasta, una confezione di mozzarelle, una bottiglia d'olio extra vergine, del caffè, le merendine preferite di Paolo... ed esclama sempre più stupita "questo ce l'ha... anche questo... e questo... questo anche... e pure questo".

Il papà è già sul punto di sgridarla un po' perché sta mettendo in disordine il carrello che aveva sistemato alla perfezione secondo il suo precisissimo ordine, quando la figlia lo investe con una domanda "ma papà, perché ce l'hanno tutti?".

"Ce l'hanno cosa?" tenta di domandare a lei che non ascolta e prosegue imperterrita "e soprattutto, perché ce l'hanno tutti uguale?".

L'anziana signora che li precede nella fila lancia verso di loro un'occhiata di disapprovazione per il chiasso di Anna e per il disordine che Giorgio permette alla bimba di fare.

"Ma cos'è che hanno tutti di uguale? Di cosa parli?", chiede titubante papà Apotema, aspettandosi una nuova questione irrisolvibile, e si becca un'altra occhiataccia dalla signora che sicuramente si aspettava una sgridata e non che questi desse corda alla figlia chiedendole cosa la incuriosisce!

"Guarda la pasta, ha un quadratino bianco con tante, tantissime lineette nere. E anche lo scottex ce l'ha, e il parmigiano, il detersivo e il dentifricio...". È tutto un prendere un pacchetto, passarlo a papà, prenderne un altro prima che questi abbia finito di guardare il precedente, passarglielo, poi un terzo, un quarto, un quinto... La signora si allontana quanto può e si gira stizzita per tutta quella confusione.

"Anna, basta! Sono tutti uguali. Tutti i prodotti hanno il codice a barre. Quello che vedi è il codice a barre. Certo che ce l'hanno tutti".

A questa prima spiegazione, Anna si ferma di colpo: è soddisfatta che il papà finalmente le abbia prestato attenzione e abbia capito di cosa parla. Spesso i grandi non capiscono le cose importanti e si perdono in particolari inutili. Ora però papà Giorgio sa cosa la interessa, ma non le ha veramente risposto, e così torna alla carica "ma a cosa serve?".

"A distinguere un prodotto dall'altro". "Ma cosa dici! Se le lineette sono tutte uguali!

Come si fanno a distinguere due cose che hanno dei segnetti uguali?".

"No, Anna, guarda meglio, i codici non sono uguali. Le lineette nere sono più o meno fitte, più o meno ampie. E sotto hanno un bel po' di numeri".

"Non li avevo visti", fa la bambina e si mette a controllare che davvero tutti i prodotti abbiano quei numeretti. "E perché ci sono anche i numeri?".

"Credo proprio che i numeri e le lineette dicano la stessa cosa. Sono solo due modi diversi di scrivere lo stesso codice: gli uomini leggono i numeri, le macchine leggono le lineette, che poi si chiamano barre".

"Ho capito" fa Anna, poi si abbandona a un silenzio pensoso, "io riesco a leggere questi numeri, 877943 921343, ma cosa vogliono dire? Io non ci capisco mica niente!". A questa sua nuova domanda, per la prima volta, l'anziana che li precede le sorride: chissà finalmente che quella bambina furbetta non riesca a mettere in difficoltà un papà troppo alla mano!

"I numeri servono a identificare il prodotto, le sue caratteristiche principali, il suo produttore, il paese d'origine. Nelle diverse fasi, dalla produzione, all'imballaggio, allo smistamento, all'acquisto, queste informazioni ti dicono chi è esattamente quel pacco di pasta..."

"... e ti dicono anche quanto costa!", completa soddisfatta Anna.

"No. Questo non è vero. Il codice non contiene anche il prezzo, altrimenti la ditta produttrice dovrebbe cambiare codice a ogni cambio di prezzo, cioè molto più frequentemente di quanto cambi le altre caratteristiche del prodotto. Il prezzo è dentro al computer della cassa".

"Ah", le parole di Giorgio hanno ancora bisogno di una spiegazione: è evidente che per la bambina non tutto è chiaro.

"La cassiera passa sul codice a barre il suo lettore ottico e registra di quale prodotto si tratta. Solo a questo punto salta fuori il prezzo, che è conservato nella memoria della cassa stessa. È come se nella cassa ci fosse la lista dei codici, ciascuno con il suo prezzo".

"Ma come facciamo a sapere che il prezzo che viene fuori quando la cassiera passa il codice è quello giusto? E come fa a saperlo la cassiera?".

E qui la signora che li precede sta bene attenta, perché questo dubbio ce l'ha anche lei, e non è riuscita mai a farselo spiegare da nessuno.

"Il problema è che dobbiamo essere sicuri che il codice letto dal lettore ottico è proprio quello giusto. Per questo, c'è un trucchetto: nei codici a barre, tutte le cifre rappresentano una caratteristica del prodotto, dove è stato fatto, da chi, quando, con che scadenza, con quali ingredienti, e così via. Solo l'ultima cifra non vuol dire niente".

"E perché la mettono?"

"Proprio per controllare che la cassa non si sbagli a identificare il codice"

"Non capisco"

"Ogni prodotto deve avere il suo codice, ogni codice il suo prodotto. Poi quando la cassa legge il codice deve riconoscere il codice giusto: altrimenti ti fa pagare un altro prodotto".

"E come fa?"

"Fa la somma di tutte le cifre del codice".

Anna comincia a essere stufa di tutte quelle parole, prende la palla al balzo e si rituffa a capofitto nel carrello.

"La pasta... fa 60. Le merendine... 80. Il detersivo... 110. La coca cola... 30" "60, 80, 110, 30. Non noti niente?".

"Finiscono tutti per zero"

"Bravissima. La cifra di controllo serve proprio a questo, a completare la somma degli altri numeri del codice, in modo che finisca sempre con uno zero".

Anna non riesce a capire l'entusiasmo del papà: perché è così importante che la somma finisca per zero? Mah. Il papà, da parte sua, ha notato la perplessità nei suoi occhi e così completa la spiegazione, "vedi, Anna, se la somma finisce con zero, il codice è giusto e la cassa scrive il prezzo. Se invece viene un altro numero, alla fine, la cassa fa bip e non scrive niente. E la cassiera deve riprovare. Se continua ad avere solo bip, scrive lei i numeri del codice e non usa le barre".

"E a cosa servono le tre lettere?", "quali?" chiede Giorgio che non ha nessun prodotto in mano.

"E, A e N", "oh, quello è solo il nome del codice: Numero Europeo dell'Articolo. Codice EAN significa proprio Numero Europeo dell'Articolo. È scritto in inglese e così viene EAN".

"Perché allora sul tuo libro, prima dei numeri c'è scritto ISBN?".

"Perché è un altro codice, il Numero Standard Internazionale del Libro, che in inglese si dice Book. E infatti si chiama codice ISBN".

"Se è un altro codice, allora funziona in un altro modo".

Mai come oggi, Giorgio non vede l'ora che la coda finisca e trova che la signora davanti a lui sia tremendamente lenta a sistemare la spesa sul nastro trasportatore; ma questa non ha nessuna fretta, vuole proprio sentire la fine della spiegazione.

"No, vedi, è solo un po' diverso: il numero è composto da tre blocchi 88-06-79356-5. Il primo blocco indica la nazione, 88 è il codice dell'Italia; il secondo è il numero della casa editrice; il terzo quello caratteristico del libro; l'ultimo è la cifra di controllo che funziona come nel codice EAN, anche se qui il risultato non finisce per zero, ma è un po' più complicato".

"Insomma, il trucco è sempre lo stesso. Questi codici ci dicono tutte le caratteristiche di quello che compriamo, ma hanno anche un piccolo meccanismo che verifica se il prezzo è giusto o sbagliato, che poi è la cosa più importante di tutte".

E con questo, per Anna, la discussione e finita e inizia un altro divertimento settimanale, aiutare papà a sistemare tutte le cose perfettamente in ordine sul nastro trasportatore, in modo che le lattine vadano con le lattine, le verdure con le verdure, i formaggi coi formaggi e così via. Se non si mischia niente, poi è molto più facile sistemare tutto a casa.

Conclusione: cifra di controllo

I codici EAN e ISBN che Anna ha scoperto hanno due scopi: individuare esattamente un prodotto o un libro; contenere dei metodi che permettano di correggere errori di lettura da parte dei registratori di cassa. Il primo, individuare il prodotto, non ha niente a che fare con la matematica, il secondo sì.

Gli errori di lettura possono essere soprattutto di due tipi: si legge una cifra al posto di un'altra (5 invece che 2), oppure si invertono due cifre consecutive (96 invece che 69). Sono errori che un registratore di cassa può fare.

I codici, a dire il vero, non correggono gli errori, ma segnalano che un errore c'è stato: a questo punto la cassiera deve ripassare le barre del codice sotto il sensore a raggi del registratore di cassa. Quindi il compito del codice è far sì che la cassiera si accorga che c'è stato un errore.

Per questo, i codici contengono molte cifre (tutte tranne l'ultima) che descrivono le caratteristiche del prodotto, l'ultima invece si chiama cifra di controllo ed è quella che permette di determinare se il codice è corretto o no.

Nel primo codice letto da Anna, 877943 921343, come la bimba ha osservato, la somma delle cifre caratteristiche è 57. L'ultimo 3 porta il totale a 60. Questo è esattamente il lavoro che fa il registratore di cassa: sommare tutte le cifre e verificare che il totale finisca per 0. Infatti, la cifra di controllo viene scelta come l'unica cifra che arrotonda il totale delle cifre caratteristiche al più vicino multiplo di 10.

Questo codice, però, ha un limite: non si accorge se sono state scambiate due cifre consecutive (96 invece che 69). Di fatti, il codice EAN effettivamente in uso, ha una caratteristica in più. Prima di fare la somma delle cifre, quelle di posto pari vengono moltiplicate per 3. Solo dopo questa moltiplicazione, si somma la cifra di controllo per vedere se si raggiunge un multiplo di 10 (cioè un numero che finisce per 0). Ad esempio, 8+7x3+7+9x3+4+3x3+9+2x3+1+3x3+4=105.

Per completare il codice EAN con la sua cifra di controllo, bisogna che questa sia un 5: 877943 921345. Con questo semplice trucco, lo scambio di due cifre consecutive salta subito all'occhio, di fatti 8+7x3+9+7x3+4+3x3+9+2x3+1+3x3+4=101 la cui cifra di controllo dovrebbe essere 9 e non 5.

Il codice EAN, purtroppo però, non si accorge di tutti i possibili scambi: infatti, se si invertono le cifre sbagliando da 27 a 72 succede che 2+7x3=23 e 7+2x3=13 danno esattamente lo stesso contributo (cioè l'ultima cifra 3) al calcolo della cifra di controllo - che in entrambi i casi deve essere un 7.

Questo problema viene evitato dal codice ISBN, quello dei libri, che funziona allo stesso modo, ma con due piccoli cambiamenti essenziali: nel codice EAN, le cifre di posto dispari vengono lasciate invariate e quelle di posto pari vengono moltiplicate per 3. Nel codice ISBN, la prima cifra viene moltiplicata per 10, la seconda per 9, la terza per 8 e così via. Nel codice EAN, la cifra di controllo serve a raggiungere il multiplo di 10 più vicino; nel codice ISBN, viene raggiunto il multiplo di 11 più vicino. Ad esempio, il controllo del codice 88-06-14226-7 si effettua così 8x10+8x9+0x8+6x7+1x6+4x5+2x4+2x3+6x2=246.

E infatti, 246 più 7 dà 253 che è un multiplo di 11 (=23x11).

Vediamo adesso perché questi due piccoli cambiamenti funzionano: il motivo matematico, come vedremo è che 11 è un numero primo.

Come prima cosa, il codice ISBN si accorge se una cifra è scritta sbagliata. Ipotizziamo che la cifra giusta che deve essere moltiplicata per 7 sia "a". Invece il registratore di cassa legge "b". Se indichiamo con S(a) e S(b) le due somme, abbiamo che S(a)-S(b)=7(a-b). Questo numero sicuramente non è divisibile per 11 (se non quando a=b, cioè quando il registratore legge tutte le cifre giuste). Infatti, poiché 11 è un numero primo, 7(a-b) è divisibile per 11 se e solo se o 7 o (a-b) è divisibile per 11. Poiché 7 non lo è, deve esserlo necessariamente (a-b), cosa che succede solo quando le due cifre sono uguali. Pertanto il codice ISBN si accorge se c'è una cifra sbagliata (di fatti lo stesso ragionamento si può ripetere per ciascun altro numero anche diverso da 7).

Infine, vediamo che, a differenza del codice EAN, il codice ISBN si accorge anche dello scambio di due cifre. Ipotizziamo che la cifra che viene moltiplicata per 6 sia "a" e quella moltiplicata per 5 sia "b". Se indichiamo con T(a,b) la somma corretta e con T(b,a) quella in cui il registratore di cassa ha sbagliato facendo lo scambio, otteniamo T(a,b)-T(b,a)=6(a-b)+5(b-a)=a-b.

Come prima, (a-b) è divisibile per 11 se e solo se a=b, cioè se e solo se non è stato effettuato alcuno scambio.

Quindi, il codice ISBN è in grado di accorgersi di tutti gli errori.