quinta-feira, 14 de agosto de 2008

DV do CPF(cadastro de pessoa física)

Algoritmo:

Nessa e nas próximas duas lições, veremos o uso do VBA para solucionar um exemplo prático. Vamos criar uma função personalizada, chamada ValidaCPF. Em seguida usaremos essa função para fazer o cálculo do DV de um conjunto de CPFs:

Importante: O algoritmo de cálculo do DV de CPFs e CNPJs é de domínio público, já tendo sido publicado no diário oficial da união e em diversas revistas de informática, de circulação nacional.

Nessa lição explicarei como funciona o cálculo do DV do CPF.

Como calcular o DV do CPF

Para entender o algoritmo de cálculo do CPF vamos utilizar um exemplo prático.

Considere o seguinte CPF (sem o DV): 333.444.555

Posição

1

2

3

4

5

6

7

8

9

Número

3

3

3

4

4

4

5

5

5

Começamos a multiplicar os dígitos do CPF, a partir da posição 9, ou seja, de trás para frente, por 2, 3, 4, 5 e assim por diante, conforme indicado na tabela a seguir:

Posição

1

2

3

4

5

6

7

8

9

Número

3

3

3

4

4

4

5

5

5

Multiplica por:

10

9

8

7

6

5

4

3

2

Resultado

30

27

24

28

24

20

20

15

10

Somo os resultados obtidos na quarta linha da tabela anterior:

Soma1 = 30+27+24+28+24+20+20+15+10

Soma1 = 198

Faço a divisão desta soma por 11 e determino o resto da divisão:

198/11 Resulta em uma divisão exata, com resto 0

Regra: Quando o resto é zero ou um, o DV é 0.

Quando o resto é diferente de zero ou um, o DV é
obtido fazendo-se: 11-resto

Neste caso como o resto foi zero, o primeiro DV é zero:

DV1=0

O DV1 calculado passa a fazer parte do CPF, conforme indicado pela tabela a seguir:

Posição

1

2

3

4

5

6

7

8

9

10

Número

3

3

3

4

4

4

5

5

5

0

Agora repetimos o processo anterior, porém já considerando o DV1 como parte integrante do CPF, conforme indicado pela tabela a seguir:

Posição

1

2

3

4

5

6

7

8

9

10

Número

3

3

3

4

4

4

5

5

5

0

Multiplica por:

11

10

9

8

7

6

5

4

3

2

Resultado

33

30

27

32

28

24

25

20

15

0

Somo os resultados obtidos na quarta linha da tabela anterior:

Soma2 = 33+30+27+32+28+24+25+20+15+0

Soma1 = 234

Faço a divisão desta soma por 11 e determino o resto da divisão:

234/11 Resulta em (21), com resto 3

Regra: Quando o resto é zero ou um , o DV é 0.

Quando o resto é diferente de zero ou um, o DV é

obtido fazendo-se: 11-resto

Neste caso como o resto foi 3, o segundo DV é :

DV2 = 11 - 3

DV2 = 8

Com isso o CPF, já com os dois DVs fica conforme indicado na tabela a seguir:

Posição

1

2

3

4

5

6

7

8

9

10

11

Número

3

3

3

4

4

4

5

5

5

0

8

Ou seja: 333.444.555-08

Os algoritmos para cálculo dos DVs do CNPJ são praticamente iguais. A única diferença é a quantidade de dígitos do CNPJ é diferente do CPF.

Nenhum comentário: