Função para verificar CPF

Muitas vezes precisamos fazer a validação de CPF e do CNPJ, seja por que cliente solicitou essa função no sistema ou até mesmo para se manter a integridade do sistema. Tanto o CPF como o CNPJ possui dígito verificador que serve para fazer a validação do número digitado, para conhecer como é feito o cálculo clique aqui. Veremos agora como criar uma função para fazer a validação desses campos (para saber com o que é uma função clique aqui).

A primeira função é para fazer a validação do CPF, deve ser passado como parâmetro o número que será testado(apenas números), a função então retornará verdadeiro ou falso.


Para gerar um CPF válido para testar a função clique aqui.

Delphi/Pascal
[+/-] Mostrar/Ocultar
function isCPF(num: string): boolean;
var
  n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;
  d1,d2: integer;
  digitado, calculado: string;
begin
   // Pega os 9 primeiros números
   n1:=StrToInt(num[1]);
   n2:=StrToInt(num[2]);
   n3:=StrToInt(num[3]);
   n4:=StrToInt(num[4]);
   n5:=StrToInt(num[5]);
   n6:=StrToInt(num[6]);
   n7:=StrToInt(num[7]);
   n8:=StrToInt(num[8]);
   n9:=StrToInt(num[9]);

   // Faz o cálculo do primeiro dígito
   d1:=n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
   d1:=11-(d1 mod 11);
   if d1>=10 then d1:=0; //Se o cálculo for igual a 10 então ele é zero 

   //Faz o calculo do segundo digito
   d2:=d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
   d2:=11-(d2 mod 11);
   if d2>=10 then d2:=0; //se o cálculo for igual a 10 então ele é zero

   calculado:=inttostr(d1)+inttostr(d2); //Define o que foi calculado
   digitado:=num[10]+num[11]; //Define o que foi digitado

   //Se o número que foi calculado for igual ao que foi digitado
   //a função retorna verdadeiro, senão retorna falso
   Result := (calculado=digitado);
end;
Java
[+/-] Mostrar/Ocultar

    static boolean isCpf(String cpf) {
        int n1,n2,n3,n4,n5,n6,n7,n8,n9;
        int d1,d2;
        String digitado, calculado;

        // Pega os 9 primeiros números
        n1 = (int)cpf.charAt(0)-48;
        n2 = (int)cpf.charAt(1)-48;
        n3 = (int)cpf.charAt(2)-48;
        n4 = (int)cpf.charAt(3)-48;
        n5 = (int)cpf.charAt(4)-48;
        n6 = (int)cpf.charAt(5)-48;
        n7 = (int)cpf.charAt(6)-48;
        n8 = (int)cpf.charAt(7)-48;
        n9 = (int)cpf.charAt(8)-48;
        
        // Faz o cálculo do primeiro dígito
        d1 = n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
        d1 = 11-(d1 % 11);
        if (d1 >= 10){
            d1 = 0;
        }

        // Faz o cálculo do segundo dígito
        d2 = d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
        d2 = 11-(d2 % 11);
        if (d2 >= 10){
            d2 = 0;
        }

        calculado = Integer.toString(d1)+Integer.toString(d2);//Define o que foi calculado
        digitado = cpf.substring(9,11); //Define o que foi digitado


        //Se o número que foi calculado for igual ao que foi digitado
        //a função retorna verdadeiro, senão retorna falso
        return (calculado.equals(digitado));
    }

PHP
[+/-] Mostrar/Ocultar

function isCPF($cpf){
 
 // Pega os 9 primeiros números  
 $n1 = $cpf{0};
 $n2 = $cpf{1};
 $n3 = $cpf{2};
 $n4 = $cpf{3};
 $n5 = $cpf{4};
 $n6 = $cpf{5};
 $n7 = $cpf{6};
 $n8 = $cpf{7};
 $n9 = $cpf{8};
    
 // Faz o cálculo do primeiro dígito
 $d1 = $n9*2+$n8*3+$n7*4+$n6*5+$n5*6+$n4*7+$n3*8+$n2*9+$n1*10;
 $d1 = 11-($d1 % 11);
 if ($d1>=10) { $d1 = 0; } //Se o cálculo for igual a 10 então ele é zero 
    
 //Faz o calculo do segundo digito
 $d2 = $d1*2+$n9*3+$n8*4+$n7*5+$n6*6+$n5*7+$n4*8+$n3*9+$n2*10+$n1*11;
 $d2 = 11-($d2 % 11);
 if ($d2>=10) { $d2 = 0; } //se o cálculo for igual a 10 então ele é zero
    
 $calculado = $d1.$d2; //Define o que foi calculado
 $digitado = $cpf{9}.$cpf{10}; //Define o que foi digitado
 
 //Se o número que foi calculado for igual ao que foi digitado
 //a função retorna verdadeiro, senão retorna falso
 return (strcmp($calculado, $digitado) == 0);
}

C#
[+/-] Mostrar/Ocultar

public static bool isCpf(string cpf) {
   int n1,n2,n3,n4,n5,n6,n7,n8,n9;
   int d1,d2;
   string digitado, calculado;
 
   // Pega os 9 primeiros números
   n1 = Convert.ToInt32(cpf.Substring(0,1)); 
   n2 = Convert.ToInt32(cpf.Substring(1,1));
   n3 = Convert.ToInt32(cpf.Substring(2,1));
   n4 = Convert.ToInt32(cpf.Substring(3,1));
   n5 = Convert.ToInt32(cpf.Substring(4,1));
   n6 = Convert.ToInt32(cpf.Substring(5,1));
   n7 = Convert.ToInt32(cpf.Substring(6,1));
   n8 = Convert.ToInt32(cpf.Substring(7,1));
   n9 = Convert.ToInt32(cpf.Substring(8,1));
   
   // Faz o cálculo do primeiro dígito
   d1 = n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
   d1 = 11-(d1 % 11);
   if (d1 >= 10){
      d1 = 0;
   }
 
   // Faz o cálculo do segundo dígito
   d2 = d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
   d2 = 11-(d2 % 11);
   if (d2 >= 10){
      d2 = 0;
   }
 
   calculado = Convert.ToString(d1)+Convert.ToString(d2);//Define o que foi calculado
   digitado = cpf.Substring(9,2); //Define o que foi digitado
 
   //Se o número que foi calculado for igual ao que foi digitado
   //a função retorna verdadeiro, senão retorna falso
   return (calculado.Equals(digitado));
}

Nenhum comentário: