ô do cabelo, td bão?<br><br>a direfença dos or/and/etc para || && ... é a precedência. aqui vai um pedacinho significativo da tabela:<br><br> left &&<br> left ||<br> nonassoc .. ...<br>
right ?:<br> right = += -= *= etc.<br> left , =><br> nonassoc list operators (rightward)<br> right not<br> left and<br> left or xor<br>
<br>note que os || && têm precedência MAIOR que a atribuição, e os outros não.. isso dá uma bela diferença ;-)<br><br>ET? Campinas? o_O Phone home? rsrs<br><br>[]s<br>Russian<br><br><br><div class="gmail_quote">2008/6/11 André Garcia Carneiro <<a href="mailto:andre.garcia.carneir@terra.com.br">andre.garcia.carneir@terra.com.br</a>>:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">---------- Cabeçalho original -----------<br>
<br>
De: saopaulo-pm-bounces+andre.garcia.carneir=<a href="http://terra.com.br" target="_blank">terra.com.br</a>@<a href="http://pm.org" target="_blank">pm.org</a><br>
Para: <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
Cópia:<br>
</div>Data: Tue, 10 Jun 2008 23:01:13 -0300<br>
Assunto: Re: [SP-pm] Desculpa a lista<br>
<div class="Ih2E3d"><br>
><br>
><br>
> Mas, o livro então que está me confundindo olha só esse programa, ( jogo ) que eu aprendi fazer com o livro:<br>
<br>
</div>Que livro? Se for o que você mencionou, jogue fora.<br>
<br>
><br>
> #!/usr/bin/perl<br>
<br>
Cadê o 'use strict;'?<br>
<div class="Ih2E3d"><br>
> $resultado = soma();<br>
> if ($resultado == 7 or $resultado == 11) {<br>
> $status = "ganhou";<br>
<br>
</div>Cadê o 'my'<br>
<div class="Ih2E3d"><br>
> }<br>
> elsif ($resultado == 2 or $resultado == 3 or $resultado == 12) {<br>
> $status = "perdeu";<br>
> }<br>
<br>
</div>Nada contra or e and... mas prefiro '||'(or) e '&&'(and) como operadores lógicos... devem ser resquícios de C<br>
em meu cérebro... rsrsrs! Se não me engando postaram aqui uma vez dizendo que haviam diferenças grandes em se<br>
usar 'and','or' e '&&','||'... vou procurar, se se achar posto um comentário.<br>
<div class="Ih2E3d"><br>
> elsif ($resultado == 4 or $resultado == 5 or $resultado == 6 or $resultado == 8 or $resultado == 9) {<br>
> $status = "continua";<br>
> $pontos = $resultado;<br>
> }<br>
> while ($status eq "continua") {<br>
> $resultado = soma();<br>
> if ($resultado == 7) {<br>
> $status = "perdeu";<br>
> }<br>
> elsif ($resultado == $pontos) {<br>
> $status = "ganhou";<br>
> }<br>
> }<br>
> print message();<br>
><br>
> sub soma<br>
> {<br>
> ($dado1 , $dado2) = (indivi() , indivi());<br>
> $somas = $dado1 + $dado2;<br>
> print "Jogador lançou $dado1 + $dado2 e a soma é $somas\n";<br>
> return $somas<br>
> }<br>
><br>
> sub indivi<br>
> {<br>
> return 1 + int( rand ( 6 ) );<br>
> }<br>
><br>
> sub message<br>
> {<br>
> $status = shift;<br>
> return print "Parabéns você ganhou\n" if $status eq "ganhou";<br>
> return print "Você perdeu\n";<br>
> }<br>
><br>
</div><div class="Ih2E3d">> Na sub message:<br>
> tem lá:<br>
> $stauts = shift;<br>
> Mas seu apagar isso, o problema executa normalmente.<br>
> isso retira o primeiro valor de $status correto ?<br>
</div><div class="Ih2E3d">> Mas isso é uma coisa inútil concordam ?(Neste programa)<br>
<br>
</div>Quer dizer, ele imprime $status mesmo sem a linha '$status'??? Se isso acontece, é por uma única e simples<br>
razão... não está usando o pragma 'strict'.<br>
<br>
Experimenta colocar 'use strict;' no início do código e vc vai ver que esse programa terá muitos problemas.<br>
Reparou por exemplo, que você sempre perde(sem usar strict)?<br>
<div class="Ih2E3d"><br>
<br>
> Acho que o livro tinha que por um exemplo que o shift fosse realmente necessário no programa.<br>
> "<br>
<br>
</div>Aquele shift é necessário... sem ele o status é sempre falso, ou seja, você sempre 'perde'.<br>
<br>
> pop - remove o último elemento do array e retorna este elementopush - adiciona elementos ao final do<br>
arrayshift - remove o primeiro elemento do array e retorna este elementosplice - adiciona or remove<br>
elementos em qualquer lugar do arrayunshift"Isso eu já estudei.<br>
<div class="Ih2E3d">> "ARGV", eu ainda não estudei.<br>
><br>
><br>
> Daniel Mantovani<br>
> "A sabedora é a virtude dos sábios."<br>
> "Até um tolo pode passar por sábio e inteligente se ficar calado"<br>
><br>
><br>
> Date: Tue, 10 Jun 2008 19:28:27 -0300<br>
> From: <a href="mailto:shonorio@gmail.com">shonorio@gmail.com</a><br>
> To: <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
> Subject: Re: [SP-pm] Desculpa a lista<br>
><br>
> Daniel,O pessoal já explicou o quê é shift, mas vou avançar um pouco mais e vou dividir o email em duas<br>
partes, sendo elas:<br>
><br>
><br>
> operadores de array :<br>
> Os operadores podem ser agrupados por função e os operadores responsável por 'manusear' arrays são :<br>
><br>
</div>> pop - remove o último elemento do array e retorna este elementopush - adiciona elementos ao final do array<br>
> shift - remove o primeiro elemento do array e retorna este elementosplice - adiciona or remove elementos<br>
<div class="Ih2E3d">em qualquer lugar do array<br>
</div>> unshift - adiciona elementos no início do arrayA questão é que todos estes operadores precisam de pelo um<br>
<div class="Ih2E3d">dado/variável para trabalhar, o pop e shift por exemplo. Quanto o nome da variável não é definido aí acontece<br>
as mágias negras do Perl, as variáveis especiais (perldoc perlvar). Entre estas variáveis especiais temos duas<br>
muito utilizada e invisíveis, a '@_' e '$_'.<br>
><br>
><br>
> A '@_' é o array padrão para os operadores que estão aguardando um array, ou seja, se você escrever :<br>
> my $x = shift @meu_array; # o shift vai remover o primeiro elemento do array @meu_array e colocar na variável $x;<br>
> my $x = shift; # o shift vair remover o primeiro elemento do array @_, porque você não definiu uma variável,<br>
e colocar na variável $x.<br>
><br>
> E como você define este valor padrão, quando você passa valores para uma função, por exemplo:<br>
> sub f {<br>
> my $v01 = shift;<br>
> my $v02 = shift @_; # esta faz o mesmo que o primeiro, só que estou declarando o @_<br>
> }<br>
> O '$_' é a mesma coisa, mas ele é o valor padrão para operadores que trabalham com escalares.<br>
> declaração de variáveis:O 'my' (nunca My), é um operador de declaração de escopo de variável. Faz parte da<br>
boa política de programação e perl e sempre será exigido quando você utilizar o pragma 'strict'. Então sempre,<br>
digo SEMPRE, começe um código em perl assim :<br>
><br>
</div>> #!/bin/perl<br>
> use strict;<br>
> use warnings;<br>
><br>
><br>
><br>
<div class="Ih2E3d">> Agora, começe a dar uma lida na documentação, dê uma olhada no site <a href="http://www.perl.org.br" target="_blank">www.perl.org.br</a>, pois este teu livro está<br>
muito fraco. Se vc está no meio dele e ainda está com estas dúvidas.<br>
> Abraços,Solli M. Honório<br>
><br>
><br>
</div><div class="Ih2E3d">> 2008/6/10 Daniel de Oliveira Mantovani <<a href="mailto:daniel.oliveira.mantovani@hotmail.com">daniel.oliveira.mantovani@hotmail.com</a>>:<br>
><br>
><br>
><br>
><br>
><br>
><br>
</div><div class="Ih2E3d">> Pessoas, queria me desculpar com vocês por atitudes imaturas.<br>
> Sei que tenho muito o que aprender, principalmente sobre Perl, e não existe lugar melhor para o aprendizado,<br>
do que com os Mestres Dobradores de Perl.<br>
> Espero recuperar a elegância natural de um newbie.<br>
><br>
> E espero recuperar isso com atitudes e perguntas construtivas.<br>
> Para começar eu não intendi a utilidade do shift quando usado junto à uma variável,<br>
> Exemplo:<br>
> $variavel = shift;<br>
> e também não intendi a utilidade do "My"<br>
><br>
> Exemplo:<br>
> my $variavel = shift;<br>
> O My eu sei teoricamente o que ele faz, o shift eu sei usar ele perfeitamente com "Array", para retirar o<br>
primeiro argumento, porém o shift com variável e o My, na prática eu não intendi muito bem, pois como eu já<br>
disse é a minha primeira linguagem de programação.<br>
><br>
> Gostaria que me mostrassem programas simples com shift junto à uma variável, e o My, sei que simples para<br>
vocês é dificilimo para mim, então pesso que escolham com cuidado.<br>
><br>
> Obrigado.<br>
><br>
> Abraços a todos.<br>
><br>
><br>
> Daniel Mantovani<br>
><br>
</div><div class="Ih2E3d">> Notícias direto do New York Times, gols do Lance, videocassetadas e muitos outros vídeos no MSN Videos!<br>
Confira já!<br>
><br>
><br>
> _______________________________________________<br>
><br>
</div><div class="Ih2E3d">> SaoPaulo-pm mailing list<br>
><br>
> <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
><br>
> <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
><br>
><br>
</div><div class="Ih2E3d">> --<br>
> "o animal satisfeito dorme". - Guimarães Rosa<br>
><br>
</div>> _________________________________________________________________<br>
<div class="Ih2E3d">> Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o Messenger! É GRÁTIS!<br>
</div>> <a href="http://www.msn.com.br/emoticonpack" target="_blank">http://www.msn.com.br/emoticonpack</a><br>
<div><div></div><div class="Wj3C7c"><br>
--<br>
André Garcia Carneiro<br>
Developer(Perl/PHP)<br>
Member of "São Paulo Perl Mongers" - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
"Though we live in trying times, we're the ones who have to try"