Cálculo em BASIC para validação de CPF Pré-requisitos para compreensão do tutorial: • Lista das questões • Desvios • Formulário multimídia • Resultados • Conhecimentos básicos de lógica de programação Cálculo em BASIC é uma função que permite o desenvolvimento de novos controles de consistência, além das funções nativas do software Sphinx que possibilitam padronizar o formato das respostas e impedir erros durante a digitação. Neste tutorial o cálculo será aplicado em um caso de validação de CPF – Cadastro de Pessoa Física. Observação: configure os controles sempre após ter definido o questionário. O Cadastro de Pessoa Física (CPF) é a identificação do contribuinte pessoa física perante a Secretaria da Receita Federal do Brasil (RFB). Por se tratar de um código único por indivíduo, é muito utilizado como variável de localização de um determinado indivíduo em uma base de dados. Para verificar a confiabilidade de um CPF, é necessário efetuar uma série de cálculos, onde o resultado obtido deverá ser igual aos dois últimos dígitos, denominados de dígitos verificadores. Utilizaremos para exemplificar o CPF fictício123.456.789-09. Validando o primeiro dígito verificador 1º passo: para encontrar o primeiro dígito verificador basta criar uma tabela de 3 linhas e 9 colunas. Na primeira linha insira a sequência numérica de 10 a 2, conforme o exemplo abaixo: 10 9 8 7 6 5 4 3 2 2º passo: na segunda linha insira os 9 primeiros dígitos do CPF, conforme o exemplo abaixo: 10 1 9 2 8 3 7 4 6 5 5 6 4 7 3 8 2 9 3º passo: agora, multiplique cada coluna e insira o resultado na terceira linha, conforme o exemplo abaixo: 10 1 10 9 2 18 8 3 24 7 4 28 6 5 30 5 6 30 4 7 28 3 8 24 2 9 18 4º passo: some todos os resultados e divida por 11: (10+18+24+28+30+30+28+24+18)/11 = x Considere como quociente apenas o valor inteiro. Caso o resto da divisão seja menor que 2, o primeiro dígito verificador deverá ser igual a 0 (zero), caso contrário subtrai-se o valor obtido de 11 e o resultado obtido será o valor do primeiro dígito verificador. (10+18+24+28+30+30+28+24+18)/11 = Neste caso, como o valor do resto foi menor que 2, o primeiro dígito verificador receberá como resultado o valor 0 (zero) 123.456.789-0x Validando o segundo dígito verificador 1º passo: para encontrar o segundo dígito verificador basta criar uma tabela de 3 linhas e 10 colunas (uma coluna a mais em consideração com a tabela anterior). Na primeira linha insira a sequência numérica de 11 a 2, conforme o exemplo abaixo: 11 10 9 8 7 6 5 4 3 2 2º passo: na segunda linha insira os 10 primeiros dígitos do CPF, incluindo o primeiro dígito já encontrado, conforme o exemplo abaixo: 11 1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 0 3º passo: agora, multiplique cada coluna e insira o resultado na terceira linha, conforme o exemplo abaixo: 11 1 11 10 2 20 9 3 27 8 4 32 Some todos os resultados e divida por 11: (11+20+27+32+35+36+35+32+27+0)/11 = x 7 5 35 6 6 36 5 7 35 4 8 32 3 9 27 2 0 0 Considere como quociente apenas o valor inteiro. Caso o resto da divisão seja menor que 2, o primeiro dígito verificador deverá ser igual a 0 (zero), caso contrário subtrai-se o valor obtido de 11 e o resultado obtido será o valor do primeiro dígito verificador. (11+20+27+32+35+36+35+32+27+0)/11 = 11-02 = 09 Neste caso, como o valor do resto foi igual a 2, subtraiu-se o valor obtido de 11 e o resultado do segundo dígito verificador será 9 123.456.789-09 Validando um CPF no Sphinx 1º passo: posicione-se no 1º estágio Elaboração do questionário e acesse o ambiente Formulário multimídia. 2º passo: com o formulário já elaborado, acesse o menu superior Dados e clique na opção Calcular... . 3º passo: na janela apresentada, clique no botão Calcular uma nova variável e em seguida no botão Avançar. 4º passo: na próxima tela, marque o item Cálculo automático e utilize o espaço em branco para inserir o código fonte do cálculo de validação do CPF apresentado abaixo: n1 = Val(Left(CPF,1)) aux1 = Right(CPF,10) n2 = Val(Left(aux1,1)) aux2 = Right(aux1,9) n3 = Val(Left(aux2,1)) aux3 = Right(aux2,8) n4 = Val(Left(aux3,1)) aux4 = Right(aux3,7) n5 = Val(Left(aux4,1)) aux5 = Right(aux4,6) n6 = Val(Left(aux5,1)) aux6 = Right(aux5,5) n7 = Val(Left(aux6,1)) aux7 = Right(aux6,4) n8 = Val(Left(aux7,1)) aux8 = Right(aux7,3) n9 = Val(Left(aux8,1)) aux9 = Right(aux8,2) n10 = Val(Left(aux9,1)) soma = (n1 * 10) + (n2 * 9) + (n3 * 8) + (n4 * 7) + (n5 * 6) + (n6 * 5) + (n7 * 4) + (n8 * 3) + (n9 * 2) div = soma Mod 11 If div < 2 Then primeiro = 0 Else primeiro = 11 - div EndIf soma2 = (n1 * 11) + (n2 * 10) + (n3 * 9) + (n4 * 8) + (n5 * 7) + (n6 * 6) + (n7 * 5) + (n8 * 4) + (n9 * 3) + (n10 * 2) div2 = soma2 Mod 11 If div2 < 2 Then segundo = 0 Else segundo = 11 - div2 EndIf digito = primeiro & segundo If digito = Right(CPF,2) Then v = "Válido" Else v = "CPF Inválido" EndIf 5º passo: clique no botão Avançar e avance para a próxima tela; 6º passo: na tela seguinte, defina o título, o nome da variável, escolha como tipo de questão Texto e clique em Concluir; 7º passo: insira a questão no formulário e formate a mesma conforme o desejado. 8º passo: para inserir a mensagem de restrição, caso o CPF seja inválido, acesse o menu superior Formulários e clique na opção Propriedades do formulário. 9º passo: na janela apresentada, acesse a aba Restrições e clique no botão Novo: 10º passo: crie as seguintes condições: CPF diferente de vazio (CPF = “”) e Valida_cpf igual a “CPF Inválido” 11º passo: no campo m ensagem , di gi te a m ensagem q u e será aprese ntad a, ex em pl o “ Verifique o s c am po s sinalizados abaixo:” e clique em “OK” Para finalizar, publique o formulário ou acesse através do Sphinx Operador e teste.