Seguramente pocos lectores (salvo los más cinéfilos) recuerden una antigua película española interpretada por Fernando Fernán Gómez: ‘La otra vida del capitán Contreras’ (Rafael Gil, 1955). En ella, un personaje del siglo XVI despierta en el siglo XX, quedando perplejo de muchas de las situaciones a las que debe enfrentarse por cómo ha cambiado el mundo que conocía (en efecto, lo del Alonso de Entrerríos de ‘El Ministerio del Tiempo’ ya estaba inventado, aunque su actualización nos deparó no pocos divertidos momentos).
El otro día, esperando a pagar en la cola de un supermercado, cosa de cinco minutos, recordé que sólo una treintena de años atrás, esa espera hubiera supuesto, sin exagerar, porque lo viví de niño, un par de horas.
Las cajeras tenían que meter el precio que marcaba la etiqueta (que, por cierto, algunos cambiaban poniendo precios menores a productos más caros) una a una, y hacer la suma para poder cobrarte el importe final. Eran los primeros hipermercados, la gente iba en coche, y llenaba los carros, lo que hacía que la atención a cada cliente fuera larga. Y eso siempre que el o la cajera no se confundiera, en cuyo caso debía restar el importe mal introducido y volver a teclear el correcto.
Recuerdo con frecuencia aquello, porque observo diariamente cómo muchas personas ponen el grito en el cielo hoy en día (y es textual) gritando «¿No hay más cajeros?» o cuando alguien ‘se cuela’ y montan la discusión. Si total va a ser cuestión de un par de minutos (ojo, con eso no digo que la gente se cuele: hay que guardar las mínimas formas de convivencia).
Esos cinco minutillos de espera únicamente son gracias a los códigos de barras, esa serie de delgadas barras negras (que se codifican como unos), y los espacios en blanco que quedan entre ellas (que se codifican como ceros), de diferentes anchuras. Esos códigos se interpretan mediante un dispositivo óptico, que mide la luz reflejada y de ahí obtiene una clave que manda al ordenador de la caja.
El primer sistema de este tipo se patentó el 7 de octubre de 1952 en los Estados Unidos por Norman J. Woodland (1921 – 2012) y Bernard Silver (1924 – 1963). En 1948, el dueño de una pequeña tienda de comestibles comentó a Silver, recién graduado en el Instituto de Tecnología de la Universidad de Drexel (en Filadelfia, Pensilvania), si no podría inventarse un procedimiento automático para leer los datos de los productos en el momento en que el cliente pagara en caja. No sólo porque el pago fuera más rápido, sino porque además se tendría el control de las unidades almacenadas y se prevendrían las situaciones de desabastecimiento, algo que se hacía (en algunos sitios sigue así) mediante un inventario periódico.
Silver recogió la idea y se la comentó a su compañero Woodland que, estando de vacaciones en la playa, comenzó a dibujar en la arena puntos y rayas de manera similar al código Morse. En un momento dado, tirando de los puntos hacia abajo con los dedos en la arena, creó una serie de líneas finas con los puntos, y unas bandas más anchas a partir de los guiones. Eso le dio la idea de una especie de código Morse bidimensional. Pensando en que pudiera leerse por algún dispositivo similar al empleado para las bandas sonoras de las películas en celuloide, y que pudiera hacerse en cualquier dirección, dispuso esas barras en forma de diana, concéntricamente (ver imagen). La máquina que instalaron para leerla requería una lámpara enormemente brillante (500 vatios) y un tubo especial para convertir la luz en código. Su coste echó atrás al pequeño comercio.
Además, las impresoras de entonces no tenían la calidad de las actuales, y al dibujar los círculos concéntricos, aparecían con frecuencia manchas de tinta que hacían que su posterior lectura fuera complicada. Finalmente, vendieron su patente a Philco por 15.000 dólares (lo único que cobraron por su invento). Pasó por varias empresas, pero ninguna se decidió a comercializarlo. Expiró su periodo de validez en 1969, y nadie la utilizó.
En 1971, Woodland (Silver ya había fallecido) trabajaba para IBM, y retomó la idea. En este momento empezaban a desarrollarse los láseres, e IBM mejoró el sistema mediante un código de producto en forma rectangular que ocupaba menos espacio en el envase y era más cómodo y económico de imprimir, el UPC (Universal Product Code). George J. Laurer (1925 – 2019) fue el ingeniero que lo desarrolló, optimizando otras propuestas que fueron surgiendo desde 1966. El
matemático David Savir refinó más los detalles, que incluían añadir un dígito de verificación como corrector de errores. En 1974, un cajero de supermercados Marsh en Ohio, escaneó un paquete de chicle, el primer artículo vendido con un código UPC.
Los códigos UPC se utilizan en los Estados Unidos fundamentalmente, y tienen dos versiones: el UPC-A (con 12 dígitos) y el UPC-E (con 6 dígitos). Dado que el código utilizado en España (y toda Europa) es un muy similar a éste norteamericano, describiremos con detalle el nuestro.
El código EAN
En España se emplea el código EAN – 13 (European Article Number), creado en 1976 y no es sino una variante del UPC. El 13 es por el número de dígitos que emplea. Presenta esos 13 dígitos con 30 barras. El número total de posibles códigos de barras está determinado por el estándar utilizado para crearlos: hay 12 números, y cada número puede tomar 10 valores posibles (de 0 a 9). Por tanto, el número total es de 10^12 códigos diferentes, un billón, por tanto.
Si nos fijamos en la imagen adjunta, hay varias partes diferenciadas, separadas por la largura de las barras. Sigue un esquema del tipo S – LLLLLL – M – RRRRRC – E. La zona de inicio S (Start) son dos barras más largas que las siguientes. Antes, en una zona en blanco, aparece debajo un único dígito. Después hay seis dígitos que constituyen el lado izquierdo L (Left). A continuación, otras dos líneas más largas, como las de inicio, que forman la zona Media M, que separa las otras dos y no contiene debajo ningún dígito (las barras tienen su configuración y características también, pero no las detallaremos; así esta zona media siempre es espacio – barra – espacio – barra – espacio, por poner un ejemplo). Después, otros seis dígitos bajo la zona derecha R (Right) de las barras; el último dígito de esos seis es de control, y por eso lo hemos designado como C. Y finalmente, la zona final E (End), que son otras dos barras más largas, sin dígitos debajo.
Los dos o tres primeros dígitos identifican el país de origen del código de barras (no del producto). El de España es el 84. Los cinco dígitos siguientes representan a la empresa productora del artículo (en el caso de la imagen, 80000), los cinco siguientes corresponden al código que la empresa ha dado al producto según haya indicado el fabricante, y el último es un dígito de control que, como en las tarjetas de crédito, se emplea para verificar que todo está en orden. El algoritmo que comprueba si ese dígito de control es correcto es así:
En el ejemplo de la imagen anterior, se tiene
8 + 8 + 0 + 0 + 0 + 5 + 3(4 + 0 + 0 + 1 + 7 + 4) + 1 = 70
que, en efecto, es divisible por 10. El código es, por tanto, correcto. El dígito de control nos permite detectar errores, pero no corregirlos. Si el error se debe a la alteración de un único dígito, se detecta siempre, no así con errores de intercambio de dígitos, en los que hay casos que no se pueden detectar.
Por supuesto, si desconocemos alguno de los dígitos del código, o no lo vemos con claridad, la expresión matemática anterior nos permite averiguarlo, simplemente conociendo el lugar que ocupa. Supongamos que tenemos el código 40564×9044390, siendo x un dígito que no distinguimos, o se ha borrado. De acuerdo con el algoritmo
Otro modo de determinar esa última congruencia es el siguiente. El resto de la división de 86 entre 10 es 6. Y 10 – 6 = 4, por lo que – 86 4 (mod 10). Ahora para resolver la ecuación 3x 4 (mod 10), por la definición de congruencia, equivale a ver cuándo 3x – 4 es un múltiplo de 10. Si hacemos 3x – 4 = 10, la solución no es entera; sin embargo, para 3x – 4 = 20, tenemos que x = 8. Para múltiplos mayores de 10, el cociente ya no es un único dígito, por tanto, la anterior es la solución. El código correcto es entonces 4056489044390.
Seguramente alguien puede pensar si no podría ocurrir que, en un cálculo como el anterior, no podría haber dos valores diferentes para x verificando la congruencia del algoritmo. Eso no puede suceder, y la razón se fundamenta en que los pesos por los que multiplicamos a los dígitos (1 para los del lugar impar, 3 para los de lugar par) son primos con 10 (no tienen ningún divisor común).
No solamente se codifican los productos que compramos. Los libros tienen además un código añadido que es el ISBN, los números de las tarjetas de crédito, el cálculo de la letra de nuestro NIF, etc.
La extensión natural de los códigos de barras son los sistemas de codificación bidimensionales, en los que la información se almacena en forma matricial, con lo que su capacidad es mayor. Hay varios tipos, como los códigos BIDI o los códigos QR (Quick Response). Éstos últimos se han popularizado mucho más, por su mayor capacidad de almacenar información, son más sencillos de reconocer e interpretar, pero, sobre todo, por ser de uso gratuito y licencia abierta, a diferencia de los BIDI que necesitan una licencia para ser creados y una aplicación especial de pago para leerlos.
Los códigos QR nos trasladan de forma inmediata a aplicaciones en Internet con muy diferente información dependiendo de dónde se encuentre el código y qué pretenda mostrar: la localización de un lugar, un correo electrónico, una página web, un juego, un perfil en una red social, etc. Además, hay diferentes aplicaciones en el mercado, varias gratuitas, que permiten al usuario generar los códigos de barras o QR que necesite para su negocio, empresa, o sencillamente para cualquiera que tenga necesidad de completar cualquier tipo de información (las exposiciones, por ejemplo, suelen emplearlos).
Las matemáticas no sólo nos han mejorado, apoyándose en la tecnología, los tiempos de espera en los supermercados, o la gestión del stock de existencias. Necesitamos que los miles de transacciones diarias (pagos, compras, transferencias bancarias, etc.) que realizamos a través del móvil o internet garanticen cierta seguridad, para que nadie pueda apropiarse de nuestro dinero o información delicada. La codificación segura de las mismas se realiza gracias a algoritmos basados en resultados matemáticos de teoría de números. Estas operaciones también nos ahorran un montón de desplazamientos, esperas, etc. ¿Y qué decir de las fotografías, selfies y demás? ¿Quién se acuerda de los carretes que hay que revelar en una tienda y de la ‘sorpresa’ de descubrir qué y cómo ha salido la instantánea? De nuevo la digitalización (sistema binario, ceros y unos) nos han permitido un control personal e inmediato de todo lo que fotografiamos.
Por no hablar del almacenamiento de música o películas. Aquellas enormes bobinas que los cines debían ir a recoger a las distribuidoras cada vez que cambiaban de programa, los VHS de lamentable resolución gráfica y sonora frente a los DVD o los Blu-Ray, o los risibles efectos especiales hasta bien entrados los años ochenta del siglo pasado al lado de los actuales basados en técnicas fractales o de resolución de sistemas de ecuaciones de una magnitud y complejidad impensables no hace tanto. Por supuesto hay muchos más, que iremos desgranando en sucesivas entregas de esta misma sección.
Paradójicamente, lo que no ha cambiado excesivamente son los contenidos y las metodologías que los alumnos reciben en las aulas de matemáticas. Es indiscutible que esta disciplina necesita para poder profundizar un poco, de unos contenidos básicos ineludibles que se deben conocer y manejar antes de pensar en manejar aspectos más avanzados. Pero no está de más mostrar las aplicaciones, la utilidad real y constatable de las matemáticas, y, sobre todo, utilizar metodologías y medios que la investigación en didáctica y la tecnología actual, respectivamente, hacen posible de un modo más motivador y fructífero. Muchos profesores lo están haciendo, con buenos resultados. Sin embargo, aún son la minoría.