spln2016:diario2
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
spln2016:diario2 [2016/02/24 17:18] – created ambs | spln2016:diario2 [2016/02/24 17: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 17:18 by ambs