User Tools

Site Tools


spln2016:diario2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
spln2016:diario2 [2016/02/24 17:23] – [Diário de Bordo - Aula 2 - 2016-02-22] ambsspln2016:diario2 [2016/02/24 17:25] (current) ambs
Line 25: Line 25:
 === Estruturas de dados em Perl === === Estruturas de dados em Perl ===
  
-Declaração de lista (referência global à lista): `@a` +Declaração de lista (referência global à lista): ''@a'' 
-Aceder ao elemento na posição i da lista a: `$a[$i]`+Aceder ao elemento na posição i da lista a: ''$a[$i]''
  
-Declaração de array associativo (hash): `%a` +Declaração de array associativo (hash): ''%a'' 
-Aceder ao valor da chave k da lista a: `$a{$k}`+Aceder ao valor da chave k da lista a: ''$a{$k}''
  
-Acesso ao conteúdo da posição dada pelas chaves k1 e k2 de um array associativo (hash) bidimensional: `$a{$k1}{$k2}`+Acesso ao conteúdo da posição dada pelas chaves k1 e k2 de um array associativo (hash) bidimensional: ''$a{$k1}{$k2}''
  
-=== `$&carácter especial de matching no Perl ===+=== ''$&'' carácter especial de matching no Perl ===
  
 Na aula exploramos as funcionalidades da variável `$&` como acesso aos tokens que compõem uma dada linha que queremos tratar. Na aula exploramos as funcionalidades da variável `$&` como acesso aos tokens que compõem uma dada linha que queremos tratar.
  
     #!/usr/bin/perl     #!/usr/bin/perl
 +    
     while(/(\w+) (\w+)/) {     while(/(\w+) (\w+)/) {
       print "$1 $2\n";       print "$1 $2\n";
Line 46: Line 46:
  
 === Lei de Zipf === === Lei de Zipf ===
 +
 É uma lei empírica que rege à dimensão, importância ou frequência dos elementos de uma lista ordenada. É uma lei empírica que rege à dimensão, importância ou frequência dos elementos de uma lista ordenada.
 Conclusões que retiramos na aula foram que existe uma relação entre o aumento de palavras comuns que surgem num determinado texto com a dimensão do mesmo. Conclusões que retiramos na aula foram que existe uma relação entre o aumento de palavras comuns que surgem num determinado texto com a dimensão do mesmo.
Line 54: Line 55:
  
     #!/usr/bin/perl     #!/usr/bin/perl
 +    
     use warnings;     use warnings;
     use strict;     use strict;
     use utf8::all;     use utf8::all;
 +    
     my (%oco);     my (%oco);
     my ($c);     my ($c);
 +    
     while (<>) {     while (<>) {
     next if /</; #salta linhas com "<"     next if /</; #salta linhas com "<"
Line 75: Line 76:
  
     #!/usr/bin/perl     #!/usr/bin/perl
 +    
     use warnings;     use warnings;
     use strict;     use strict;
     use utf8::all;     use utf8::all;
 +    
     my (%oco);     my (%oco);
     my ($c);     my ($c);
 +    
     while (<>) {     while (<>) {
     next if /</; #salta linhas com "<"     next if /</; #salta linhas com "<"
Line 97: Line 98:
  
     #!/usr/bin/perl     #!/usr/bin/perl
 +    
     use warnings;     use warnings;
     use strict;     use strict;
     use utf8::all;     use utf8::all;
 +    
     my (%oco);     my (%oco);
     my ($c);     my ($c);
 +    
     while (<>) {     while (<>) {
       next if /</; # salta linhas começadas por "<", poder-se-ia escrever "if (/^</){ next; }"       next if /</; # salta linhas começadas por "<", poder-se-ia escrever "if (/^</){ next; }"
Line 114: Line 115:
     # $a e $b são definidos internamente pelo Perl quando definimos critérios de comparação,     # $a e $b são definidos internamente pelo Perl quando definimos critérios de comparação,
     # pelo que se deve evitar declarar variáveis com esses nomes     # pelo que se deve evitar declarar variáveis com esses nomes
 +    
     foreach my $p (sort{$oco{$a} <=> $oco{$b}} keys %oco){     foreach my $p (sort{$oco{$a} <=> $oco{$b}} keys %oco){
       print "$p: $oco{$p}\n";       print "$p: $oco{$p}\n";
Line 124: Line 125:
     use strict;     use strict;
     use utf8::all;     use utf8::all;
 +    
     my (%oco);     my (%oco);
 +    
     while (<>) {     while (<>) {
       next if /^</; # ou if (/^</) {next;}       next if /^</; # ou if (/^</) {next;}
 +    
         while( /\w+/g ) {         while( /\w+/g ) {
           $oco{$&}++;           $oco{$&}++;
         }         }
     }     }
 +    
     foreach my $p (sort{ mycompare($a, $b) } keys %oco) {     foreach my $p (sort{ mycompare($a, $b) } keys %oco) {
       print "$p: $oco{$p}\n";       print "$p: $oco{$p}\n";
     }     }
 +    
     # Criação de uma função     # Criação de uma função
     # Esta função é usada como critério de comparação no sort     # Esta função é usada como critério de comparação no sort
Line 157: Line 158:
  
     #!/usr/bin/perl     #!/usr/bin/perl
 +    
     use warnings;     use warnings;
     use strict;     use strict;
     use utf8::all;     use utf8::all;
     use Data::Dumper; # Este módulo permite o print imediato de estruturas de dados     use Data::Dumper; # Este módulo permite o print imediato de estruturas de dados
 +    
     my (%oco);     my (%oco);
     my ($c);     my ($c);
     my $pm = qr{[[:upper:]]\w+}; # qr{..} - tudo o que vem dentro de chavetas é tratado como expressão regular     my $pm = qr{[[:upper:]]\w+}; # qr{..} - tudo o que vem dentro de chavetas é tratado como expressão regular
 +    
     my $prep = qr{d[eoa]s?};     my $prep = qr{d[eoa]s?};
     my $np = qr{$pm( ($prep )?$pm)*};     my $np = qr{$pm( ($prep )?$pm)*};
 +    
     while (<>) {     while (<>) {
       next if /^</;       next if /^</;
Line 177: Line 178:
       }       }
     }     }
 +    
     print Dumper(\%oco);     print Dumper(\%oco);
 +    
     # Quando em Perl queremos que o texto não seja processado podemos usar a marca __END__     # Quando em Perl queremos que o texto não seja processado podemos usar a marca __END__
     __END__     __END__
Line 188: Line 189:
 Neste script estuda-se para uma dada palavra o número de ocorrências dessa mesma palavra com capitalizações diferentes. Correndo o comando 'perl ctcp.pl cetemGordo.txt > out.txt' obtemos no ficheiro out.txt o seguite: Neste script estuda-se para uma dada palavra o número de ocorrências dessa mesma palavra com capitalizações diferentes. Correndo o comando 'perl ctcp.pl cetemGordo.txt > out.txt' obtemos no ficheiro out.txt o seguite:
  
-'universidades' => {+    'universidades' => {
                    'universidades' => 31,                    'universidades' => 31,
                    'Universidades' => 5                    'Universidades' => 5
-'anti-sida' => {+    'anti-sida' => {
                'anti-sida' => 2                'anti-sida' => 2
-'livros-sida' => {+    'livros-sida' => {
       (...)       (...)
-'luminosidade' => {+    'luminosidade' => {
                   'luminosidade' => 1                   'luminosidade' => 1
-'curiosidades' => {+    'curiosidades' => {
                   'curiosidades' => 2                   'curiosidades' => 2
-'diversidade' => {+    'diversidade' => {
                  'Diversidade' => 1,                  'Diversidade' => 1,
                  'diversidade' => 11                  'diversidade' => 11
-'subsidariedade' => {+    'subsidariedade' => {
                     'Subsidariedade' => 1,                     'Subsidariedade' => 1,
                     'subsidariedade' => 2                     'subsidariedade' => 2
  
spln2016/diario2.1456330990.txt.gz · Last modified: 2016/02/24 17:23 by ambs