[SP-pm] Desculpa a lista

André Garcia Carneiro andre.garcia.carneir em terra.com.br
Quarta Junho 11 06:05:16 PDT 2008


---------- Cabeçalho original -----------

De: saopaulo-pm-bounces+andre.garcia.carneir=terra.com.br em pm.org
Para: saopaulo-pm em mail.pm.org
Cópia: 
Data: Tue, 10 Jun 2008 23:01:13 -0300
Assunto: Re: [SP-pm] Desculpa a lista

> 
> 
> Mas, o livro então que está me confundindo olha só esse programa, ( jogo ) que eu aprendi fazer com o livro:

Que livro? Se for o que você mencionou, jogue fora.

> 
> #!/usr/bin/perl

Cadê o 'use strict;'?

> $resultado = soma();
> if ($resultado == 7 or $resultado == 11)	{
> $status = "ganhou";

Cadê o 'my'

> }
> elsif ($resultado == 2 or $resultado == 3 or $resultado == 12)	{
> $status = "perdeu";
> }

Nada contra or e and... mas prefiro '||'(or) e '&&'(and) como operadores lógicos... devem ser resquícios de C
em meu cérebro... rsrsrs! Se não me engando postaram aqui uma vez dizendo que haviam diferenças grandes em se
usar 'and','or' e '&&','||'... vou procurar, se se achar posto um comentário.

> elsif ($resultado == 4 or $resultado == 5 or $resultado == 6 or $resultado == 8 or $resultado == 9)	{
> $status = "continua";
> $pontos = $resultado;
> }
> while ($status eq "continua")	{
> $resultado = soma();
> if ($resultado == 7)	{
> $status = "perdeu";
> }
> elsif ($resultado == $pontos)	{
> $status = "ganhou";
> }
> }
> print message();
> 
> sub soma
> {
> ($dado1 , $dado2) = (indivi() , indivi());
> $somas = $dado1 + $dado2;
> print "Jogador lançou $dado1 + $dado2 e a soma é $somas\n";
> return $somas
> }
> 
> sub indivi 
> {
> return 1 + int( rand ( 6 ) );
> }
> 
> sub message
> {
> $status = shift;
> return print "Parabéns você ganhou\n" if $status eq "ganhou";
> return print "Você perdeu\n";
> }
> 
> Na sub message:
> tem lá:
> $stauts = shift;
> Mas seu apagar isso, o problema executa normalmente.
> isso retira o primeiro valor de $status correto ?
> Mas isso é uma coisa inútil concordam ?(Neste programa)

Quer dizer, ele imprime $status mesmo sem a linha '$status'??? Se isso acontece, é por uma única e simples
razão... não está usando o pragma 'strict'.

Experimenta colocar 'use strict;' no início do código e vc vai ver que esse programa terá muitos problemas.
Reparou por exemplo, que você sempre perde(sem usar strict)?


> Acho que o livro tinha que por um exemplo que o shift fosse realmente necessário no programa.
> "

Aquele shift é necessário... sem ele o status é sempre falso, ou seja, você sempre 'perde'.

> pop     - remove o último elemento do array e retorna este elementopush    - adiciona elementos ao final do
arrayshift   - remove o primeiro elemento do array e retorna este elementosplice  - adiciona or remove
elementos em qualquer lugar do arrayunshift"Isso eu já estudei.
> "ARGV", eu ainda não estudei.
> 
> 
> Daniel Mantovani
> "A sabedora é a virtude dos sábios."
> "Até um tolo pode passar por sábio e inteligente se ficar calado"
> 
> 
> Date: Tue, 10 Jun 2008 19:28:27 -0300
> From: shonorio em gmail.com
> To: saopaulo-pm em mail.pm.org
> Subject: Re: [SP-pm] Desculpa a lista
> 
> Daniel,O pessoal já explicou o quê é shift, mas vou avançar um pouco mais e vou dividir o email em duas
partes, sendo elas:
> 
> 
> operadores de array :
> Os operadores podem ser agrupados por função e os operadores responsável por 'manusear' arrays são :
> 
> pop     - remove o último elemento do array e retorna este elementopush    - adiciona elementos ao final do array
> shift   - remove o primeiro elemento do array e retorna este elementosplice  - adiciona or remove elementos
em qualquer lugar do array
> unshift - adiciona elementos no início do arrayA questão é que todos estes operadores precisam de pelo um
dado/variável para trabalhar, o pop e shift por exemplo. Quanto o nome da variável não é definido aí acontece
as mágias negras do Perl, as variáveis especiais (perldoc perlvar). Entre estas variáveis especiais temos duas
muito utilizada e invisíveis, a '@_' e '$_'.
> 
> 
> A '@_' é o array padrão para os operadores que estão aguardando um array, ou seja, se você escrever :
> my $x = shift @meu_array; # o shift vai remover o primeiro elemento do array @meu_array e colocar na variável $x;
> my $x = shift; # o shift vair remover o primeiro elemento do array @_, porque você não definiu uma variável,
e colocar na variável $x.
> 
> E como você define este valor padrão, quando você passa valores para uma função, por exemplo:
> sub f {
>   my $v01 = shift;
>   my $v02 = shift @_; # esta faz o mesmo que o primeiro, só que estou declarando o @_
> }
> O '$_'  é a mesma coisa, mas ele é o valor padrão para operadores que trabalham com escalares.
> declaração de variáveis:O 'my' (nunca My), é um operador de declaração de escopo de variável. Faz parte da
boa política de programação e perl e sempre será exigido quando você utilizar o pragma 'strict'. Então sempre,
digo SEMPRE, começe um código em perl assim :
> 
> #!/bin/perl
> use strict;
> use warnings;
> 
> 
> 
> Agora, começe a dar uma lida na documentação, dê uma olhada no site www.perl.org.br, pois este teu livro está
muito fraco. Se vc está no meio dele e ainda está com estas dúvidas.
> Abraços,Solli M. Honório
> 
> 
> 2008/6/10 Daniel de Oliveira Mantovani <daniel.oliveira.mantovani em hotmail.com>:
> 
> 
> 
> 
> 
> 
> Pessoas, queria me desculpar com vocês por atitudes imaturas.
> Sei que tenho muito o que aprender, principalmente sobre Perl, e não existe lugar melhor para o aprendizado,
do que com os Mestres Dobradores de Perl.
> Espero recuperar a elegância natural de um newbie.
> 
> E espero recuperar isso com atitudes e perguntas construtivas.
> Para começar eu não intendi a utilidade do shift quando usado junto à uma variável,
> Exemplo:
> $variavel = shift;
> e também não intendi a utilidade do "My"
> 
> Exemplo:
> my $variavel = shift;
> O My eu sei teoricamente o que ele faz, o shift eu sei usar ele perfeitamente com "Array", para retirar o
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á
disse é a minha primeira linguagem de programação.
> 
> Gostaria que me mostrassem programas simples com shift junto à uma variável, e o My, sei que simples para
vocês é dificilimo para mim, então pesso que escolham com cuidado.
> 
> Obrigado.
> 
> Abraços a todos.
> 
> 
> Daniel Mantovani
> 
> Notícias direto do New York Times, gols do Lance, videocassetadas e muitos outros vídeos no MSN Videos!
Confira já!
> 
> 
> _______________________________________________
> 
> SaoPaulo-pm mailing list
> 
> SaoPaulo-pm em pm.org
> 
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
> 
> 
> -- 
> "o animal satisfeito dorme". - Guimarães Rosa
> 
> _________________________________________________________________
> Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o Messenger! É GRÁTIS!
> http://www.msn.com.br/emoticonpack

--
André Garcia Carneiro
Developer(Perl/PHP)
Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org



Mais detalhes sobre a lista de discussão SaoPaulo-pm