Códigos de control en sistemas automáticos

En el DNI además de tus datos personales aparece un número y una letra que te identifican. La letra es un elemento de control que permite evitar muchos errores nada deseables. Imagina que vas a un banco a ingresar 50.000 euros en tu cuenta. El empleado te pregunta el DNI y tu le dices 00.234.476-Z. Tal vez no te oye bien o tal vez pulsa por error el número incorrecto: el resultado es que tus 50.000 euros van a la cuenta de otra persona. ¡Dios mío, cómo puede ser!
Esta suposición no acontece en nuestro entorno debido a un sencillo mecanismo de control. La letra que acompaña al número del DNI, sirve para verificar que el número introducido es correcto. El algoritmo utilizado para verificar el DNI es el siguiente:
Tomamos el número de DNI y lo dividimos entre 23. Nos quedamos con el cociente entero (sin decimales)
Calculamos el resto de la división, que puede obtenerse con la fórmula: resto = NumDNI – 23 · cociente
Buscamos en la tabla inferior la letra que corresponde a ese resto ( R ).
Si coincide con la letra del DNI el número introducido es correcto. Si no es así, el DNI no se acepta.
| R |
Letra |
R | Letra | R | Letra | R | Letra | R | Letra | R | Letra |
| 0 | T | 4 |
G |
8 | P | 12 |
N |
16 |
Q |
20 |
C |
| 1 | R | 5 |
M |
9 | D | 13 | J | 17 |
V |
21 | K
|
| 2 | W | 6
|
Y | 10 |
X |
14 | Z | 18 |
H |
22 | E |
| 3 | A | 7 |
F |
11 | B | 15 | S | 19 |
L |
En el ejemplo que hemos propuesto, al dividir 234.476 entre 23 obtenemos un cociente de 10.194. Con este dato, podemos obtener el resto computando 234.476 – 10.194 · 23 que da como resultado 14. En la tabla superior vemos que el valor 14 se corresponde con la letra Z que coincide con la que aparece en el documento. Si el empleado del banco teclease por error 134476-Z (por ejemplo), entonces el cálculo nos llevaría a 134476 – 5846*23 = 18 que se corresponde con la letra H. El ordenador no aceptaría el DNI y pediría que se volviese a introducir correctamente.
A la hora de hacer operaciones bancarias se suele manejar un número de cuenta tanto o más que el DNI. ¿Hay algún riesgo de equivocarse con el número de cuenta? Sí, es posible. Pero también hay en este caso un sistema para controlar posibles errores. Se trata esta vez de una par de dígitos denominados DC (Digitos de Control). Antes de empezar veamos las partes que integran los 20 dígitos de una cuenta bancaria:

Los cuatro primeros dígitos indican el banco del que se trata. Los cuatro siguientes el número de oficina de ese banco. Los dos siguientes son los dígitos de control. Los diez últimos el número de cuenta dentro de esa sucursal bancaria. Para obtener la primera cifra de control calculamos ( c(i) es la cifra que ocupa el lugar i-ésimo en el número de cuenta ):
S = c(1)· 4 + c(2) · 8 + c(3) · 5 + c(4)· 10 + c(5) · 9 + c(6) · 7 + c(7) · 3 + c(8) · 6
Dividimos S entre 11 y tomamos el resto R. El primer dígito de control es 11 – R, salvo que nos haya dado 10 en cuyo caso el dígito de control sería 1.
Para el segundo dígito de control calculamos:
T = c(11)· 1 + c(12) · 2 + c(13) · 4 + c(14)· 8 + c(15) · 5 + c(16) · 10 + c(17) · 9 + c(18) · 7 + c(19) · 3 + c(20) · 6
Dividimos T entre 11 y tomamos el resto
R'.
El segundo dígito de control es 11 – R',
salvo que nos haya dado 10 en cuyo caso el dígito de control sería 1.
A modo de ejemplo, calculemos los dígitos de control de
la
cuenta mostrada arriba:
S = 7·4 + 0·8 + 3·5 + 4·10 + 1·9 + 0·7 + 2·3 + 7·6 = 140 >> R = 8 >> 1er dígito de control = 3
T = 1·1 + 2·2 + 3·4 + 1·8 + 4·5 + 5·10 + 3·9 + 4·7 + 6·3 + 7·6 = 210 >> R' = 1 >> 2º dígito de control = 1 (10)

Todos podemos ver fácilmente la ventaja de un sistema de código de barras. Cuando este sistema no existía había que consultar continuamente los precios, actualizar existencias, gestionar los posibles cambios de precios. Además, interesaba no hacer esperar demasiado al cliente y de esta forma atender a más clientes en el mismo tiempo.
El código de barras es una solución a todas estas cuestiones. Al pasarlo por delante de un lector infrarrojo, automáticamente añade el precio del producto y lo descuenta de las existencias. Cuando las existencias están por debajo de un nivel establecido, el ordenador avisa de que hay que reponer ese producto.
Pero, ¿es tan fácil leer un código de barras? ¿Qué pasa si el papel está arrugado o manchado? ¿Y si el código no pasa de principio a fin, exactamente, por delante del lector? Podría ocurrir que uno fuese a comprar un kilo de azúcar y le pidiesen 140 euros porque la máquina ha confundido el producto. Pero si os habéis percatado, esto no suele ocurrir. Y el motivo es porque las códigos de barras incluyen un dígito de control que permite a la máquina comprobar si la lectura ha sido correcta o no.
Uno de los códigos de barras más extendidos recibe el nombre de EAN-13. Consta de 13 dígitos, el último de los cuales es el dígito de control. Los primeros dígitos del código representan el país donde radica la empresa (no siempre es el mismo número de dígitos; el 84 representa a España), el siguiente grupo a la empresa y el último grupo al producto. A partir de estos doce dígitos se puede calcular el dígito de control. Sumamos los dígitos que ocupan lugar impar por un lado y por otro lado sumamos los que ocupan un lugar par y multiplicamos esta suma por tres. Con esto obtenemos un número (en el ejemplo, 105). Las unidades que le faltan a este número para ser un múltiplo de 10, es el dígito de control.
8 + 1 + 3 + 5 + 7 + 9 + (4 + 2 + 4 + 6 + 8 + 0)·3 =
= 33 + 72 = 105 ---> 110 -105 = 5
Si al leer el código de barras, el dígito de control que calcula el ordenador no coincide con el que ha leído, "sabe" que la lectura ha sido incorrecta y avisa de esto para que se vuelva a intentar. Todo un invento.
| 00-13: USA & Canada | 20-29: In-Store Functions | 30-37: France |
| 40-44: Germany | 45: Japan (also 49) | 46: Russian Federation |
| 471: Taiwan | 474: Estonia | 475: Latvia |
| 477: Lithuania | 479: Sri Lanka | 480: Philippines |
| 482: Ukraine | 484: Moldova | 485: Armenia |
| 486: Georgia | 487: Kazakhstan | 489: Hong Kong |
| 49: Japan (JAN-13) | 50: United Kingdom | 520: Greece |
| 528: Lebanon | 529: Cyprus | 531: Macedonia |
| 535: Malta | 539: Ireland | 54: Belgium & Luxembourg |
| 560: Portugal | 569: Iceland | 57: Denmark |
| 590: Poland | 594: Romania | 599: Hungary |
| 600 & 601: South Africa | 609: Mauritius | 611: Morocco |
| 613: Algeria | 619: Tunisia | 622: Egypt |
| 625: Jordan | 626: Iran | 64: Finland |
| 690-692: China | 70: Norway | 729: Israel |
| 73: Sweden | 740: Guatemala | 741: El Salvador |
| 742: Honduras | 743: Nicaragua | 744: Costa Rica |
| 746: Dominican Republic | 750: Mexico | 759: Venezuela |
| 76: Switzerland | 770: Colombia | 773: Uruguay |
| 775: Peru | 777: Bolivia | 779: Argentina |
| 780: Chile | 784: Paraguay | 785: Peru |
| 786: Ecuador | 789: Brazil | 80 - 83: Italy |
| 84: Spain | 850: Cuba | 858: Slovakia |
| 859: Czech Republic | 860: Yugloslavia | 869: Turkey |
| 87: Netherlands | 880: South Korea | 885: Thailand |
| 888: Singapore | 890: India | 893: Vietnam |
| 899: Indonesia | 90 & 91: Austria | 93: Australia |
| 94: New Zealand | 955: Malaysia | 977: ISSN |
| 978: ISBN | 979: ISMN | 980: Refund receipts |
| 981 & 982: Common Currency Coupons | 99: Coupons | |
(c) 2011 JM Soft