Quando escrevemos um texto por meios eletrónicos e o enviamos a alguém, pode acontecer que essa pessoa não receba o texto exatamente como nós pretendíamos. Isto porque no decorrer da escrita pode ter sido cometido algum erro (por exemplo, devido à troca de letras consecutivas de uma palavra ao premirmos as teclas correspondentes por ordem errada ou porque o corretor ortográfico optou por uma palavra diferente da que pretendíamos e não nos apercebemos). Mesmo assim, no caso de uma palavra, o erro pode ser facilmente detetado por quem recebe a mensagem: ou a palavra em causa não faz parte do dicionário ou o sentido da frase é suficiente para identificar o erro. Contudo, se o erro for cometido numa sequência de algarismos e se o recetor não conhecer o número em causa, ele não tem forma de identificar esse erro.
Assim, a ocorrência de erros em números no contexto da transmissão de informação pode ter implicações muito desagradáveis, em particular se os erros forem cometidos em números de identificação (como sejam os números que identificam pessoas ou bens). Por este motivo, de alguns anos a esta parte, foi introduzido um algarismo de controlo (checkdigit) no final da sequência de algarismos de números relevantes. O checkdigit não tem informação específica, apenas permite identificar a ocorrência de erros na escrita desses números, mediante a aplicação de um determinado algoritmo.
Existem números de identificação com diferentes algoritmos. Neste texto, vamos analisar o algoritmo aplicado para o número do certificado de matrícula e para o número de beneficiário da ADSE.
O certificado de matrícula ou Documento Único Automóvel (DUA) é o documento que identifica um veículo em Portugal. O DUA reúne as características que identificam o veículo, bem como os elementos referentes à sua propriedade, constituindo o documento de identificação de um veículo para efeitos da circulação.
O DUA foi criado em 2005,com um formato desdobrável em papel (Figura A) definido pela Portaria 1135-B/2005, de 31 de outubro, passando a agregar a informação de dois documentos usados até então: o livrete e o título de registo de propriedade do veículo. A partir de 2019, surgiu um novo modelo que se assemelha a um cartão multibanco (Figura B) definido pela Portaria 241-A/2019, de 31 de julho. O novo formato do DUA é mais seguro e incorpora um código UniQode para a leitura ótica da informação do cartão. Para ler o UniQode é necessário ter a aplicação DUApp, que se pode aceder a partir do código QR disponível no próprio cartão. Nas Figuras A e B estão assinaladas as zonas onde se localiza o número do certificado de matrícula, em ambas as versões.
O DUA é emitido na compra de um veículo novo (primeiro registo) ou quando há uma transferência de propriedade para outra pessoa ou empresa (venda do veículo), uma alteração dos dados do proprietário (morada ou nome) ou uma alteração das características do veículo. Também é possível pedir uma 2.ª via se o documento inicial se perdeu, foi roubado ou está ilegível. A renovação do DUA implica a atribuição de um novo número do certificado de matrícula.
Passamos à contextualização do número de beneficiário da ADSE (Assistência na Doença dos Servidores do Estado). Este é um dos subsistemas de saúde da Administração Pública, a par de outros subsistemas sectoriais: Serviços Sociais do Ministério da Justiça (SSMJ), Assistência na Doença aos Militares das Forças Armadas (ADM) e Serviços de Assistência na Doença da Polícia de Segurança Pública (SAD-PSP) ou da Guarda Nacional Republicana (SAD-GNR).
O cartão da ADSE sofreu mudanças significativas ao longo do tempo, patentes nas Portarias 873/82, de 15 de setembro, e 1231-B/90, de 27 de dezembro. Em 2017, foi criada uma nova versão do cartão da ADSE, que passou também a ser disponibilizada em formato digital para smartphone. É possível aceder à versão digital através da aplicação MyADSE. Na Figura C, assinala-se a zona onde se localiza o número de beneficiário, que não é alterado aquando da renovação do cartão, exceto quando o cidadão passa de dependente a titular. À frente do número surgem duas letras que correspondem à classe do beneficiário titular, por exemplo: OA (Organismo Autónomo), RA (Região Autónoma dos Açores), SS (Serviço Integrado), AP (Aposentado) ou AA (Aposentado da Região Autónoma dos Açores).
A criação da ADSE remonta ao ano de 1963. Contudo, a utilização de números de beneficiário com checkdigit é necessariamente mais recente, pois a viabilidade da introdução dos algarismos de controlo depende de meios informáticos adequados que foram sendo consolidados nas décadas seguintes. O checkdigit deve ter sido introduzido aquando de uma das portarias referidas acima, embora não haja referência explícita. Isto porque o algoritmo em causa é o mesmo que é aplicado para o número de identificação fiscal ou número de contribuinte, que foi criado pelo Decreto-Lei 463/79, de 30 de novembro (onde se refere que o último algarismo é um “dígito de controle da exatidão do número”), e para o atual número de identificação civil, antigo número do bilhete de identidade, cujo algarismo de controlo deve ter sido introduzido com a Lei 12/91, de 21 de maio (onde se pode ler que o número do bilhete de identidade “é seguido de um dígito de controlo, atribuído automaticamente”).
Em seguida, exemplificamos os cálculos a efetuar para confirmar a validade destes números de identificação. A Figura D apresenta o número de um certificado de matrícula. Para se verificar se o número está correto, procede-se da seguinte forma: fazendo a leitura do número da direita para a esquerda (de modo a começar pelo checkdigit), multiplicam-se os algarismos sucessivamente por 1, 2, 3, 4, …, e adicionam-se os resultados. A soma de teste obtida deve ser um múltiplo de 11, isto é, um número natural que resulta de várias cópias do 11. Para o exemplo apresentado, obtém-se 176, que consiste em dezasseis cópias do 11, o que comprava a validade do certificado de matrícula. O algoritmo é o mesmo para o número de beneficiário da ADSE, bem como para o número de identificação fiscal e o número de identificação civil, antigo número do bilhete de identidade. Desafia-se o leitor a encontrar na sua carteira estes números de identificação e a calcular a soma de teste como exemplificado na Figura D, verificando se é um múltiplo de 11.
O checkdigit é escolhido aquando da atribuição do número de identificação, de modo que a soma de teste seja um múltiplo de 11. Ora, isso implica que o checkdigit possa assumir qualquer valor de entre os possíveis restos da divisão por 11 (0, 1, 2, …, 9, 10). Este facto conduziu a um bug no algoritmo aplicado em Portugal, que foi identificado por Jorge Picado, da Universidade de Coimbra, e divulgado por Jorge Buescu, da Universidade de Lisboa. Surge então um problema quando o checkdigit é 10, isto porque só há espaço para colocar um carácter no lugar destinado ao algarismo de controlo. Em alguns sistemas que são usados internacionalmente, optou-se por substituir 10 pela letra X, que representa o número 10 no sistema de numeração romana. Noutros, simplesmente não se utilizam os números de identificação com checkdigit 10.
Contudo, os responsáveis pela criação destes sistemas de identificação portugueses, provavelmente por falta de competências matemáticas, optaram por substituir as ocorrências do 10 por… 0!Ou seja, em metade dos casos em que o checkdigité impresso como 0, este verdadeiramente deve ser 10. Assim, se o leitor tem umcheckdigit0 em algum dos números de identificação referidos neste texto e se as suas contas não estão a produzir um múltiplo de 11, substitua o 0 por 10. A nova soma de teste já deverá ser um múltiplo de 11!
A dualidade de significado numérico do checkdigit tem consequências claras: muitos erros de escrita podem não ser detetados para os números de identificação terminados em 0. Se o leitor tiver um desses números, tenha cuidado, pois muitos erros de escrita não são detetados! Por exemplo, o número 476013160 está correto, se considerarmos que o checkdigit vale 10. Se, por exemplo, cometermos um erro na escrita do algarismo das centenas, escrevendo 8 em vez de 1, o número 476013860 continua válido, considerando o checkdigita valer 0, e o erro não é detetado.
Na segunda parte do livro “Das calçadas aos ananases: investigar o mundo com um olhar matemático”, da editora Letras Lavadas, explicam-se os algoritmos que estão na base da criação de outros números de identificação.
Ricardo Cunha Teixeira