[SP-pm] Problemas numa comparação

Solli Honorio shonorio at gmail.com
Wed Jul 8 19:30:25 PDT 2009


Meu querido, tire o sotaque de C e coloque o sotaque de Perl, então :

... de :
<code>

   1. my $num = 0;
   2. for (my $i = 0; $i < 8; $i++) {
   3.     if ($options[$i] eq "S") {
   4.         $num = set_bit($num, $i);
   5.     }
   6. }

</code>

para ... :
<code>

   1. for  my $i ( 0..7 ) {
   2.     if ($options[$i] eq "S") {
   3.         $num = set_bit($num, $i);
   4.     }
   5. }


</code>

2009/7/8 Blabos de Blebe <blabos em gmail.com>

> 6000 campos? 200000 campos?
>
> O que é um campo, nesse contexto? Não conheço o tal do SPSS.
>
> Você usa algum banco de dados, tipo MySQL, Postgres?
>
> Mas voltando ao assunto?
>
> Pelo que eu entendi, denovo supondo, você tem algo como:
>
> ----------| Maçã | Laranja | Abacaxi | Banana
> Wesley    | Não  | Sim     | Não     | Não
> Solli     | Não  | Sim     | Sim     | Não
> Montovani | Não  | Não     | Não     | Sim
>
> E quer transformar em:
>
> ----------| Frutas |
> Wesley    | 4      |
> Solli     | 6      |
> Montovani | 1      |
>
> Neste caso, me veio à cabeça algo assim:
>
> http://pastebin.com/m729e79c7
>
> Abraços
>
>
> 2009/7/8 <claudio em dpreferencial.com.br>
> >
> > A todos boa noite!
> >
> > Soli,
> > valeu a intenção, mas assim não rola..
> > já resolvi isto com & mesmo...
> >
> > Estou passando o meu sistema que é em Delphi..mas...
> > sou novato total em Perl...rsrs...
> >
> >
> > Respondendo a sua pergunta:
> > ________________
> > Um breve histórico:
> >
> > Eu trabalho com processamento de pesquisas de mercado. (tabulação)
> >
> > No começo trabalhei muito anos com Statiscs SPSS, Statiscs ... (com estes
> programas as bases ficavam realmente gigantes..rsrs..200.000 campos..rsrs)
> > acabei desenvolvendo meu próprio sistema de tabulação.
> >
> > Desenvolvi um formato para o meu arquivo de dados,
> > levando em consideração minhas necessidades, tais como:
> >
> > - conteúdo criptografado.
> > - tamanho final do arquivo de base.
> > - quantidade final de campos na base.
> > - base não normalizada = campos multivalorados e dependentes..
> > - conteúdo dos campos: numérico.
> >
> > levando em consideração que:
> > - 80% dos campos de uma pesquisa são campos numéricos e RM (respostas
> múltiplas=campos multivalorados)
> >   Ex:
> >   Quais frutas vc gosta:
> >   1 - abacaxi
> >   2 - Mamão
> >   3 - abacate....  até o código 50.
> >
> >   um fulano responde os códigos 2/3/4/9/10/15
> >
> >   num buffer(array de boleanos) eu marco true nestas posição e gravo.
> >
> > Veja, no SPSS ou em outras bases "normais" eu precisaria de 15 campos
> para guardar as informações,
> > quando que eu guardo num campo só..de tamanho bem pequeno...rsrs..
> >
> > (não percebeu meu nome ..rsrs =>  Binaghi = Binário..rsrs.. aqui só rola
> um neurônio, que de vez em quando resolve ficar True..rsrs)
> > ____________________________________________________
> > ____________________________________________________
> >
> > (é um código totalmente grosso..mas funfa..rsrs)
> >
> > É assim que eu faço:
> >
> > Leio o arq:
> >
> >   open(tap,"<$PathHtdocs");
> >   binmode tap;
> >       my ($buf, $data, $n, @cont);
> >       while (($n = read tap, $data, $x) != 0) {
> >           print "$n bytes read\n";
> >          $buf .= $data;
> >       }
> >        print "$buf";
> >   close(tap);
> >  @cont=split(//,$buf);
> >
> > Comparo o conteúdo:
> >
> >   push (@byt,1);
> >   push (@byt,2);
> >   push (@byt,4);
> >   push (@byt,8);
> >   push (@byt,16);
> >   push (@byt,32);
> >   push (@byt,64);
> >   push (@byt,128);
> >   my @res;
> >   my $RecCount=$n*8;
> >   for($a=1;$a<=$RecCount+1;$a++){
> >        push (@res,0);
> >   }
> >   my $pos=0;
> >   for($a=1;$a<=$n;$a++){
> >     $val=$cont[$a];
> > print "----> testa valor $a:=$cont[$a]<br>\n";
> >     if(ord($val)!=0){
> >       for($k=0;$k<=7;++$k){
> >           $pos=8*($a-1)+$k+1;
> >           $ord=ord($val);
> >           if(ord($val) & $byt[$k]) {
> >             $res[$pos]=1;
> >             $r=ver_conteudo(ord($val),$byt[$k]);
> > print "----> res[$pos]:=1 / $r<br>\n";
> >           }
> >       }
> >     }
> >   }
> > ____________________________________________________
> > ____________________________________________________
> >
> > Esse formato é para as respostas no formato de códigos,
> > os textos, destes códigos, ficam guardados em outro arquivo..
> > Tipo na base normal se guarda no formato literal: Sim, Não..
> > na minha base quardo 1, 2 e tenho um texo só para sim e não..
> >
> > Sacou...
> >
> >
> > Obrigado pela atenção..
> >
> > Abs
> >
> > Claudio H.Binaghi
> > claudio em dpreferencial.com.br
> > 5511 3288.4840
> >
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: Solli Honorio
> > To: saopaulo-pm em mail.pm.org
> > Sent: Wednesday, July 08, 2009 3:32 PM
> > Subject: Re: [SP-pm] Problemas numa comparação
> > Claudio, eu não ví que vc já havia encontrado o teu problema, mas
> continuo curioso sobre o teu trabalho... mas quero mostra uma outra solução
> para o teu problema...
> >
> > <code>
> > sub ver_conteudo {
> >   return 1 << $_[0] & $_[1] ? 1 : 0;
> > }
> >
> > if ( ver_conteudo(1,6) ) {
> >   print "Verdadeiro\n";
> > } else {
> >   print "Falso\n";
> > }
> > </code>
> >
> > apesar de não ser tão legível (com certeza percisa de uma explicação), é
> muito mais rápido pois não preciso criar um array.
> >
> > Solli M. Honório
> >
> > 2009/7/8 Solli Honorio <shonorio em gmail.com>
> >>
> >> Claudio, eu não o que vc quer cara, não entendi o que vc quis dizer com
> 'É uma comparação feita como entre Bytes como Boolean.', então vou responder
> o que eu acho que deveria ser a tradução do teu código:
> >>
> >> <code>
> >> sub ver_conteudo {
> >>   my @bits = (1,2,4,8,16,32,64,128);
> >>   return $bits[1] & $_[0] ? 1 : 0;
> >> }
> >>
> >> if ( ver_conteudo(8) ) {
> >>   print "Verdadeiro\n";
> >> } else {
> >>   print "Falso\n";
> >> }
> >> </code>
> >>
> >> Agora fiquei curioso, porque e como vc está traduzindo um programa em
> Delphi para Perl ? Isto é para uma empresa ?
> >>
> >> Abraços,
> >>
> >> Solli M. Honório
> >>
> >> 2009/7/8 <claudio em dpreferencial.com.br>
> >>>
> >>>
> >>> Pessoall, Boa tarde!
> >>>
> >>> Como sempre, estou precisando de um HELP!!!
> >>>
> >>> Estou passando um sistema de Delphi para Perl
> >>> e não tenho consiguido achar indicação
> >>> para desenvolver este trecho do código.
> >>>
> >>> É uma comparação feita como entre Bytes como Boolean.
> >>> ________________________________________________________________
> >>> ________________________________________________________________
> >>> Segue o trecho do código:
> >>>
> >>> Procedure Ver_Conteudo;
> >>>    const BITS: array[0..7] of Byte = (1,2,4,8,16,32,64,128);
> >>>    Res:   Boolean;
> >>> Begin
> >>>
> >>>   Res := Boolean ( BITS[1] and 6 );    // Este é o trecho que me
> interessa,  este resultado dá true.
> >>>
> >>>   if (Res) Then ShowMessage('True') else ShowMessage('False');
> >>>
> >>> End;
> >>>
> >>> ________________________________________________________________
> >>> ________________________________________________________________
> >>>
> >>> Qualquer ajuda/ luz, ajuda muito...
> >>>
> >>> desde já agradeço a todos.
> >>>
> >>> Abs
> >>>
> >>> Claudio H.Binaghi
> >>> claudio em dpreferencial.com.br
> >>> 5511 3288.4840
> >>>
> >>> _______________________________________________
> >>> SaoPaulo-pm mailing list
> >>> SaoPaulo-pm em pm.org
> >>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >>
> >>
> >>
> >> --
> >> "o animal satisfeito dorme". - Guimarães Rosa
> >
> >
> >
> > --
> > "o animal satisfeito dorme". - Guimarães Rosa
> >
> > ________________________________
> >
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090708/ff8d3abb/attachment.html>


More information about the SaoPaulo-pm mailing list