On the way home

begin _unremember end;

terça-feira, janeiro 29, 2008

Algoritmo do CPF



Para exemplificar o processo vamos gerar um CPF válido, calculando os
dígitos verificadores de um número hipotético, 111.444.777-XX



Calculando o Primeiro Dígito Verificador



O primeiro dígito verificador do CPF é calculado utilizando-se o seguinte
algoritmo.



1) Distribua os 9 primeiros dígitos em um quadro colocando
os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2 abaixo da esquerda para a direita, conforme
representação abaixo:





























1



1



1



4



4



4



7



7



7



10



9



8



7



6



5



4



3



2






2) Multiplique os valores de cada coluna:








































1



1



1



4



4



4



7



7



7



10



9



8



7



6



5



4



3



2



10



9



8



28



24



20



28



21



14






3) Calcule o somatório dos resultados (10+9+…+21+14) = 162



4) O resultado obtido (162) será divido por 11. Considere
como quociente apenas o valor inteiro, o resto da divisão será responsável pelo
cálculo do primeiro dígito verificador.



Vamos acompanhar: 162 dividido por 11 obtemos 14 como quociente e 8 como
resto da divisão. Caso o resto da divisão seja menor que 2, o nosso primeiro
dígito verificador se torna 0 (zero), caso contrário subtrai-se o valor obtido
de 11, que é nosso caso. Sendo assim nosso dígito verificador é 11-8, ou seja,
3 (três). Já temos portanto parte do CPF, confira: 111.444.777-3X.



Calculando o Segundo Dígito Verificador



1) Para o cálculo do segundo dígito será usado o primeiro
dígito verificador já calculado. Montaremos uma tabela semelhante a anterior só
que desta vez usaremos na segunda linha os valores 11,10,9,8,7,6,5,4,3,2 já que
estamos incorporando mais um algarismo para esse cálculo. Veja:































1



1



1



4



4



4



7



7



7



3



11



10



9



8



7



6



5



4



3



2






2) Na próxima etapa faremos como na situação do cálculo do
primeiro dígito verificador, multiplicaremos os valores de cada coluna e
efetuaremos o somatório dos resultados obtidos: (11+10+…+21+6) = 204.











































1



1



1



4



4



4



7



7



7



3



11



10



9



8



7



6



5



4



3



2



11



10



9



32



28



24



35



28



21



6






3) Realizamos novamente o cálculo do módulo 11. Dividimos o
total do somatório por 11 e consideramos o resto da divisão.



Vamos acompanhar: 204 dividido por 11 obtemos 18 como quociente e 6 como
resto da divisão.



4) Caso o valor do resto da divisão seja menor que 2, esse
valor passa automaticamente a ser zero, caso contrário (como no nosso caso) é
necessário subtrair o valor obtido de 11 para se obter o dígito verificador.
Logo, 11-6= 5, que é o nosso segundo dígito verificador.



Neste caso chegamos ao final dos cálculos e descobrimos que os dígitos
verificadores do nosso CPF hipotético são os números 3 e 5,
portanto o CPF ficaria assim: 111.444.777-35.



O gerador de CPF apresentado funciona com base neste algoritmo. A rotina de
gerar CPF ’s válidos, inicialmente sorteia 9 números. Calcula-se o 1o dígito
verificador e integra-se o mesmo aos 9 números iniciais. Prossegue-se com o
cálculo do segundo dígito verificador como ensinado. Ao final, o criador de CPF
emite um número de CPF válido.



o algoritmo vai ficar assim, agora cabe você montar em outros códigos de
progrmação



Algoritmo ConfereCPF

VAR inteiro: d,a array[1..11]

inteiro: i,s1,s2

inteiro: d10, d11

inicio

escrever(’digite o CPF deixando um espaco entre os digitos’);

para i de 1 até 11 faça

ler(d[i]);

;

{multiplicar os digitos por um valor}

para i de 1 até 9 faça

a[i] := d[i]*(11 - i);

{calcular a soma s1}

s1 := 0;

para i de 1 até 9 faça

s1 := s1+a[i];

{calcular o digito 10}

d10 := 11 - (s1 mod 11);

se (d10 > 9) então d10 := 0;



{multiplicar os digitos por um valor}

para i de 1 até 10 faça

a[i] := d[i]*(12 - i);

{calcular a soma s2}

s2 := 0;

para i de 1 até 10 faça

s2 := s2 + a[i];

{calcular o digito 11}

d11 := 11 - (s2 mod 11);

se (d11 > 9) então d11 := 0;



{conferir se o CPF é válido}

se (d10 = d[10]) e (d11 = d[11]) então

escrever(’CPF valido’)

senão

escrever(’CPF invalido’);



fim do algoritmo



 







sábado, agosto 06, 2005

AVISO!!!

Se você está lendo isso então esse aviso é para você. Cada palavra lida deste texto inútil é um segundo a menos na sua vida. Você não tem nada melhor pra fazer ? Você não consegue pensar em nada para aproveitar melhor esses momentos ? Ou sua vida é tão vazia que se resume a assistir um programa que que mostra a vida dos outros ao invés de viver a sua própria vida ? Pare de comprar tanto. Saia do seu casulo e mostre que você está vivo. Sabia que enquanto alimenta o seu cãozinho milhões passam fome. Ah! Então você tem um celular ? Você realmente precisa de um ? Ou você comprou o seu para tentar viver do mesmo jeito que outros milhões no planeta ? Pare de comprar tanto! Você compra tudo que eles te vendem, você acredita em todas as mentiras que eles te contam. Você não é o seu carro. Você não é o seu celular. Você não é o conteúdo da sua carteira. Mas sim, você pode ser um ser único. Pare de comprar o estilo de vida que eles vendem, crie o seu próprio. Pare de ter vergonha de fazer o que quer porque se preocupa demais com o que eles pensam. Mude sua vida agora ou você será apenas mais uma estatística...................... Você foi avisado"

o aviso de clube da luta. para pensar. eh isso.