Validador de CPF em C#
Giovanna Marques
5/22/20254 min read
O código então precisando seguir as regras fica da seguinte forma:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
Console.WriteLine("Bem-vindo ao Validador de CPF!");
Console.WriteLine("Digite um CPF (apenas números ou no formato XXX.XXX.XXX-XX):");
while (true)
{
Console.Write("CPF: ");
string entrada = Console.ReadLine()!;
try
{
// Validar e processar o CPF
if (ValidarCPF(entrada))
{
Console.WriteLine("O CPF é válido!");
}
else
{
Console.WriteLine("O CPF é inválido!");
}
Console.WriteLine("Deseja validar outro CPF? (s/n)");
if (Console.ReadLine()!.ToLower() != "s")
break;
}
catch (Exception)
{
Console.WriteLine("Entrada inválida! Digite um CPF com 11 dígitos numéricos.");
}
}
Console.WriteLine("Obrigado por usar o Validador de CPF!");
}
static bool ValidarCPF(string cpf)
{
// Remover pontos, traços e espaços
cpf = Regex.Replace(cpf, "[^0-9]", "");
// Verificar se tem 11 dígitos
if (cpf.Length != 11)
return false;
// Verificar se todos os caracteres são numéricos
if (!Regex.IsMatch(cpf, @"^\d{11}$"))
return false;
// Verificar se é uma sequência repetida (ex.: 11111111111)
if (new string(cpf[0], 11) == cpf)
return false;
// Converter CPF para array de inteiros
int[] digitos = new int[11];
for (int i = 0; i < 11; i++)
{
digitos[i] = int.Parse(cpf[i].ToString());
}
// Calcular primeiro dígito verificador
int soma = 0;
for (int i = 0; i < 9; i++)
{
soma += digitos[i] * (10 - i);
}
int resto = (soma * 10) % 11;
int primeiroDigito = resto == 10 ? 0 : resto;
if (primeiroDigito != digitos[9])
return false;
// Calcular segundo dígito verificador
soma = 0;
for (int i = 0; i < 10; i++)
{
soma += digitos[i] * (11 - i);
}
resto = (soma * 10) % 11;
int segundoDigito = resto == 10 ? 0 : resto;
return segundoDigito == digitos[10];
}
}
Esse código usa um loop while para permitir múltiplas validações, similar ao Jogo da Adivinhação.
Aprenda mais sobre while na documentação da Microsoft.
Como o Validador Garante a Validação do CPF
1. Regras do CPF
O CPF tem 11 dígitos, sendo os dois últimos os dígitos verificadores.
Primeiro dígito verificador: Calculado multiplicando os 9 primeiros dígitos por pesos de 10 a 2, somando, multiplicando por 10, e pegando o resto por 11 (se 10, usa 0).
Segundo dígito verificador: Calculado multiplicando os 10 primeiros dígitos por pesos de 11 a 2, aplicando a mesma lógica.
Sequências repetidas (ex.: 11111111111) são inválidas.
2. Validações do Código
Limpeza da entrada: Usa Regex.Replace para remover caracteres não numéricos.
Verificação de formato: Confirma que o CPF tem 11 dígitos e rejeita sequências repetidas.
Cálculo preciso: Aplica as fórmulas oficiais para validar os dígitos verificadores.
Tratamento de erros: Usa try-catch para capturar entradas inválidas (ex.: letras ou números insuficientes).
3. Robustez
O código aceita CPFs com ou sem formatação (ex.: 12345678909 ou 123.456.789-09).
Rejeita entradas inválidas com mensagens claras, como "Entrada inválida! Digite um CPF válido!".
Permite múltiplas validações, mantendo a experiência interativa.
Lembre-se de que este ainda é um exemplo simples para começar.
Você pode modificar e expandir este validador, como adicionar formatação automática do CPF ou integrá-lo a um sistema maior. Divirta-se criando seu próprio Validador de CPF em C#!
Esse código é muito usado em entrevistas de emprego para vagas júnior, assim como o Jogo da Adivinhação.
Obrigada pela leitura! 🎯✨
Aprenda mais sobre o fluxo
Segue o desenvolvimento de um Validador de CPF simples na linguagem C# no console, usando o Visual Studio Community.
Agora os códigos estão ficando sérios, validar CPF já é algo que você com certeza irá usar em vários códigos, o programa solicita um CPF (11 dígitos numéricos) e verifica se ele é válido com base nas regras do CPF brasileiro.
O usuário insere o CPF, e o programa informa se ele é válido ou inválido, tratando erros de entrada.
Aprenda mais sobre o fluxo
1. Receber o CPF do usuário:
Use Console.ReadLine() para capturar o CPF como uma string.
Remova caracteres não numéricos (como pontos e traços) para processar apenas os dígitos.
2. Validar o formato do CPF:
Verifique se o CPF contém exatamente 11 dígitos.
Verifique se todos os caracteres são numéricos.
Verifique se o CPF não é uma sequência repetida (ex.: 111.111.111-11).
3. Calcular os dígitos verificadores:
Aplique a fórmula oficial para calcular o primeiro e o segundo dígito verificador.
Compare os dígitos calculados com os fornecidos no CPF.
4. Tratar erros:
Use try-catch para capturar entradas inválidas (ex.: letras ou números insuficientes).
Informe o usuário sobre erros de formato ou CPF inválido.
5. Exibir o resultado:
Informe se o CPF é válido ou inválido com uma mensagem clara.
Regras do CPF
O CPF tem 11 dígitos, sendo os últimos dois os dígitos verificadores.
Primeiro dígito verificador: Calculado multiplicando os 9 primeiros dígitos por pesos decrescentes de 10 a 2, somando os resultados, multiplicando por 10, e pegando o resto da divisão por 11. Se o resto for 10, o dígito é 0.
Segundo dígito verificador: Calculado multiplicando os 10 primeiros dígitos (incluindo o primeiro dígito verificador) por pesos decrescentes de 11 a 2, aplicando a mesma lógica.
CPFs inválidos: Sequências como 11111111111 ou 00000000000 não são válidas.
Exemplo de mensagens
CPF válido: "O CPF é válido!"
CPF inválido: "O CPF é inválido!"
Entrada inválida: "Entrada inválida! Digite um CPF com 11 dígitos numéricos."
Sequência repetida: "CPF inválido (sequência repetida)!"Escreva seu texto aqui...