Sempre gostei de matemática, ou melhor, da aplicação prática da matemática. Uma das áreas que gosto de "visitar" de vez em quando é a questão dos chek-digits, ou dígitos de controlo, encontrados em quase todos os códigos de produto e afins.
Aqui há tempos tive que criar uma base de dados para gerir códigos EAN, os vulgares códigos de barras que os produtos presentes nos supermercados possuem. Existem vários formatos de códigos EAN, nomeadamente o EAN-8, o EAN-13 e os EAN-13+2 e EAN-13+5.
Nos códigos EAN-13 (o que me interessava para a base de dados), existem 4 campos em que podemos subdividir o código: País, Marca, Produto, Dígito de Controlo.
Por exemplo, se tivermos o código 5601045105306, este subdivide-se em:
- Código do País : 560
- Código da Marca: 1045
- Código do Produto: 10530
- Dígito de Controlo: 6
Ora, os códigos dos diversos países são atribuídos por uma organização internacional, denominada GS1, sendo que a Portugal cabe o 560.
Dentro de cada país, existem organizações que distribuem os códigos pelas marcas, e estas organizam os códigos pelos seus produtos como muito bem entenderem....
Resta o dígito de controlo: Como é calculado ?
Começemos por escrever o código, sem o dígito de controlo:
560104510530
Numeramos as posições da direita para a esquerda :
12 11 10 9 8 7 6 5 4 3 2 1
5 6 0 1 0 4 5 1 0 5 3 0
Multiplicamos todos os algarismos nas posições ímpares (1, 3, 5...) por 3:
12 11 10 9 8 7 6 5 4 3 2 1
5 18 0 3 0 12 5 3 0 15 3 0
Somamos todas as parcelas:
5 + 18 + 0 + 3 + 0 +12 + 5 + 3 + 0 +15 + 3 + 0 = 64
E determinamos qual é o algarismo que é necessário adicionar para que o resto da divisão deste último valor por 10 seja 0 (zero):
70 - 64 = 6
Assim, obtemos o dígito de controlo e podemos agora escrever o código completo:
5601045105306
Existem outros métodos de cálculo de dígitos de controlo, normalmente usados, por exemplo o dos códigos ISBN (dos livros), dos códigos NIB, do número do BI, etc...