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...