Visitantes que leram esse artigo, também visitaram:
  • Site do Fund√£o: Algoritmo Insertion Sort
  • Facebook e Skype anunciam parceria
  • Poderoso Algoritmo de Ordena√ß√£o do Fund√£o da Computa√ß√£o
  • Samsung lan√ßa primeiro celular Scrapy
  • Wittel √© eleita Empresa de TI da D√©cada


  • Algoritmo do PIS – Programas de Integra√ß√£o Social

    Postado por Plinio Cruz em 11 de novembro de 2007 na categoria Programa√ß√£o, Solu√ß√Ķes | 20 Comments to Read

    1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (6 votos, média: 4,83)
    Loading ... Loading ...

    O Clube da Informática tem muitos visitantes que procuram em nossos artigos o algoritmo do CPF (Cadastro de Pessoa Física) e do CNPJ (Cadastro Nacional da Pessoal Física), sendo assim procuramos e pesquisamos mais algoritmos que possam ajudar nossos amigos programadores.

    Dessa vez iremos apresentar o algoritmo de c√°lculo do n√ļmero do PIS e como j√° disse anteriormente muitos programadores pegam estas rotinas prontas na Internet, pois milhares de sites oferecem nas mais diversas linguagens de programa√ß√£o. Aos inv√©s de voc√™ confiar seu software a essas rotinas que tal voc√™ mesmo desenvolver a sua tendo a certeza que a mesma est√° certa e funciona perfeitamente?

     

    Entendendo a Validação

    No c√°lculo do n√ļmero do PIS, utiliza-se um algoritmo um pouco diferente do usado para calcular o d√≠gito verificador do n√ļmero do CPF. Nesse caso o n√ļmero do PIS tamb√©m √© obtido do m√≥dulo de divis√£o 11 (onze). O n√ļmero √© composto por dois segmentos, assim como o CPF. O primeiro com nove posi√ß√Ķes √† esquerda do tra√ßo e o segundo com duas posi√ß√Ķes ap√≥s o tra√ßo.

    Para exemplificar iremos calcular os d√≠gitos verificadores de um PIS hipot√©tico, por exemplo, 123.456.789-1X. Isso mesmo, como voc√™ j√° deve ter notado, no n√ļmero do PIS, o √ļltimo d√≠gito √© o verificador e n√£o o conjunto ap√≥s o tra√ßo


    Calculando do Dígito Verificador

     

    O d√≠gito verificador √© calculado com a distribui√ß√£o dos d√≠gitos colocando-se os valores 3 e 2 nas primeiras casas e os n√ļmeros 9,8,7,6,5,4,3 e 2 nas casas restantes como podemos conferir abaixo:

     

    1 2 3 4 5 6 7 8 9 1
    3 2 9 8 7 6 5 4 3 2

    Na seq√ľ√™ncia multiplicaremos os valores de cada coluna, confira:

    1 2 3 4 5 6 7 8 9 1
    3 2 9 8 7 6 5 4 3 2
    3 4 27 32 35 36 35 32 27 2

    Em seguida efetuaremos o somatório dos resultados (3+4+27+32+35+36+35+32+27+2), obtendo o seguinte resultado: 233. Pegamos o resultado é dividimos por 11.

    Aqui √© a parte importante do sistema, na divis√£o considere apenas o resto da divis√£o, no nosso caso √© o n√ļmero 2, ele vai ser respons√°vel pelo c√°lculo do d√≠gito verificador. Caso o valor do resto da divis√£o seja menor que 1 (um) 2 (dois), esse valor passa automaticamente a ser zero, caso contr√°rio (nosso caso) √© necess√°rio subtrair o valor obtido de 11. Dessa forma 11-2 √© igual a 9, que ser√° nosso d√≠gito verificador do exemplo.

    Nosso n√ļmero de PIS ficou ent√£o: 123.456.789-19

     

    Considera√ß√Ķes Finais

     

    Com essa explica√ß√£o voc√™ poder√° montar sua pr√≥pria rotina, lembre-se de colocar antes de qualquer coisa o tratamento para o n√ļmero de algarismos, pois se a entrada j√° n√£o estiver com onze algarismos j√° est√° incorreto o n√ļmero do PIS.

    Outra boa sugestão é sempre a entrada sendo feita só com os algarismos, para só depois você fazer a entrada da máscara, fica mais fácil tanto para o programador quanto para o usuário.

    Cursos Online na Ńrea de InformŠtica

    • Klawdyo said,

      Eu acho que está errado, pois o resto da divisão não pode ser 1, e no texto tem dizendo que devemos verificar se ele é menor que 1, e não menor ou igual a 1.
      Pois se o resto for, o DV dar√° 10, e estaria errado.

    • Plinio Cruz said,

      Klawdyo, voc√™ est√° certo, quando fiz o artigo, utilizei os n√ļmeros diferentes do exemplo do site do governo, para testar o algoritmo, devo ter confundido com o resultado da √ļltima conta que eu fiz, j√° est√° alterado. Obrigado pela observa√ß√£o. abra√ßo!

    • Ariel Leal said,

      Parabéns pelo artigo
      Resolvi meu problema f√°cil f√°cil

    • M√°rcio Jr. said,

      Parabéns pelo artigo.
      Deixa bem claro como √© o c√°lculo, isto √© muito bom pois trata-se de um c√°lculo um pouco diferente do que a maioria dos programadores est√° habituado. Isto ajuda a “traduzir” de uma linguagem pra outra.

      S√≥ n√£o entendi porque voc√™ n√£o apresentou o n√ļmero do PIS com a m√°scara padr√£o que √©: ###.#####.##-#

      Na minha opinião, é o outro dado importante com relação ao PIS. Quem não trabalha com isto, provavelmente nunca viu esta máscara. E eu acredito que o formato da máscara é importante para todos que vão trabalhar com validação de PIS.

      Mais uma vez, parabéns pelo bom trabalho.

    • Fl√°vio said,

      Pl√≠nio, a sua iniciativa de postar este algoritimo, foi sem sombra de d√ļvida, fant√°stico. Parab√©ns, pelo seu profissionalismo. Ao ler o primeiro post acima, lembrei-me da seguinte frase: “… criticar o que est√° feito √© f√°cil, dif√≠cil √© fazer a primeira vez …”. Com certeza voc√™ faria parte da minha equipe de trabalho… at√© mais.

    • Plinio Cruz said,

      Flávio agradeço os elogios e a proposta trabalho (risos). Nosso objetivo desde 2002 é ter um site de ajuda, consulta e troca de idéias, afinal compartilhar o conhecimento é a melhor coisa que podemos fazer na nossa área, afinal não custa nada! Fazendo isso só temos a crescer profissionalmente. Fique a vontade e volte sempre! abraço. Plínio Cruz.

    • Sullivan Wilian said,

      Avisa que tirou do livro de Pascal do Manzano

    • Plinio Cruz said,

      Caro Sullivan, tanto o Manzano quanto eu bebemos na mesma fonte, esse exemplo e o texto é fornecido pelo centro de TI do Fazenda, eles fornecem as regras, assim com tem também no exemplo do CPF. Eu tivesse acesso, assim como acredito que o Manzano também, mas com certeza não tira o mérito, o livro do Manzano é um guia que não pode faltar em nenhuma biblioteca. braço Plínio Cruz

    • Sullivan Wilian said,

      Ol√°, Plinio.

      Eu sei que o algoritmo √© oficial e pertence sempre a um √≥rg√£o, o que eu estou apontando √© o texto do seu post. Est√° id√™ntico ao texto do livro do Manzano, inclusive na estrutura. O CPF √© da Fazenda, mas o PIS √© Caixa Econ√īmica Federal. N√£o acredito que um autor fa√ßa um copy/paste e ponha num livro. Minha refer√™ncia √© com o texto e n√£o com o algoritmo oficial.

      Falow!

    • Plinio Cruz said,

      Ok Sullivan, vou pesquisar, pois a minha fonte não foi o ivro do Manzano, foi um trabalho de faculdade que tomei conhecimento nos anos 90 na Universidade Federal Fluminense, conheci e comprei o Livro do Manzano depois, tanto é que o Manzano faz a referência no livro dele as fontes, aqui no Clube temos o mairo cuidado de colocar as fontes e terei o maior prazer de fazer referência a esse autor que já utilizei muito como fonte de consulta, vou falar com o meu parceiro do trabalho e resolveremos essa questão. abraço.

    • Sullivan Wilian said,

      Ol√°, Plinio.

      Fico contente em saber que você entendeu o que eu expressei. Sou da área acadêmica e temos o costume e compromisso de sempre citar as fontes pesquisadas, pois se houver um erro ou falha na informação esta jamais será atribuída a nós.

      Um grande abraço para ti.

    • Jaqueline said,

      Alguém sabe onde encontro as regras oficiais para a geração de dígitos verificadores para documentos como PIS, CEI, CNPJ e CPF?

      Os algoritmos eu já tenho. Escrevi um programa para verificar dígitos verificadores de alguns tipos de documentos oficiais (será divulgado em breve como comando de Stata, disponível a todos). Para isso me baseei em referências secundárias na internet como Wikipedia, forums de programadores, etc.

      No entanto tanto para a confer√™ncia final e documenta√ß√£o do comando, como para a inclus√£o em algumas pesquisas preciso das fontes oficiais. Algu√©m tem id√©ia onde posso encontrar publica√ß√Ķes oficiais que descrevam estes algoritmos?

    • Plinio Cruz said,

      Jaqueline os algoritmos de PIS, CNPJ e CPF do Clube da Inform√°tica forma feitos em consulta a documentos oficiais da fazenda, s√£o utilizando por nosso equipe da Trio Interativa em nossos sistema com muito sucesso. CEI seria o que? N√£o sei ao que se refere, se for alguma forma de identidade lamento dizer que essas verifica√ß√Ķes mudam de √≥rg√£o para √≥rg√£o, diferente dos outros tr√™s. Qualquer d√ļvida √© s√≥ falar. abs Pl√≠nio Cruz

    • Sullivan Wilian said,

      Uma das coisas mais dif√≠ceis √© o acesso aos documentos oficiais dos √≥rg√£os p√ļblicos para o acesso e obten√ß√£o dos algoritmos de valida√ß√£o de d√≠gitos verificadores, pois nem todos disponibilizam esta informa√ß√£o de forma f√°cil.

      H√° na Internet brasileira o p√©ssimo costume de se divulgar informa√ß√Ķes sem se colocar as fontes de onde elas foram obtidas, ou seja, de onde as informa√ß√Ķes foram obtidas. Isso √© feito, parece ser, propositalmente para dar a impress√£o ao visitante daquele s√≠tio (blog, f√≥rum ou qualquer outro mecanismo) de que seu propriet√°rio √© uma sumidade. √© preciso mudar este comportamento, √© preciso cultivar maior honestidade e humildade em divulgar as fontes de obten√ß√£o. Mesmo relatando-se as fontes de obten√ß√£o, dependendo da forma que a informa√ß√£o √© exposta, sem nenhum crit√©rio acad√™mico, pode ser considerado pl√°gio e sem o uso de fontes como ocorre √© pl√°gio sem sombra de d√ļvida.

      Seria interessante divulgar para n√≥s as fontes oficiais as quais o Clube de Inform√°tica teve acesso, pois a informa√ß√£o, desde seu conte√ļdo at√© sua fonte origem, deve ser publicamente divulgada. Caso contr√°rio √© de se duvidar da legitimidade e validade da informa√ß√£o apresentada, pois quem garante que ela √© correta.

    • Sullivan Wilian said,

      Jaqueline, sinto em lhe dizer que voc√™ est√° “num mato sem cachorro”. Ser√£o grandes as dificuldades para localizar as fontes oficiais.

      N√£o sei se te auxilia, mas h√° um autor que eu j√° citei aqui que publicou num livro de linguagem Pascal rotinas de CPF, PIS e CNPJ. Recentemente vi uma publica√ß√£o deste mesmo autor sobre Algoritmos de D√≠gitos Verificadores. Pelo fato deste autor ser Mestre, membro da acad√™mia, ele habitualmente faz refer√™ncias. Embora eu n√£o conhe√ßo o livro, creio que talvez possa lhe auxiliar se n√£o no todo, talvez em parte, pois segundo o apresentado sobre o conte√ļdo da obra valida√ß√£o de SEI n√£o tem, mas tem outros como Inscri√ß√£o Estadual, Boleto Banc√°rio, ISBN, Cart√£o de Cr√©dito entre outros. Na verdade estou encomendando o livro para conhecimento.

      Caso tenha interesse no livro, poder√° compr√°-lo (√© o √ļnico caminho que eu saiba de obten√ß√£o) no endere√ßo do s√≠tio http://clubedeautores.com.br/book/124576–Algoritmos__Digito_Verificador.

      Espero ter ajudado.

    • Plinio Cruz said,

      Sullivan n√£o vou me estender mais nesse assunto, j√° prometi para voc√™ que estamos levantando a autoria desses artigos. Se voc√™ √© um visitante ass√≠duo do nosso site vai ver que todos os nossos artigos vem assinados pelos seus autores. Fa√ßo quest√£o de colocar o autor do texto de valida√ß√£o do nosso site, assim que tiver certeza da sua origem. N√£o posso tirar do ar at√© saber a verdadeira autoria pois √© um dos artigos mais visitados e √© fonte de consulta para minha equipe, que j√° aplicou esse algoritmo em PHP, Pascal, VB, JS e C++ para o desenvolvimento em nossos sistemas, funciona perfeitamente. Portanto finalizo essa discuss√£o que assim que acharmos o autor desse algoritmo e a fonte do governo colocarei aqui no Clube, enquanto isso fica como est√°. Inclusive fiz um of√≠cio ao minist√©rio da fazenda requiisitando essas regras. Sullivan posso garantir que nos √ļltimo 10 anos que estou utilizando essa valida√ß√£o (CPF/CNPJ) ela nunca falhou. Minha experi√™ncia nesse caso acho que conta, pois s√£o mais de 300.000 (trezentos mil) CPF/CNPJ testados ao longo desses anos em inscri√ß√Ķes eletr√īnicas em eventos por todos o Brasil. Mas sinceramente, caso voc√™ e a Jaqueline precisem dessa autoria para utilizar essa rotina, saiba que estamos pesquisando esse assunto.

    • Sullivan Wilian said,

      Olá, Plínio.

      Primeiramente obrigado por seu retorno.

      Não é questão de estender ou não em uma discussão, aliás a proposta do seu sítio postar um artigo e abrir para comentários é exatamente essa. Discutir assuntos, até a exaustão se for preciso e entre os visitantes se assim for preciso.

      O fato de colocar a autoria do texto de um artigo é obrigação, não é favor ou gentileza.

      Em momento algum eu disse a você para retirar o artigo, eu questionei outros fatores. Também não julguei sua habilidade profissional ou sua pessoa ou afirmei se quer que o algoritmo exposto tem problema. Por favor, não ponha palavras em minha boca.

      Agora veja esta frase de seu post a Jequeline “… os algoritmos de PIS, CNPJ e CPF do Clube da Inform√°tica forma feitos em consulta a documentos oficiais da fazenda” e veja o que voc√™ est√° respondendo a mim “… finalizo essa discuss√£o que assim que acharmos o autor desse algoritmo e a fonte do governo colocarei aqui no Clube, enquanto isso fica como est√°…”. Veja que √© voc√™ que est√° em contradi√ß√£o, ora diz usar o algoritmo sob consulta a documentos oficiais da da receita, ora diz que assim que achar o autor do algoritmo (que todos n√≥s sabemos que a Receita Federal) e a fonte do governo o colocar√° a disposi√ß√£o no Clube. S√£o palavras suas, ou voc√™ os t√™m ou n√£o os t√™m, mas n√£o dica que t√™m se n√£o t√™m.

      J√° que aqui estamos, e fui mal interpretado, digo a voc√™ que nos algoritmos de CPF e CNPJ h√° uma pequena falha. Falha at√© normal, pois as pessoas se preocupam em verificar a validade do d√≠gito verificador e se esquecem de verificar uma s√©rie de n√ļmeros de CPF e CNJP que s√£o inv√°lidos para a Receita, ou seja, s√£o n√ļmeros que jamais existir√£o em um documento desse porte. Sobre isso j√° passei comunica√ß√£o ao Sr. Manzano que fora extremamente simp√°tico e educado, pois o algoritmo publicado n√£o est√° incorreto, apenas n√£o verifica algumas condi√ß√Ķes a mais existentes. Recentemente vi que ele considerou essas quest√Ķes num trabalho recentemente publicado.

      Espero que voc√™ tenha agora me entendido, pois foi essa a impress√£o que tive anteriormente e at√© sinalizei sobre, mas com seu √ļltimo recado um tanto desagrad√°vel percebi que voc√™ est√° confundindo as coisas.

      Eu gosto de participar, de colaborar, de auxiliar, N√£o gosto de ser mal interpretado, n√£o gosto que atribuam a mim palavras que eu n√£o disse. Procuro ser senhor das minhas palavras para n√£o ser escravo delas.

      Quem não gosta de discutir sou eu. Eu encerro está discussão e não vou mais interagir sobre este assunto com você. Poderemos conversar sobre outros temas e outros artigos aqui publicados, mas para o tema de dígitos verificadores estou fechado em relação a você. Será um prazer conversar sobre outros assuntos da área da Computação, pois tenho mais de 30 anos de experiência em programação, desde grande porte até micro informática em empresas nacionais e também fora do país.

      Um grande abraço para ti.

      P.S. Se n√£o sabe brincar, n√£o brinca.

    • Plinio Cruz said,

      Sullivan a proposta do Clube da Informática é a divulgação do conhecimento e a discussão em torno do tema, em nenhum artigo bloqueio a discussão, portando elas são intermináveis, então aqui é o lugar justamente para quem sabe brincar, portanto ninguém pode encerrar uma discussão, pode simplesmente, como você propos, deixar de interagir.

      Eu cursei Engenharia na UFF nos anos 90, na época, cursava a cadeira de informática, estávamos apredendo linguagem estruturada e um dos trabalho era algotimos de validação, um amigo (que a princípio teve acesso ao livro do Manzano e de uma instrução normativa) escreveu um trabalho de sala sobre o tema, que eu tive acesso e estava com uma cópia na época que o Clube da Informática foi criado.

      Depois da sua primeira postagem fui atr√°s do livro do Manzano que eu j√° tinha e fui atr√°s da instru√ß√£o normativa no minist√©rio da fazenda, achei outras instru√ß√Ķes, s√≥ que atualmente n√£o est√° l√° as que nos interessam, achei v√°rias instru√ß√Ķes sobre valida√ß√£o, mas a do CPF,CNPJ e PIS n√£o tem est√° em lugar algum no site. Ent√£o entrei em contato com a Receita por interm√©dio da Ouvidoria e estou aguardando a resposta.

      Como tenho certeza que vi o documento na receita federal, apesar de n√£o ter a biografia no trabalho que eu guardei da √©poca, acredito que o documento ainda deve ser acessado pelo p√ļblico, por isso citei as fontes oficiais. De qualquer modo continuo investigando, pois nesses mais de 20 anos de experi√™ncia semelhantes aos seus na √°rea de programa√ß√£o, o que mais fiz foi pesquisar, pesquisar, pesquisar… a exaust√£o os temas ligados ao meu trabalho.

      Se fui desagr√°davel, desculpe n√£o era a inten√ß√£o, estava respondendo as suas coloca√ß√Ķes, dando satisfa√ß√£o sobre o que √© publicado e comentado aqui no Clube da Inform√°tica, pois sou respos√°vel como √ļnico administrador do conte√ļdo que √© enviado para a publica√ß√£o.

      Fico feliz com a sua participação aqui no nosso espaço, gosto de publicar tudo que é postado, ainda mais quando temos oportunidade de ter uma discussão de nível, com um visitante disposto como você. Portanto o site está livre para você discutir qualquer artigo e quem sabe dividir conosco um pouco desses 30 anos de experiência como eu e vários amigos que publicam aqui para os nossos visitantes escrevendo um artigo para nós.

      abraço
      Plínio Cruz

    • Raquel Feitosa de Ara√ļjo said,

      massa… ajudou demais, a professora num vai mais me matar! kkkk

    • Renata said,

      Plinio, me ajude por favor.

      Nunca trabalhei com carteira assinada, sempre fui estagiária. Hoje sou uma estagiária em uma empresa que cadastra ponto pelo PIS. Eu não tenho, e quem solicita o PIS é o primeiro empregador, por eu ser estagiária, eles não podem solicitar PIS para mim.
      O fato é que tentnado bolar um PIS genérico que eu possa usar, apenas pra cadastrar o ponto. Eu baixei um programa da net que calcula, mas o PIS que aparece tem 12 digitos, o que é estranho pois na empresa o aparelho de ponto só reconhece PIS com 11 dig.
      Eu peguei uma numeração e fiz o calculo acima.
      Deu o numero de PIS: 48976617089

      Pra validar um PIS, os n√ļmeros anteriores ao digito verificador, podem ser qualquer um? e o que vc me orienta a fazer nessa situa√ß√£o?

    Deixe seu comentário