Upload
misae
View
28
Download
0
Embed Size (px)
DESCRIPTION
Introdução à programaçao em PERL. http://www:activestate.com/Products/ActivePerl/. Levi Lúcio, Vasco Amaral, Programação em PERL, FCA-Editora de Informática. Objectivos. ler o texto de um ficheiro linha a linha, e escrever num ficheiro linha a linha. processar o texto:. - PowerPoint PPT Presentation
Citation preview
Introdução à programaçao em PERL
http://www:activestate.com/Products/ActivePerl/
Levi Lúcio, Vasco Amaral, Programação em PERL,
FCA-Editora de Informática
Objectivos
• ler o texto de um ficheiro linha a linha, e escrever num ficheiro linha a linha.
• processar o texto:
tokenizer (quebrar o texto em palavras) contagem de palavras, frequências, ...
bigramas, trigramas ... calcular similaridade entre palavras.
Estrutura do Programa 1
• Escreve: “Cómo te chamas?”
• Lê o nome escrito pelo usuario
• Escreve o nome que foi lido
Instruções do Programa 1
• print imprime texto (no terminal, num ficheiro...)
• <STDIN> lê um conjunto de caracteres introduzidos pelo teclado no terminal.
• $x=<STDIN> lê um conjunto de caracteres do teclado e os coloca na variável $x.
• chop $x corta o caracter de nova linha (\n) que se encontra no valor de $x.
Que é um programa?
• Um programa é um conjunto de instruçoes (print, assignaçao, leitura, ...)
• As instruçoes simples sao terminadas por ‘;’ (ponto e vírgula)
• Quando corremos o programa, as instruçoes são executadas sequêncialmente.
Tipos de entidades de um programa
• escalares: números, cadeias de caracteres
• instruçoes: simples: print, =, chop...complexas: if, while...
• listas
• tabelas (hashes)
• Descritores Input/Output: STDIN, STDOUT, arquivos de entrada, arq. de saída...
Tipos de variáveis
• escalares: $var
• listas: @var
• tabelas: %var
Estrutura do tokenizer
• Abre um ficheiro texto (.txt)
• Lê linha a linha o texto
• Escreve em um outro ficheiro as palavras do texto (cada palavra em uma linha)
Instruções do tokenizer • open (Arquivo, “< microcorpus.txt”)Abre um ficheiro para leitura.
• while ($linha = <Arquivo>) { instrução1; instrução2; ... } Lê uma a uma as linhas do ficheiro, e cada linha é colocada na variável $linha. Após a leitura de uma linha, executa-se o bloco de instruções (entre chaves). Isto é repetido até chegar á última linha do ficheiro
Instruções do tokenizer
• @pals = split (“ ”, $linha);Divide-se a cadeia $linha cada vez que aparece um espaço em branco. As sucessivas divisões são colocadas na lista @pals.
• foreach $pal (@pals) { instrução1; instrução2... } Uma vez pegado em um elemento da lista @pals e colocado na variável $pal, executam-se as instruções do bloco. Isto é repetido com todos os elementos da lista.
Instruções iterativas
foreach $var @lista { bloco } O bloco de instruções será executado um número de vezes correspondente ao número de elementos na lista, sendo que para cada iteração uma variável conterá o valor do elemento da lista.
while (expressão) { bloco } O bloco será executado até que a expressão se torne falsa:
while ($cont < 5) { print “$cont \n”; $cont++;}
A instrução IF
if (expressão) { bloco do if }else { bloco do else }Se a expressão é verdade, executam-se as instruções contidas no bloco do if. Caso contrário, executa-se o bloco de instruções do else.
Expressões falsas:1 > 2 ; 0 ; “”, 1-1
Expressões verdadeiras:1 < 2 ; os números excepto o 0; as strings excepto “”
Pattern-Matching
• if ($line =~ /Maria/) { print $line;}Se a subcadeia “Maria” se encontra dentro da cadeia $line, então afichamos a cadeia $line.
•$line =~ s/\,/ \,/;Se aparece o caracter “,” na cadeia $line, então substituimos esse caracter pelos dois caracteres “ ,” (i.e. introduzimos um espaço antes da vírgula).
Estrutura do “contagem.pl”
• Abre um ficheiro com tokens
• Lê linha a linha o ficheiro (cada linha é um token) : - conta as ocurrências de cada token, - conta as ocurrências da subcadeia “livr”,
- conta as ocurrências de vírgulas e pontos.
• Escreve em um ficheiro os resultados das contagens.
Instruções do contagem.pl
while ($token = <Arquivo>) { $contar{$token}++;} Lê-se linha a linha o arquivo e construe-se uma tabela: %contar. Cada chave da tabela é um token. O valor para cada chave é o número de vezes que o token é lido:
$contar{“livro”} = 2$contar{“Maria”} = 3$contar{“,”} = 8
Listas e Tabelas
@notas = (“pedro”, 10, “maria”, 18)
$notas[0] = “pedro”$notas[1] = 10$notas[2] = “maria” $notas[3] = 18
%notas = (“pedro” => 10, “maria” => 18)
$notas{“pedro”} = 10$notas{“maria”} = 18