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 fomos 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
Na seqüência multiplicaremos os valores de cada coluna, confira:
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 9 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-9, ou seja, 2 (dois), já temos parte do CPF, confira: 222.333.666-2X.
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 2
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+4=199.
2 2 2 3 3 3 6 6 6 2
11 10 9 8 7 6 5 4 3 2
22 20 18 24 21 18 30 24 18 4
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 1, 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 é o nosso caso, caso contrário é necessário subtrair o valor obtido de 11 para se obter o 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 2 e 0, portanto o CPF ficaria assim: 222.333.666-20.
2006-08-29 15:15:16
·
answer #1
·
answered by fgamajr 2
·
0⤊
1⤋
Do CPF eu sei: Exemplo, o CPF 123.456.788
1 x 2 = 2
2 x 3 = 6 ----------2+6+12+20+30+42+56+72+80=320
3 x 4 = 12
4 x 5 = 20 ---------- 320 : 11 = 29, resto 1
5 x 6 = 30 ---------- 11 - 1 = 10
6 x 7 = 42
7 x 8 = 56 ---------- o primeiro dígito é "0"
8 x 9 = 72
8 x 10 = 80
123.456.788-0
1 x 2 = 2
2 x 3 = 6 --------- 2+6+12+20+30+42+56+72+80+0=320
3 x 4 = 12
4 x 5 = 20 --------- 320 : 11 = 29, resta 1
5 x 6 = 30 --------- 11 - 1 = 10
6 x 7 = 42
7 x 8 = 56
8 x 9 = 72
8 x 10 = 80
0 x 11 = 0 ---------- O segundo dígito também é zero,
--------------------------- não houve alteração no cálculo.
2006-08-29 15:29:48
·
answer #2
·
answered by Joao Antonio 1
·
1⤊
0⤋
http://geradorderg.com/logica-verificador-de-cpf/
2015-06-08 16:38:57
·
answer #3
·
answered by ? 1
·
0⤊
0⤋
cara tentei fazer as contas juntos com as respostas acima e nenhuma deu certo com o meu cpf. só sei que o ultimo numero antes do digito virificador é de acordo com a sua região ou seja se vc morar em sp será 8 (111.111.118-11) no ceará 3 (000.000.003-00) e por ai vai. quanto ao cnpj não faço a minima ideia.
2006-08-29 16:02:14
·
answer #4
·
answered by Jota Ceará 4
·
0⤊
1⤋
Nossa, tenho curiosidade disso tb! nunca vi a logica desse digito, ja analisei os CPF do povo de casa e nao descobri.. to atento as respostas.
2006-08-29 15:14:00
·
answer #5
·
answered by Fabio-BH 5
·
0⤊
1⤋
O método de cálculo desses dígitos varia conforme o caso, porém muitos deles se baseiam em duas rotinas tradicionais: Módulo 11 e Módulo 10.
Abaixo temos uma explicação do cálculo dessas duas rotinas:
[editar]
Módulo 11
Conforme o esquema abaixo, cada dígito do número, começando da direita para a esquerda (menos significativo para o mais significativo) é multiplicado, na ordem, por 2, depois 3, depois 4 e assim sucessivamente, até o limite de multiplicação escolhido. Então novamente multiplica-se o número por 2, 3, etc.
Número exemplo: 261533-9
+---+---+---+---+---+---+ +---+
| 2 | 6 | 1 | 5 | 3 | 3 | - | 9 |
+---+---+---+---+---+---+ +---+
| | | | | |
x7 x6 x5 x4 x3 x2
| | | | | |
=14 =36 =5 =20 =9 =6
+---+---+---+---+---+-> = (90 x 10) / 11 = 81, resto 9 => DV = 9
A somatória dessas multiplicações é multiplicada por 10 e dividida por 11. O resto desta divisão (módulo 11) é o dígito verificador. Na rotina padrão, apenas o dígito menos significativo é utilizado.
Cálculos variantes poderiam ocorrer, tal como substituir por uma letra, quando o cálculo do dígito final der 10 ou outro número escolhido.
[editar]
Módulo 10
Conforme o esquema abaixo, cada dígito do número, começando da direita para a esquerda (menos significativo para o mais significativo) é multiplicado, na ordem, por 2, depois 1, depois 2, depois 1 e assim sucessivamente.
Número exemplo: 261533-4
+---+---+---+---+---+---+ +---+
| 2 | 6 | 1 | 5 | 3 | 3 | - | 4 |
+---+---+---+---+---+---+ +---+
| | | | | |
x1 x2 x1 x2 x1 x2
| | | | | |
=2 =12 =1 =10 =3 =6
+---+---+---+---+---+-> = (16 / 10) = 1, resto 6 => DV = (10 - 6) = 4
Ao invés de ser feita a somatória das multiplicações, será feita a somatória dos dígitos das multiplicações (se uma multiplicação der 12, por exemplo, será somado 1 + 2 = 3).
A somatória será dividida por 10 e se o resto (módulo 10) for diferente de zero, o dígito será 10 menos este valor.
Estas condições finais, no entanto, poderão ser alteradas conforme o caso.
2006-08-29 15:13:28
·
answer #6
·
answered by Sonatta 4
·
0⤊
2⤋
Quer comprar o programa envio na hora que pagar em minha conta só 9,90
2006-08-29 15:13:37
·
answer #7
·
answered by daltro_marques 1
·
0⤊
5⤋