Algoritmo para validação de CPF (dígitos verificadores) – Lógica de Programação
Validação de CPF com Portugol
O CPF (Cadastro de Pessoas Físicas) é um documento de identificação emitido pela Receita Federal aqui no Brasil, criado em 1970. Cada indivíduo residente no país (cidadãos brasileiros e estrangeiros residentes) possui um número único de CPF. Esse documento é essencial para diversas atividades e serviços, como por exemplo abertura de contas bancárias, realização de compras, emissão de documentos oficiais, declaração de imposto de renda, entre outros.
O CPF é composto por 11 dígitos e é utilizado para identificar cada pessoa de forma única. Os dois últimos dígitos do CPF são conhecidos como “dígitos verificadores” e são utilizados para verificar a validade do número.
Esses dígitos são calculados a partir dos nove primeiros dígitos do CPF, utilizando um algoritmo específico, que estudaremos a seguir.
Neste tutorial mostro como realizar o cálculo dos dígitos verificadores para validação de CPF, usando um algoritmo criado no Portugol Studio – e que você pode adaptar para a linguagem de programação que desejar.
Formato do CPF
Estado Emissor | Dígito |
DF, GO, MS, MT e TO | 1 |
AC, AM, AP, PA, RO e RR | 2 |
CE, MA e PI | 3 |
AL, PB, PE e RN | 4 |
BA e SE | 5 |
MG | 6 |
ES e RJ | 7 |
SP | 8 |
PR e SC | 9 |
RS | 0 |
Como calcular os dígitos verificadores do CPF: Exemplo
Passo 1 – Calcular DV1:
Precisamos usar os nove primeiros dígitos do CPF para isso:
6 | 6 | 7 | 5 | 5 | 6 | 3 | 1 | 7 |
6 | 6 | 7 | 5 | 5 | 6 | 3 | 1 | 7 | x |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | = |
60 | 54 | 56 | 35 | 30 | 30 | 12 | 3 | 14 |
60 + 54 + 56 + 35 + 30 + 30 + 12 + 3 + 14 = 294
Calculamos o módulo de 11 do resultado (resto da divisão inteira do resultado por 11):
294 % 11 = 8
Finalmente, subtraímos esse módulo de 11: 11 – 8 = 3
Assim, 3 é o dígito verificador 1 (DV1).
Passo 2 – Calcular DV2:
6 | 6 | 7 | 5 | 5 | 6 | 3 | 1 | 7 | 3 |
6 | 6 | 7 | 5 | 5 | 6 | 3 | 1 | 7 | 3 | x |
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | = |
66 | 60 | 63 | 40 | 35 | 36 | 15 | 4 | 21 | 6 |
66 + 60 + 63 + 40 + 35 + 36 + 15 + 4 + 21 + 6 = 346
Calculamos o módulo de 11 do resultado (resto da divisão inteira do resultado por 11):
346 % 11 = 5
Finalmente, subtraímos esse módulo de 11: 11 – 5 = 6
Assim, 6 é o dígito verificador 2 (DV2).
Algoritmo em Portugol para calcular o dígito verificador de um CPF
programa { inclua biblioteca Texto --> t inclua biblioteca Tipos --> ti cadeia cpf inteiro cpf_digitos[11] inteiro digito1, digito2 logico res = falso funcao inicio() { escreva("Digite o CPF: ") leia(cpf) para (inteiro i = 0; i < 11; i++) { cpf_digitos[i] = ti.caracter_para_inteiro(t.obter_caracter(cpf, i)) } res = ValidaCPF(cpf_digitos) se (res == verdadeiro) { escreva("CPF válido!") } senao { escreva("CPF inválido!") } } funcao logico ValidaCPF(inteiro num[]) { inteiro i, j, soma, resto, dv1, dv2 // Dígito verificador #1 soma = 0 j = 10 para (i = 0; i < 9; i++) { soma += num[i] * j j -= 1 } resto = soma % 11 se (resto < 2) { dv1 = 0 } senao { dv1 = 11 - resto } // Dígito verificador #2 soma = 0 j = 11 para (i = 0; i < 10; i++) { soma += (num[i]) * j j -= 1 } resto = soma % 11 se (resto < 2) { dv2 = 0 } senao { dv2 = 11 - resto } se ((num[9] == dv1) e (num[10] == dv2)) { retorne verdadeiro } senao { retorne falso } } }
Funcionamento do código do algoritmo de cálculo do dígito verificador do CPF
- cpf: Variável que armazena o CPF informado pelo usuário para validação, no formato de cadeia de caracteres.
- cpf_digitos[11]: Vetor de 11 caracteres para armazenar os dígitos individuais do CPF.
- digito1 e digito2: Variáveis inteiras para armazenar os dígitos verificadores calculados.
- res: Variável do tipo lógico que armazena o resultado da validação.
- Dentro da função inicio(), o programa solicita ao usuário que digite o CPF e lê o valor digitado, armazenando-o na a variável cpf.
- Em seguida, o programa percorre cada caractere do CPF digitado e os converte para números inteiros, armazenando-os no array cpf_digitos.
- O programa então chama a função ValidaCPF passando o array cpf_digitos como argumento, e armazena o resultado retornado na variável booleana res.
- O programa verifica se res é verdadeiro, ou seja, se a função ValidaCPF retornou verdadeiro. Se sim, imprime a mensagem “CPF válido!”. Caso contrário, imprime a mensagem “CPF inválido!”.
- O programa realiza o cálculo do primeiro dígito verificador utilizando a fórmula de validação do CPF. Ele itera sobre os primeiros 9 dígitos do CPF, multiplicando cada um deles pela sequência decrescente de 10 a 2 e somando o resultado na variável soma.
- O resultado é dividido por 11 e obtém-se o resto da divisão.
- Se o resto for menor que 2, o primeiro dígito verificador é 0. Caso contrário, é calculado realizando-se 11 menos o resto obtido.
- O programa repete o mesmo processo para calcular o segundo dígito verificador, agora considerando os primeiros 10 dígitos do CPF. A multiplicação agora é pela sequência decrescente de 11 a 2.
- O resultado é dividido por 11 e obtém-se novamente o resto da divisão.
- Se o resto for menor que 2, o segundo dígito verificador é 0. Caso contrário, é calculado como 11 menos o resto obtido.
Escreva um comentário