[SP-pm] Duvida com Hashes

Frederico Recsky frederico at imovlr.com
Mon Apr 19 10:03:06 PDT 2010


mmm,

Vamos mudar esse exemplo um pouco

-1 use Data::Dumper;
0
1    my(@words, %count, $word);
2
3    chomp(@words = <STDIN>);
4    foreach $word (@words) {
5    $count{$word} += 1;
6    }
7
8    print Dumper \%count;
9
10    foreach $word (keys %count) {
11    print "$word was seen $count{$word} times.\n";
12    }
13
14    print Dumper \%count;


Se voce colocar o print Dumper dentro do loop vai ver passo a passo, e
vai ganhar o bonus por efeito artistico :P.

[]'s

Frederico

2010/4/19 "Flávio R. Lopes" <flavio.lopes at links.inf.br>:
> Opa!...e aí Neilson?
>
> Humm...deixa ver se entendi.
> Então a Hash é:
>
> _*CONSTRUÍDA*_ nas linhas de 3 a 4
>
> E as REPETIÇÕES DAS PALAVRAS _*CONTADAS*_ nas linhas de 6 a 8 ???
>
>
> Neilson Lima escreveu:
>>
>>
>> 2010/4/18 "Flávio R. Lopes" <flavio.lopes at links.inf.br
>> <mailto:flavio.lopes at links.inf.br>>
>>
>>    Pessoal, no livro que estou lendo, mais especificamente no
>>    capítulo que trata de Hashes, tem um exercício proposto em que o
>>    autor pede para elaborar um programa em que o usuário digita
>>    palavras (nomes, por exemplo) e o sistema tem que contar quantas
>>    vezes foram digitados as mesmas palavras.
>>
>>    Abaixo segue a solução apresentada pelo autor:
>>
>>    1    my(@words, %count, $word);        2    chomp(@words = <STDIN>);
>>    3    foreach $word (@words) {
>>    4    $count{$word} += 1;             5    }
>>    6    foreach $word (keys %count) {
>>    7      print "$word was seen $count{$word} times.\n";
>>    8    }
>>
>>
>>    Nas linhas de 3 a 5 é "armazenado" o número de vezes que uma
>>    palavra aparece, ou seja, é feita uma contagem, certo?
>>
>>
>> Isso mesmo! a hash count tem a chave como sendo a(s) palavra(s) que
>> armazena o numero de vezes que ela apareceu.
>>
>>
>>    Agora é aqui que não entendi direito (nas linhas de 6 a
>>    8)....especificamente no trecho *(keys %count)* O que fiquei em
>>    dúvida se é aqui que é "montado" o Hash, ou seja, os valores são
>>    "captados" nas linhas de 3 a 5 e depois "transportados" ou
>>    "armazenados" no Hash *%count* da linha 6 ??, pois os valores
>>    digitados pelo usuário são armazenados no Array @words, contados
>>    nas linhas de 3 a 6 e "armazenados" no hash *%count* ???
>>
>>
>> A hash é construída na linha 4, quando e feita a atribuição. na linha 6 a
>> 8 $word é a chave(palavra) e $count{$word} o numero de vezes que apalavra
>> aparece. Isso quer dizer que depois da linha 2, é feita uma varredura, em
>> @words, criando a hash, depois disse é feita outra varredura, %count, para
>> imprir os resultado.
>>
>>
>>
>>    Não sei se fui claro, mas como é o raciocínio disto?...Vcs poderia
>>    me ajudar a ler e entender este código?
>>
>>    abraço,
>>    Flávio
>>
>>    _______________________________________________
>>    SaoPaulo-pm mailing list
>>    SaoPaulo-pm at pm.org <mailto:SaoPaulo-pm at pm.org>
>>    http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>>
>>
>>
>> --
>> Atenciosamente,
>> Neilson P. Lima
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> 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
>


More information about the SaoPaulo-pm mailing list