Este post é um pouco extenso, mas vale a pena ler.
Uma rotina muito utilizada por programadores em softwares comerciais é a da validação do Cadastro de Pessoa Física (CPF). Muitos pegam estas rotinas prontas na internet, milhares de sites oferecem nas mais diversas linguagens de programação. Aos invés de você confiar seu software a essas rotinas que tal você mesmo desenvolver a sua tendo a certeza que a mesma está certa e funciona perfeitamente?
Para isso fui atrás do algoritmo responsável pela validação de acordo com a regras do Ministério da Fazenda para você mesmo fazer seu algoritmo e ter certeza de que o mesmo funcionará corretamente além de ter o controle do mesmo para eventuais modificações.
Entendendo a Validação
O CPF é composto por onze algarismos, onde os dois últimos são chamados de dígitos verificadores, ou seja, os dois últimos dígitos são criados a partir dos nove primeiros. O cálculo é feito em duas etapas utilizando o módulo de divisão 11.
Para exemplificar melhor iremos calcular os dígitos verificadores de um CPF hipotético, por exemplo, 222.333.666-XX.
Calculando o Primeiro Dígito Verificador
O primeiro dígito é calculado com a distribuição dos dígitos colocando-se os valores 10,9,8,7,6,5,4,3,2 conforme a representação abaixo:
2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
20 | 18 | 16 | 21 | 18 | 15 | 24 | 18 | 12 |
Em seguida efetuaremos o somatório dos resultados (20+18+…+18+12), o resultado obtido (162) será divido por 11. Considere como quociente apenas o valor inteiro, o resto da divisão será responsável pelo cálculo do primeiro dígito verificador.
Vamos acompanhar: 162 dividido por 11 obtemos 14 de quociente e 8 de resto da divisão. Caso o resto da divisão seja menor que 2, o nosso primeiro dígito verificador se torna 0 (zero), caso contrário subtrai-se o valor obtido de 11, que é nosso caso, sendo assim nosso dígito verificador é 11-8, ou seja, 3 (três), já temos parte do CPF, confira: 222.333.666-3X.
Calculando o Segundo Dígito Verificador
Para o cálculo do segundo dígito será usado o primeiro dígito verificador já calculado. Montaremos uma tabela semelhante a anterior só que desta vez usaremos na segunda linha os valores 11,10,9,8,7,6,5,4,3,2 já que estamos incorporando mais um algarismo para esse cálculo. Veja:
2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 | 3 |
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Na próxima etapa faremos como na situação do cálculo do primeiro dígito verificador, multiplicaremos os valores de cada coluna e efetuaremos o somatório dos resultados obtidos: 22+20+18+24+21+18+30+24+18+6=201.
2 | 2 | 2 | 3 | 3 | 3 | 6 | 6 | 6 | 3 |
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
22 | 20 | 18 | 24 | 21 | 18 | 30 | 24 | 18 | 6 |
Agora pegamos esse valor e dividimos por 11. Considere novamente apenas o valor inteiro do quociente, e com o resto da divisão, no nosso caso 3, usaremos para o cálculo do segundo dígito verificador, assim como na primeira parte.
Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser zero, que não é o nosso caso, no caso em questão é necessário subtrair o valor obtido de 11 para se obter o dígito verificador, ou seja, 11-3 (que foi o resto da divisão).
Neste caso chegamos ao final dos cálculos e descobrimos que os dígitos verificadores do nosso CPF hipotético são os números 3 e 8, portanto o CPF ficaria assim: 222.333.666-38.
..::: Comente aqui :::..