Diminuição da probabilidade de erro na digitação de um código numérico. O dígito de controlo (check digit) Seja N = a1a2a3a4a5a6a7a8a9a10 um número de dez algarismos representativo de um código de artigo. Os erros mais comuns na digitação de um número são: 1. Troca de um dos algarismos, como seja: Número correcto: 7 123 409 205. A troca do a7 – o nove – pelo seis, que lhe fica junto no teclado, daria: 7 123 406 205. 2. Troca da sequência de dois algarismos consecutivos. Retomado o exemplo anterior, se a troca ocorresse entre os algarismos a6 e o a7 ter-se-ia: 7 123 490 205. É fácil implementar um algoritmo que detecte se algum destes dois erros foi cometido na digitação, escolhendo para o último algarismo – neste exemplo o cinco – um número específico, designado por check digit ou dígito de controlo. Um dos algoritmos mais conhecidos para determinação do dígito de controlo é o seguinte 1: 1 – Atribui-se inicialmente zero ao dígito de controlo, que se inscreve na última posição. 2 – Multiplica-se cada dígito pelo número indicador da posição que ocupa, ou seja, o primeiro por 1, o segundo por 2, etc. até ao último. 3 – Somam-se os resultados obtidos. 4 – Determina-se o resto da divisão desse número por 11. 5 – O dígito de controlo é esse número, que deverá ser inscrito na última posição. Aplicando o algoritmo ao exemplo acima, tem-se: 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 7 1 2 3 4 0 9 2 0 0 x x x x x x x x x x 1 2 3 4 5 6 7 8 9 10 7 2 6 12 20 0 63 16 0 0 A soma dos valores da última linha é 126. A divisão de 126 por 11, dá 11 e resto 5. O dígito de verificação é portanto 5, e o código completo é 7 123 409 205. Se se efectuar novamente o cálculo anterior, agora com o dígito de verificação correcto na posição 10, verifica-se que o resto da divisão obtido no passo 4 é zero. Esta propriedade é utilizada para efectuar a verificação da correcção do código, durante a leitura: Se ocorrer o erro 1: P = 155, que dividido por 11, dá resto um. Se ocorrer o erro 2: P = 167 que dividido por 11, dá resto dois. 1 Este algoritmo específico é o utilizado para o ISBN, International Standard Book Number, que tem 10 dígitos. Este tipo de algoritmo garante que erros do tipo dos descritos são detectados. Muitos outros erros de digitação são igualmente detectados com o mesmo tipo de algoritmo. Embora não se possa dizer que a probabilidade de deixar passar um erro é nula, verifica-se que ela é, de facto, extremamente reduzida. Se o número de algarismos do código for diferente de dez, o algoritmo deve ser modificado no passo 5: 5a – Se o resto é zero, o dígito de controlo é o número que figura na última posição. Se não for, aumentase de uma unidade o valor do dígito que está na última posição e repete-se o processo tantas vezes até que o resto seja zero. O dígito de controlo é o número que figura então na última posição. Pode ler uma explicação mais detalhada em: Jorge Buescu, O Mistério do Bilhete de Identidade e Outras Histórias, Gradiva, Lisboa, 2001. Uma busca na internet usando o GOOGLE e a frase “check digit” produziu mais de 90 000 links, com diversos algoritmos. ———————————— ooo O ooo ———————————— O algoritmo de cálculo do dígito de controlo para o código de barras EAN-13 2 (que tem 13 dígitos) é o seguinte 3: 1 – Atribui-se inicialmente zero ao dígito de controlo, que se inscreve na décima terceira posição. 2 – Multiplicam-se os dígitos nas posições ímpares (primeiro, terceiro, quinto, etc. até ao décimo terceiro) por 1. 3 – Multiplicam-se os dígitos nas posições pares (segundo, quarto, sexto, etc. até ao décimo segundo) por 3. 4 – Somam-se os resultados obtidos. 5 – Determina-se o resto da divisão desse número por 10. 6 – O dígito de controlo a inscrever na posição 13 é a diferença entre 10 e o número determinado no passo 5. Exemplo: seja o código, ainda sem o dígito de controlo, 560 123 456 789. Seguindo os passos acima descritos, tem-se: 1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 11º 12º 13º 5 6 0 1 2 3 4 5 6 7 8 9 0 x x x x x x x x x x x x x 1 3 1 3 1 3 1 3 1 3 1 3 1 5 18 0 3 2 9 4 15 6 21 8 27 0 A soma dos valores da última linha é 118. A divisão de 118 por 10, dá 11 e resto 8, e o dígito de controlo é 10 – 8 = 2. Então o código completo, com o dígito de controlo é 560 123 456 789 2. Se se efectuar novamente o cálculo, agora com o dígito de verificação correcto na posição 13, verifica-se que o resto da divisão obtido no passo 5 é zero. Esta propriedade é utilizada para efectuar a verificação da correcção do código, durante a leitura. 2 3 Uma introdução aos sistemas de codificação de código de barras e algoritmos de cálculo do dígito de controlo pode ser encontrada em http://www.codipor.pt/ean_ucc/ean_ucc.htm. Os códigos EAN-8, EAN-C e ITL-14 recorrem a variações deste algoritmo para determinação do dígito de controlo.