At My Fingertips

Documentation

Codice a barre

Osserva attentamente questa immagine: probabilmente ne hai viste di simili molte volte. Cosa noti? Cosa ti chiedi?

UPC-A Barcode

È legittimo domandarsi se esiste una qualche relazione tra i numeri e le barre. In realtà, sono semplicemente due modi diversi per rappresentare lo stesso dato.

Esistono numerosi standard mondiali per identificare univocamente i prodotti in commercio. Uno di questi standard è il GTIN.

Ne esistono diverse varianti, tra cui il GTIN-12 è tra le più diffuse: senza troppa sorpresa, prevede di identificare ogni prodotto univocamente con un numero a 12 cifre (che a sua volta ha una certa struttura, con alcune cifre che identificano il produttore e altre il prodotto specifico, ma qui non ci addentriamo nei dettagli).

Codici a barre nel formato UPC

Il codice a barre mostrato sopra contiene in effetti il GTIN-12 due volte: nella parte inferiore le cifre sono scritte in modo che siano facilmente leggibili da un umano ("human-readable"), mentre nella parte superiore sono codificate con un alternarsi di barre e spazi in modo da essere facilmente leggibili da una macchina ("machine-readable").

Il formato di codifica delle barre mostrato sopra usa lo standard UPC (Universal Product Code), nella sua variante UPC-A, che è appunto in grado di rappresentare un numero a 12 cifre.

Questo formato definisce semplicemente una struttura composta da 95 moduli. Un modulo è ciascuna delle strisce verticali, che sono separate da una linea rossa nella figura seguente, riempita di nero (quello che colloquialmente chiamiamo "barra") o bianco (lo "spazio").

Barcode diviso in 95 moduli

Possiamo raggruppare i moduli nei seguenti gruppi:

Moduli raggruppati

  • agli estremi sinistro e destro, due gruppi detti "quiet" composti ciascuno da 9 moduli di spazio
  • appena più all'interno, rispettivamente un gruppo "start" a sinistra e un gruppo "end" a destra composti ciascuno dalla sequenza barra-spazio-barra
  • un gruppo al centro composto da 5 moduli, spazio-barra-spazio-barra-spazio
  • i rimanenti 12 gruppi (6 a sinistra e 6 a destra rispetto al gruppo centrale) sono composti ciascuno da 7 moduli e codificano in sequenza le cifre del numero che vogliamo rappresentare

Prima di addentrarci nella codifica delle singole cifre, prova a creare il gruppo "start" semplicemente mettendo tre rettangoli uno accanto all'altro:

Loading...

Codifica delle cifre

Per semplicità, iniziamo a codificare le prime sei cifre (per intenderci, quelle di sinistra, comprese tra il gruppo iniziale e quello centrale).

Ogni cifra è rappresentata usando 7 moduli. La cifra 0, ad esempio, è rappresentata con la sequenza spazio-spazio-spazio-barra-barra-spazio-barra. Possiamo per comodità identificare lo spazio con il valore booleano False e la barra con il valore True. Consultando lo standard, possiamo creare una lista dove l'elemento in posizione i indica la codifica della cifra i, rappresentata con una lista di 7 valori booleani.

Implementa una funzione che crei la grafica corrispondente alla cifra data, affiancando opportunamente 7 moduli (ricorda che puoi chiamare la funzione modulo definita sopra).

Non preoccuparti per ora di gestire il caso in cui sinistra sia False: ci occuperemo a breve della parte destra.

Loading...

Le seconde sei cifre, a destra della parte centrale, sono codificate invertendo i ruoli di barra e spazio: la cifra 0, ad esempio, è rappresentata con la sequenza barra-barra-barra-spazio-spazio-barra-spazio (esattamente l'opposto della codifica per la parte sinistra).

Estendi l'implementazione della funzione che hai appena definito per gestire anche il caso in cui sinistra sia False.

Mettiamo insieme i pezzi

Possiamo ora creare l'intero codice a barre, affiancando i gruppi di moduli come descritto sopra nell'elenco puntato.

Puoi verificare che il codice a barre "funziona davvero" inquadrandolo con il tuo smartphone e un'applicazione che legga i codici a barre (ne puoi trovare di gratuite sui vari store per le applicazioni).

Loading...

This activity has been created by LuCE Research Lab and is licensed under CC BY-SA 4.0.

Codice a barre

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)