[SP-pm] Duvida com Hashes

Neilson Lima neilsonlima at gmail.com
Sun Apr 18 19:50:52 PDT 2010


2010/4/18 "Flávio R. Lopes" <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
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Atenciosamente,
Neilson P. Lima
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100418/f35d81c5/attachment.html>


More information about the SaoPaulo-pm mailing list