[SP-pm] Problemas numa comparação

claudio at dpreferencial.com.br claudio at dpreferencial.com.br
Thu Jul 9 08:36:16 PDT 2009


Gostei do exemplo que vc colou lá no Pastebin..

ótimo código, bem limpo e simples...

VIvendo e aprendendo, 
valeu pela dica..

abs

  ----- Original Message ----- 
  From: Solli Honorio 
  To: saopaulo-pm at mail.pm.org 
  Sent: Wednesday, July 08, 2009 11:30 PM
  Subject: Re: [SP-pm] Problemas numa comparação


  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 at 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 at 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 at dpreferencial.com.br
    > 5511 3288.4840
    >  
    >  
    >  
    >  
    >  
    >
    > ----- Original Message -----
    > From: Solli Honorio
    > To: saopaulo-pm at 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 at 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 at 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 at dpreferencial.com.br
    >>> 5511 3288.4840
    >>>
    >>> _______________________________________________
    >>> SaoPaulo-pm mailing list
    >>> SaoPaulo-pm at 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 at pm.org
    > http://mail.pm.org/mailman/listinfo/saopaulo-pm
    >
    > _______________________________________________
    > SaoPaulo-pm mailing list
    > SaoPaulo-pm at pm.org
    > http://mail.pm.org/mailman/listinfo/saopaulo-pm



    _______________________________________________
    SaoPaulo-pm mailing list
    SaoPaulo-pm at pm.org
    http://mail.pm.org/mailman/listinfo/saopaulo-pm




  -- 
  "o animal satisfeito dorme". - Guimarães Rosa



------------------------------------------------------------------------------


  _______________________________________________
  SaoPaulo-pm mailing list
  SaoPaulo-pm at pm.org
  http://mail.pm.org/mailman/listinfo/saopaulo-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090709/be77f23e/attachment-0001.html>


More information about the SaoPaulo-pm mailing list