Algoritmo para calcular digitos verificadores de CPF - Validação com Lógica de Programação
ฝัง
- เผยแพร่เมื่อ 10 ก.พ. 2025
- Como validar CPF - cálculo dos dígitos de verificação
Neste vídeo mostro como funciona o cálculo dos dígitos verificadores em um número de CPF (Cadastro de Pessoas Físicas) e como implementar um algoritmo usando lógica de programação e Portugol Studio para realizar a validação de um CPF informado pelo usuário.
O CPF é composto por 11 dígitos numéricos, no formato XXX.XXX.XXX-YY.
Os dois últimos dígitos do CPF são conhecidos como "dígitos verificadores" (DV) e são utilizados para verificar a validade do número.
Os DVs são calculados a partir dos nove primeiros dígitos do CPF, empregando um algoritmo específico, que eu explico aqui.
Ajude o canal adquirindo meus cursos na Udemy:
Bancos de Dados com MySQL Básico: bit.ly/35QdWE4
Lógica de Programação com Português Estruturado: bit.ly/3QKPn22
Programação em Python do Zero: bit.ly/python-...
Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer:
www.amazon.com...
Seja membro deste canal e ganhe benefícios:
/ @bosontreinamentos
Contribua com a Bóson Treinamentos!:
www.bosontreina...
Por Fábio dos Reis
Bóson Treinamentos: www.bosontreina...
Instagram: / bosontreinamentos
Linkedin: / f%c3%a1bio-dos-reis-06...
Quora: pt.quora.com/profile/Fábio-dos-Reis
Pinterest: / bosontreina
Outros projetos do autor:
Diário do Naturalista: www.diariodonat...
Bóson Ciências e Cultura: / bosonciencias
Numismática e Finanças Pessoais: www.diarionumi...
#cpf #logicadeprogramação #algoritmos
Essa aula merece 1000 likes! Parabéns e obrigado!
Obrigado Paulo!
Só pela didática dos 4 primeiros minutos do vídeo já vale um like.
Nem vou assistir até o final, mas tá salvo , muito útil
Valeu Evaldo!
@@DoctorComputersBgi eu também, vi só o começo do vídeo.
Ótimo vídeo, não entendia muito sobre a lógica por trás para validar cpf
Muito útil , não se encontra isso por aí, com a qualidade de explicação do sr. Fábio , outra coisa é passar tudo isso aí para o visualg ou Portugol
não gosto muito desse portungol
Muito boa aula!!! Perfeita.
Obrigado 😃
Que top, já de cartões visa Master card
Uma observacao: as variaveis globais digito1 e digito2 declaradas no inicio do programa nao foram usadas.
👋
fiz esse calculo em C, só não fiz a conversão de string para inteiro. o usuário digita um número e dá enter, assim sucessivamente.
no futuro vou passar pro delphi, pra ter uma interface gráfica.
Eu fiz em C++, mas converti a string em inteiro.
Não encontrei algo semelhante ao usado no vídeo para fazer tal conversão e acabei fazendo algo que funcionou, mas estou convencido que não é a melhor forma.
Você ou alguém pode me indicar uma função que seja equivalente, em C ou C++, às que o professor usou ?
Obrigado.
@@RafaelRodrigues-cq2im pra converter tem a função atoi, mas não consegui converter caráctere por carácter, isso tá me dando problema.
Também tentei usar essa função, mas não funcionou.
Como os caracteres de '0' a '9' na tabela ASCII são sequênciais (de 48 a 57 em decimal) eu fiz um laço de repetição que pega cada char do vetor de string (no exemplo abaixo eu chamei de num), subtrai pelo char '0' e adiciona o resultado em outro vetor(vet) do tipo int. Veja:
for(i = 0; i < 11; i++)
{
vet[i] = int(num[i] - '0');
}
resposta do exericio proposto com formatacao do cpf:
programa
{
// bibliotecas
inclua biblioteca Util
// variaveis globais
inteiro cpf_gerado[11]
funcao inicio()
{
para (inteiro i = 0; i < 9; i++) {
cpf_gerado[i] = Util.sorteia(1, 9)
}
gerar_cpf_valido(cpf_gerado)
}
funcao gerar_cpf_valido(inteiro cpf[]) {
inteiro i, j
inteiro soma, resto
inteiro dv1, dv2
// gera digito verificador 1
j = 10
soma = 0
para (i = 0; i < 9; i++) {
soma += cpf[i] * j
j--
}
resto = soma % 11
se (resto < 2) {
dv1 = 0
} senao {
dv1 = 11 - resto
}
// gera digito verificador 2
j = 11
soma = 0
para (i = 0; i < 10; i++) {
soma += cpf[i] * j
j--
}
resto = soma % 11
se (resto < 2) {
dv2 = 0
} senao {
dv2 = 11 - resto
}
// coloca os digitos verificadores no cpf
cpf[9] = dv1
cpf[10] = dv2
mostra_cpf(cpf)
}
funcao mostra_cpf(inteiro cpf[]) {
escreva("CPF valido gerado:
")
para (inteiro i = 0; i < 11; i++) {
se ((i == 2) ou (i == 5)) {
escreva(cpf[i], ".")
} senao se (i == 8) {
escreva(cpf[i], "-")
} senao {
escreva(cpf[i])
}
}
}
}