Algoritmo do CPF – Vou te ensinar como fazer o cálculo

images.jpg

Para exemplificar o processo vamos gerar um CPF válido, calculando os dígitos verificadores de um número hipotético, 111.444.777-XX.

Calculando o Primeiro Dígito Verificador

O primeiro dígito verificador do CPF é calculado utilizando-se o seguinte algoritmo.

1)

Distribua os 9 primeiros dígitos em um quadro colocando os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2 abaixo da esquerda para a direita, conforme representação abaixo:

1 1 1 4 4 4 7 7 7
10 9 8 7 6 5 4 3 2

2) Multiplique os valores de cada coluna:

1 1 1 4 4 4 7 7 7
10 9 8 7 6 5 4 3 2
10 9 8 28 24 20 28 21 14

3) Calcule o somatório dos resultados (10+9+…+21+14) = 162

4)

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 como quociente e 8 como 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 portanto parte do CPF, confira: 111.444.777-

3X.

Calculando o Segundo Dígito Verificador

1) 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:

1 1 1 4 4 4 7 7 7 3
11 10 9 8 7 6 5 4 3 2

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: (11+10+…+21+6) = 204.

1 1 1 4 4 4 7 7 7 3
11 10 9 8 7 6 5 4 3 2
11 10 9 32 28 24 35 28 21 6

3)

Realizamos novamente o cálculo do módulo 11. Dividimos o total do somatório por 11 e consideramos o resto da divisão.

Vamos acompanhar: 204 dividido por 11 obtemos 18 como quociente e 6 como resto da divisão.

4) Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser zero, caso contrário (como no nosso caso) é necessário subtrair o valor obtido de 11 para se obter o dígito verificador. Logo, 11-6= 5, que é o nosso segundo dígito verificador.

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 5, portanto o CPF ficaria assim: 111.444.777-35.

O gerador de CPF apresentado funciona com base neste algoritmo. A rotina de gerar CPF ’s válidos, inicialmente sorteia 9 números. Calcula-se o 1o dígito verificador e integra-se o mesmo aos 9 números iniciais. Prossegue-se com o cálculo do segundo dígito verificador como ensinado. Ao final, o criador de CPF emite um número de CPF válido.

o algoritmo vai ficar assim, agora cabe você montar em outros códigos de progrmação

Algoritmo ConfereCPF
VAR inteiro: d,a array[1..11]
inteiro: i,s1,s2
inteiro: d10, d11
inicio
escrever(‘digite o CPF deixando um espaco entre os digitos’);
para i de 1 até 11 faça
ler(d[i]);
;
{multiplicar os digitos por um valor}
para i de 1 até 9 faça
a[i] := d[i]*(11 – i);
{calcular a soma s1}
s1 := 0;
para i de 1 até 9 faça
s1 := s1+a[i];
{calcular o digito 10}
d10 := 11 – (s1 mod 11);
se (d10 > 9) então d10 := 0;

{multiplicar os digitos por um valor}
para i de 1 até 10 faça
a[i] := d[i]*(12 – i);
{calcular a soma s2}
s2 := 0;
para i de 1 até 10 faça
s2 := s2 + a[i];
{calcular o digito 11}
d11 := 11 – (s2 mod 11);
se (d11 > 9) então d11 := 0;

{conferir se o CPF é válido}
se (d10 = d[10]) e (d11 = d[11]) então
escrever(‘CPF valido’)
senão
escrever(‘CPF invalido’);

fim do algoritmo

No próximo post vou mostrar o calculo do algoritmo de cartão de crédito válido

 

23 Respostas para “Algoritmo do CPF – Vou te ensinar como fazer o cálculo”

  1. Jose Vitor Disse:

    Olá,

    Conhece algum plugin para incluir e validar campo CPF no registro de usuários num blog wordpress?

    Grato!

    (gentileza responder por e-mail)

  2. watesnake Disse:

    cara acho que o wordpress não aceita colocar pluguins nunca tinha pensado nisso vou pesquisar sobre isso depois te falo

  3. Robinson Alexandre Ribeiro Disse:

    Ola estou enviando esta mensagem para dizer que estou fazendo um TCC na linguagem Java e preciso de uma applet para o algoritmo do CPF e tambem do plugin para este algoritmo, pois o assunto do meu TCC eh estrategia de distribuicao e aplicacao da linguagem Java e o meu orientador pediu para fazer essa estrategia de aplicacao usando o algoritmo do CPF na linguagem Java e por isso preciso da applet e do plugin para esse algoritmo. Espero receber alguma resposta seja sim ou nao em me poder ajudar, ok.
    agradeco.
    Robinson

  4. watesnake Disse:

    josé vitor no site http://www.javascript.com vc acha isso

  5. watesnake Disse:

    Robinson Alexandre Ribeiro usa o programa netbeans pra fazer isso

  6. Deonni Disse:

    Muito legal a forma como explicado, deixou bem claro e facil de entender

  7. rayadine Disse:

    eu quero aprender

  8. dúvida Disse:

    Amigo, esse algoritmo não rodou, deu erro em:

    para i de 1 ate 9 faca
    a [ i ] = d[ i ]*( 11 – i )

  9. dúvida Disse:

    Pode me ajudar? me retorna no meu email fazendo favor. Agradeço.

  10. dúvida Disse:

    Estou fazendo no portugal viana

  11. watesnake Disse:

    funcionou normal

  12. watesnake Disse:

    mais não deixou nem o e-mail

  13. andre lima Disse:

    meu não deu certo,

  14. Fernanda Caofd Disse:

    Existe um site bem bacana que usa tudo isso para gerar e validar cpf e outros documentos:

    http://www.gerardocumentos.com.br/

    Simples e facil!!

  15. Wesley Disse:

    cara preciso pra ontem, criar um algortimo para validação do cpf, nao to conseguindo intender sua explicação
    mi manda um pronto ?
    flw mano
    vlw

  16. Wesley Disse:

    cara preciso pra ontem, criar um algortimo para validação do cpf, nao to conseguindo intender sua explicação
    mi manda um pronto ?
    flw mano
    vlw
    meu msn é wesley_style_@hotmail.com

  17. Tread Disse:

    Mano gostaria que vc me desse uma luz de como fazer um algoritmo no visualg de como fazer um CPF valido esse ai tá dando erro.

Deixe uma resposta