A matemática dos códigos de barras
Ao escrever um texto num computador ou num telemóvel, cometemos por vezes alguns erros de escrita. Contudo, um erro de escrita de uma determinada palavra é, em geral, facilmente detetável por outra pessoa que não tenha escrito esse texto: ou a palavra não faz parte da língua (por exemplo, “Maetmática” em vez de “Matemática”) ou o contexto da frase dar-lhe-á pistas para descobrir qual a palavra correta (por exemplo, “lama” em vez de “alma”). Em ambos os exemplos apresentados, cometeu-se um erro comum: a troca ou transposição de dois caracteres adjacentes. Isto acontece sempre que as teclas correspondentes às letras trocadas são premidas pela ordem errada. Outro erro que também é facilmente detetável surge quando acidentalmente se prime uma tecla errada (por exemplo, “falo” em vez de “faço”).
Mas o que acontece se cometermos um erro de escrita numa sequência de algarismos? Para quem não conheça essa sequência, à primeira vista não existe uma forma de detetar o erro cometido. Ora, se pensarmos na quantidade de sequências de algarismos que utilizamos no dia a dia (número de identificação civil ou número do bilhete de identidade, número de contribuinte, número de identificação bancária, entre outros), apercebemo-nos que é fundamental algum tipo de proteção contra este tipo de erros. Um exemplo curioso que ilustra esta necessidade data de 1990 e foi relatado por um jornal do Michigan, nos Estados Unidos da América. As autoridades locais haviam autorizado a demolição de uma casa localizada numa determinada avenida, com o número 451. Devido a um erro de transposição na escrita do número da casa por parte de um dos elementos da equipa de demolição, constatou-se que a casa entabuada com o número 451 continuava de pé após a intervenção solicitada. Contudo, um pouco mais abaixo, da casa número 415 já só restava a cave!
Foi para evitar situações deste género que, desde meados do século passado, se criaram sistemas de deteção de erros sempre que se lida com números com vários algarismos. A ideia é a de incorporar no final da própria sequência de algarismos um ou mais algarismos suplementares, ditos algarismos de controlo ou dígitos de verificação, que permitem detetar se o número em questão é válido ou se, pelo contrário, foi algures cometido pelo menos um erro de escrita, leitura ou transmissão dos algarismos.
Sempre que fazemos compras encontramos um exemplo deste tipo de sistemas de deteção de erros: o código de barras. Este código é constituído por duas partes: um número (normalmente com 8 a 13 algarismos) e a codificação desse número por barras verticais, de modo a permitir a leitura por um leitor ótico. Apresento, a título de exemplo, o número relativo ao código de barras de uma manteiga produzida no Faial: 5606646000012. São 13 algarismos ao todo: 560 identifica todos os produtos de origem portuguesa; 664600001 identifica o produtor e o respetivo produto; 2 é o algarismo de controlo.

Para se verificar se o número do código de barras está correto, procede-se da seguinte forma: fazendo a leitura do número da direita para a esquerda (isto porque se deve começar pelo algarismo de controlo), adicionam-se todos os algarismos que estão nas posições ímpares (primeiro algarismo, terceiro algarismo,…) e adicionam-se todos os que estão nas posições pares (segundo algarismo, quarto algarismo,…); obtêm-se, respetivamente, as somas s1 e s2; por fim, calcula-se o valor de s=s1+3s2 que deverá ser um múltiplo de 10 (ou seja, o seu algarismo das unidades deverá ser 0). Se o resultado final não for um múltiplo de 10, significa que ocorreu um erro e que o número não está correto. Em relação ao exemplo apresentado, fica s1=19, s2=17 e s=19+3x17=70, que é um múltiplo de 10.
Com esta explicação, o leitor passará a ver os códigos de barras com outros olhos e, da próxima vez que se cruzar com um, que tal fazer os cálculos necessários para confirmar a sua validade?
Ricardo Cunha Teixeira (colaborador do Ciência com Todos e docente/investigador no Departamento de Matemática da U. dos Açores)
Página pessoal do autor: www.rteixeira.uac.pt
Ver artigo original em: http://www.tribunadasilhas.pt/index.php/opiniao/item/4987-a-matem%C3%A1tica-dos-c%C3%B3digos-de-barras
Tópico: Comentários
Re: código de barras
Acho que ficou só a faltar a nota a dizer que para diferentes tipos de números usam-se diferentes algoritmos. No caso dos BI's antigos, por exemplo, multiplicava-se cada algarismo do número pelos algarismos 1, 2, 3, ..., 8 (também da direita para a esquerda), somava-se tudo e o resultado tinha que ser múltiplo de 11.
Abraço.
Re:Re: código de barras
Re:Re:Re: código de barras
Nos próximos artigos, cuja publicação já está acordada com o João Pedro, falarei de mais alguns números de identificação, como por exemplo o número de série das notas de Euro e, claro está, não podia deixar de falar no antigo número do BI, atual Número de Identificação Civil (NIC). Abraço!
Código de barras
Quanto ao artigo acho-o muito útil e interessante.
Um abraço para o autor.
Re:Código de barras
Agradeço o feedback. Em relação à questão que coloca, a partir dos 13 algarismos, é possível obter as barras que permitem que estes sejam lidos pelo leitor ótico e vice-versa. A questão interessante tem a ver com o seguinte: dos 13 algarismos, 12 são atribuídos em função do país de origem, do produtor e do produto propriamente dito. O 13º algarismo (o algarismo de controlo, que é o primeiro algarismo da direita) não tem qualquer informação; é calculado de forma a que a tal soma de teste que falo no artigo seja um múltiplo de 10. Por exemplo, se com os cálculos efetuados com os outros 12 algarismos, obtivermos a soma de teste S=57, então esse algarismo deve ser 3, de forma a termos 57+3=60, ou seja, um múltiplo de 10. Abraço.