Gerador de CPF: Como Funciona?
Aprenda sobre a estrutura do CPF, como são gerados os dígitos verificadores e veja exemplos de código para validar e gerar CPFs válidos!
O que é o CPF e como ele é composto?
O CPF (Cadastro de Pessoas Físicas) é um documento fiscal brasileiro utilizado para identificar contribuintes perante a Receita Federal. Ele é amplamente utilizado em diversas situações, como abertura de contas bancárias, realização de compras e até mesmo para acessar serviços governamentais.
O CPF é composto por 11 dígitos, organizados da seguinte maneira:
- 9 dígitos base: uma sequência numérica gerada aleatoriamente.
- 2 dígitos verificadores: calculados a partir dos primeiros 9 dígitos para garantir a autenticidade do CPF.
Como funciona o cálculo dos dígitos verificadores?
O CPF utiliza um algoritmo de validação baseado no módulo 11, um método matemático comum para validar documentos numéricos. Esse cálculo reduz a chance de erros ou fraudes.
1º dígito verificador
- Multiplicar cada um dos 9 primeiros dígitos por uma sequência decrescente de 10 até 2.
- Somar todos os resultados.
- Calcular o módulo 11 dessa soma.
- Se o resultado for menor que 2, o dígito verificador será 0; caso contrário, subtrai-se o valor de 11.
2º dígito verificador
- Utilizar os 9 dígitos originais + o primeiro dígito verificador.
- Multiplicar cada um desses 10 números por uma sequência decrescente de 11 até 2.
- Somar os resultados e calcular o módulo 11.
- Se o resultado for menor que 2, o dígito será 0; caso contrário, subtrai-se o valor de 11.
Exemplo de implementação em JavaScript
Para consolidar o aprendizado, vamos criar um gerador de CPF válido utilizando JavaScript:
function calcularDigito(digits, factor) {
let total = 0;
for (let i = 0; i < digits.length; i++) {
total += digits[i] * factor;
factor--;
}
const resto = total % 11;
return resto < 2 ? 0 : 11 - resto;
}
function gerarCPF() {
const cpf = Array.from({ length: 9 }, () => Math.floor(Math.random() * 10));
cpf.push(calcularDigito(cpf, 10));
cpf.push(calcularDigito(cpf, 11));
return cpf.join('');
}
console.log('CPF Gerado:', gerarCPF());
Exemplo de implementação em TypeScript
Agora, vejamos a mesma implementação em TypeScript, garantindo mais segurança com tipagem:
function calcularDigito(digits: number[], factor: number): number {
let total = 0;
for (let i = 0; i < digits.length; i++) {
total += digits[i] * factor;
factor--;
}
const resto = total % 11;
return resto < 2 ? 0 : 11 - resto;
}
function gerarCPF(): string {
const cpf: number[] = Array.from({ length: 9 }, () => Math.floor(Math.random() * 10));
cpf.push(calcularDigito(cpf, 10));
cpf.push(calcularDigito(cpf, 11));
return cpf.join('');
}
console.log('CPF Gerado:', gerarCPF());
Diferença entre JavaScript e TypeScript
JavaScript é uma linguagem dinâmica, enquanto TypeScript adiciona uma camada de segurança e previsibilidade ao código.
- JavaScript: permite maior flexibilidade, mas pode gerar erros inesperados.
- TypeScript: inclui tipagem estática, ajudando a evitar erros antes mesmo da execução.
Vantagens de usar TypeScript
- Tipagem estática: ajuda a evitar erros comuns.
- Melhor manutenção: código mais estruturado e legível.
- Escalabilidade: excelente para projetos maiores e desenvolvimento em equipe.
Conclusão
Com este artigo, aprendemos como funciona o CPF, a lógica de validação e sua implementação em JavaScript e TypeScript. Saber validar CPF é útil não apenas para desenvolvimento web, mas também para criar sistemas robustos e seguros.
Se gostou deste artigo, compartilhe com outros desenvolvedores! 🚀