spln2016:diario2
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| spln2016:diario2 [2016/02/24 16:18] – created ambs | spln2016:diario2 [2016/02/24 16:25] (current) – ambs | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Sumário | + | ====== SPLN ====== |
| - | - Revisões da aula anterior; | + | |
| - | - Estruturas de dados em Perl: arrays, arrays associativos (hashes); | + | |
| - | - Elemento de matching no perl &; | + | |
| - | - Lei de Zipf; | + | |
| - | - Scripts para análise do ficheiro cetemGordo.txt: | + | |
| - | 1. Contar ocorrências de palavras (script_1.pl); | + | |
| - | 2. Ordenar palavras; | + | |
| - | 3. Critério de comparação de ocorrências; | + | |
| - | 4. Funções em perl; | + | |
| - | 5. " | + | |
| - | - Registo e Visita guiada ao GitLab; | + | |
| + | ==== Diário de Bordo - Aula 2 - 2016-02-22 ==== | ||
| - | Diário | + | === Sumário === |
| + | |||
| + | * Revisões da aula anterior; | ||
| + | * Estruturas de dados em Perl: arrays, arrays associativos (hashes); | ||
| + | * Elemento de matching no perl ('' | ||
| + | * Lei de Zipf; | ||
| + | * Scripts para análise do ficheiro cetemGordo.txt: | ||
| + | * Contar ocorrências de palavras (script_1.pl); | ||
| + | * Ordenar palavras; | ||
| + | * Critério de comparação de ocorrências; | ||
| + | * Funções em perl; | ||
| + | * Calculadora de Tabela de Capitalização Preferencial", | ||
| + | * Registo e Visita guiada ao GitLab; | ||
| + | |||
| + | ==== Diário | ||
| === Revisões === | === Revisões === | ||
| + | |||
| Para introduzir a aula, começamos por rever a script criada na semana anterior, que conta o número de palavras proveniente do STDIN. | Para introduzir a aula, começamos por rever a script criada na semana anterior, que conta o número de palavras proveniente do STDIN. | ||
| === 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): |
| - | Aceder ao elemento na posição i da lista a: $a[i] | + | Aceder ao elemento na posição i da lista a: '' |
| - | Declaração de array associativo (hash): %a | + | Declaração de array associativo (hash): |
| - | Aceder ao valor da chave k da lista a: $a{k} | + | Aceder ao valor da chave k da lista a: '' |
| - | Acesso ao conteúdo da posição dada pelas chaves k1 e k2 de um array associativo (hash) bidimensional: | + | Acesso ao conteúdo da posição dada pelas chaves k1 e k2 de um array associativo (hash) bidimensional: |
| - | === & caratér | + | === '' |
| - | Na aula exploramos as funcionalidades do caratér & 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. |
| + | # | ||
| + | | ||
| while(/ | while(/ | ||
| print "$1 $2\n"; | print "$1 $2\n"; | ||
| Line 40: | 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 48: | Line 55: | ||
| # | # | ||
| + | | ||
| 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 69: | Line 76: | ||
| # | # | ||
| + | | ||
| 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 91: | Line 98: | ||
| # | # | ||
| + | | ||
| 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 "<", | next if /</; # salta linhas começadas por "<", | ||
| Line 108: | 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 118: | 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, | foreach my $p (sort{ mycompare($a, | ||
| 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 151: | Line 158: | ||
| # | # | ||
| + | | ||
| use warnings; | use warnings; | ||
| use strict; | use strict; | ||
| use utf8::all; | use utf8::all; | ||
| use Data:: | use Data:: | ||
| + | | ||
| my (%oco); | my (%oco); | ||
| my ($c); | my ($c); | ||
| my $pm = qr{[[: | my $pm = qr{[[: | ||
| + | | ||
| 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 171: | 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 182: | 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' | 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' | ||
| - | ' | + | |
| ' | ' | ||
| ' | ' | ||
| - | ' | + | |
| ' | ' | ||
| - | ' | + | |
| (...) | (...) | ||
| - | ' | + | |
| ' | ' | ||
| - | ' | + | |
| ' | ' | ||
| - | ' | + | |
| ' | ' | ||
| ' | ' | ||
| - | ' | + | |
| ' | ' | ||
| ' | ' | ||
spln2016/diario2.1456330683.txt.gz · Last modified: 2016/02/24 16:18 by ambs