brinque com os valores<div><br></div><div><a href="https://gist.github.com/4205775">https://gist.github.com/4205775</a></div><div><br></div><div>1,0</div><div>0,1</div><div>6,666</div><div>666,6</div><div><br></div><div>etc<br>

<br><div class="gmail_quote">2012/12/4 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">
Alguem passa um exemplo onde esteja evidente a diferença entre & && e and!<br>Um caso onde em um de certo e em outro não!<br><br><div><div></div>> From: <a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a><br>

> Date: Tue, 4 Dec 2012 14:00:45 -0200<div class="im"><br>> To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>> Subject: Re: [Rio-pm] Chaves de hash<br>> <br></div><div><div class="h5">> Desculpa,<br>

> <br>> Não entendi a diferença entre:<br>> <br>> perl -E 'sub a{say 1} sub b{say 2} if (a() && b()){}'<br>> perl -E 'sub a{say 1} sub b{say 2} if (a() and b()){}'<br>> <br>> perl -E 'sub a{say 1;return 0} sub b{say 2} if (a() && b()){}'<br>

> perl -E 'sub a{say 1;return 0} sub b{say 2} if (a() and b()){}'<br>> <br>> Até onde eu sei, não existe operador de short circuit. O short circuit<br>> é uma propriedade, uma otimização na avaliação de expressões lógicas.<br>

> <br>> Alguém estamos viajando?<br>> <br>> []'s<br>> <br>> 2012/11/30  <<a href="mailto:thiagoglauco@ticursos.net" target="_blank">thiagoglauco@ticursos.net</a>>:<br>> >> Eu devo ser muito estúpido... mas alguém que está falando isso (ja é<br>

> >> o 3o), poderia fazer o favor de me explicar porque ele deve usar && no<br>> >> lugar do 'and' e qual diferença isso faz no caso deste if específico?<br>> >> E em quais situações deve-se usar o 'and' no lugar de &&?<br>

> ><br>> ><br>> > Não é estúpido não. Vamos analisar a tabela da verdade da função and ou &&:<br>> ><br>> > 0 x 0 = 0<br>> > 0 x 1 = 0<br>> > 1 x 0 = 0<br>> > 1 x 1 = 1<br>

> ><br>> > Então, no if do código do nosso biólogo não haveria impacto real, sorry eu<br>> > me deixei levar por outras coisas que estava pensando aqui.<br>> ><br>> > Mas voltando ao if:<br>
> ><br>
> > if($keys >= $min and $keys <= $max)<br>> ><br>> > O operador de short circuit só avaliaria a expresssão da direita ($keys <=<br>> > $max) se a primeira expressão for verdadeira. Ou seja, se $keys for menor<br>

> > que $min o Perl nem vai perder tempo checando pois 0 x N = 0. Então aqui eu<br>> > me enganei, não ia fazer diferença no código do nosso colega.<br>> ><br>> > Por outro lado, vamos supor um caso que você queira aproveitar o teste if e<br>

> > executar duas subs na mesma linha de código:<br>> ><br>> > if ( &foo and &bar ){<br>> >    ...faça alguma coisa<br>> > }<br>> > else {<br>> >    ... &bar só será executada se &foo retornar true<br>

> > }<br>> ><br>> > por outro lado:<br>> ><br>> > if ( &foo && &bar ){<br>> >    ...&foo e &bar foram executadas. faça alguma coisa<br>> > }<br>> > else {<br>

> >    ... &foo e &bar foram executadas mesmo com o && retornando false.<br>> > }<br>> ><br>> > essa é a diferença.<br>> ><br>> > Em 2012-11-29 22:09, Bruno Buss escreveu:<br>

> >><br>> >> 2012/11/29 <<a href="mailto:thiagoglauco@ticursos.net" target="_blank">thiagoglauco@ticursos.net</a>><br>> >><br>> >>> Seu primeiro erro é o operador and. No documento perlop: $ perldoc perlop<br>

> >>> você vai descobrir o seguinte:<br>> >>><br>> >>>  " Logical And<br>> >>>      Binary "and" returns the logical conjunction of the two<br>> >>>      surrounding expressions.  It's equivalent to && except for<br>

> >>>      the very low precedence.  This means that it short-circuits:<br>> >>>      i.e., the right expression is evaluated only if the left<br>> >>>      expression is true.<br>> >>> [...]<br>

> >>>   C-style Logical And<br>> >>>      Binary "&&" performs a short-circuit logical AND operation.<br>> >>>      That is, if the left operand is false, the right operand is<br>

> >>>      not even evaluated.  Scalar or list context propagates down<br>> >>>      to the right operand if it is evaluated."<br>> >>><br>> >>> Logo, seu código<br>> >>><br>

> >>> if($keys >= $min and $keys <= $max){<br>> >>><br>> >>> deveria ser if($keys >= $min && $keys <= $max){<br>> >><br>> >><br>> >> Eu devo ser muito estúpido... mas alguém que está falando isso (ja é<br>

> >> o 3o), poderia fazer o favor de me explicar porque ele deve usar && no<br>> >> lugar do 'and' e qual diferença isso faz no caso deste if específico?<br>> >> E em quais situações deve-se usar o 'and' no lugar de &&?<br>

> >><br>> >> [ ]'s--<br>> >> Bruno C. Buss<br>> >> <a href="http://www.brunobuss.net" target="_blank">http://www.brunobuss.net</a> [1]<br>> >><br>> >><br>> >> Links:<br>

> >> ------<br>> >> [1] <a href="http://www.brunobuss.net" target="_blank">http://www.brunobuss.net</a><br>> >><br>> >><br>> >> _______________________________________________<br>

> >> Rio-pm mailing list<br>> >> <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> >> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>

> ><br>> ><br>> > _______________________________________________<br>> > Rio-pm mailing list<br>> > <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> > <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>

> _______________________________________________<br>> Rio-pm mailing list<br>> <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>

</div></div></div>                                      </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br>

<br><a href="http://pacman.blog.br">http://pacman.blog.br</a><br>
</div>