Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução à Programação Perl: Estruturas de Controle e Manipulação de Strings, Notas de estudo de Informática

Neste documento, aprenda a controlar o fluxo de execução de seus programas perl usando estruturas de controle como foreach, for, while e until. Além disso, exploraremos as poderosas facilidades para manipulação de strings na perl, incluindo expressões regulares. Aprenda a comparar strings, utilizar operadores lógicos e condicionais, e muito mais.

Tipologia: Notas de estudo

2013

Compartilhado em 27/08/2013

Garoto
Garoto 🇪🇸

4.6

(121)

1 / 8

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
@linhas = <INFO>;
Le o arquivo referênciado pelo apelido ( filehandle ) INFO e armazena as linhas no
array @linhas. Note que a expressão <INFO> le todos os registro do arquivo numa
única vez.Isso por que a leituta está dentro de um contexto de variável array. Se
@linhas for trocada por uma variável escalar $linhas só poderemos ler uma linha por
vez. Nos dois casos cada linha e armazenada completamente e encerrada com um
caracter de nova linha \n.
Exercício
Modificar o programa de exemplo (acima) de modo que cala linha impressa seja
precedida do simbolo #. Você tem que incluir uma linha e modificar outra linha ( esta é
a dica ;) ). Use a variável $" . Coisas estranhas podem acontecer, você pode encontra
ajuda usando a opção -w mencioda no tópico executando um programa.
7 - Controle de estrutura
Muitas possibilidades interesantes surgem quando introduzimos controles de estrutura e
loops. A Perl suporta vários tipos diferentes de controle de estrutura que são melhores
que os controles do C, mas são muito similar as estruturas do Pascal. Agora vamos
discutir um pouco sobre estas estruturas:
7.1 foreach
Para ler todas a linhas de um array ou outro tipo de estrutura de lista a Perl usa a
estrutura foreach.
@frutas = ("banana", "goiaba", "mamao");
foreach $maisfruta (@frutas)
{
print "$maisfruta\n";
print "Delicia...delicia ...\n";
}
As ações que devem ser repetidas várias vezes estão entre chaves. Na primeira vez da
execução do bloco a variável $maisfruta recebe o valor do primeiro item de @frutas. Na
próxima vez ela recebe o valor do segundo item de @frutas e este loop repete-se até o
fim de @frutas, ou seja, até ler todos os itens de @frutas. Se @frutas estiver vazia
quando iniciar o loop o bloco de ações nunca será executado.
7.2 Testes
A próxima estrutura é utilizada para testar se uma condição é verdadeira ou falsa. Na
Perl qualquer valor diferente de zero e qualquer string que não esteja vazia é
considerada verdadeira. O número zero, o zero dentro de uma string e strings vazias são
considerados falso. Vejamos alguns exemplos com números e strings:
$a = = $b # testa se $a é numericamente igual a $b, atenção NÃO use o operador =
$a != $b # testa se $a é numericamente diferente de $b
$a eq $b # testa se a string $a é igual a $b
$a ne $b # testa se a string $a é diferente de $b
pf3
pf4
pf5
pf8

Pré-visualização parcial do texto

Baixe Introdução à Programação Perl: Estruturas de Controle e Manipulação de Strings e outras Notas de estudo em PDF para Informática, somente na Docsity!

@linhas = ;

Le o arquivo referênciado pelo apelido ( filehandle ) INFO e armazena as linhas no array @linhas. Note que a expressão le todos os registro do arquivo numa única vez.Isso por que a leituta está dentro de um contexto de variável array. Se @linhas for trocada por uma variável escalar $linhas só poderemos ler uma linha por vez. Nos dois casos cada linha e armazenada completamente e encerrada com um caracter de nova linha \n.

Exercício

Modificar o programa de exemplo (acima) de modo que cala linha impressa seja precedida do simbolo #. Você tem que incluir uma linha e modificar outra linha ( esta é a dica ;) ). Use a variável $". Coisas estranhas podem acontecer, você pode encontra ajuda usando a opção -w mencioda no tópico executando um programa.

7 - Controle de estrutura

Muitas possibilidades interesantes surgem quando introduzimos controles de estrutura e loops. A Perl suporta vários tipos diferentes de controle de estrutura que são melhores que os controles do C, mas são muito similar as estruturas do Pascal. Agora vamos discutir um pouco sobre estas estruturas:

7.1 foreach Para ler todas a linhas de um array ou outro tipo de estrutura de lista a Perl usa a estrutura foreach.

@frutas = ("banana", "goiaba", "mamao"); foreach $maisfruta (@frutas) { print "$maisfruta\n"; print "Delicia...delicia ...\n"; }

As ações que devem ser repetidas várias vezes estão entre chaves. Na primeira vez da execução do bloco a variável $maisfruta recebe o valor do primeiro item de @frutas. Na próxima vez ela recebe o valor do segundo item de @frutas e este loop repete-se até o fim de @frutas, ou seja, até ler todos os itens de @frutas. Se @frutas estiver vazia quando iniciar o loop o bloco de ações nunca será executado.

7.2 Testes A próxima estrutura é utilizada para testar se uma condição é verdadeira ou falsa. Na Perl qualquer valor diferente de zero e qualquer string que não esteja vazia é considerada verdadeira. O número zero, o zero dentro de uma string e strings vazias são considerados falso. Vejamos alguns exemplos com números e strings:

$a = = $b # testa se $a é numericamente igual a $b, atenção NÃO use o operador = $a != $b # testa se $a é numericamente diferente de $b $a eq $b # testa se a string $a é igual a $b $a ne $b # testa se a string $a é diferente de $b

Podemos usar o "e" lógico, "ou" lógico e o "não" lógico:

($a && $b) # $a e $b são verdadeiros? ($a || $b) # $a ou $b são verdadeiro? !($a) # $a é falso?

7.3 for A estrutura for da Perl é similar a estrutura for do C.

for (inicializacao; teste; inclemento) { primeira ação segunda ação etc }

Primeiro para todo tratamento a inicialização é executada. Depois enquanto o teste for verdadeiro o bloco de ações é executado. Após a execução do bloco o inclemento é executado. Vejamos um exemplo que imprime os número de 0 a 9:

for ($i = 0; $i < 10; ++$i) { print "$i\n"; }

7.4 while e until Vejamos um programa que le algumas entradas do teclado e não continua enquanto a senha não for correta:

#!/usr/local/bin/perl

print "Senha?"; # pergunta pela senha de entrada $a = ; # recebe a entrada chop $a; # remove a nova linha (\n) do final da entrada while ($a ne "alexandra") # enquanto a entrada estiver errada { print "Senha invalida. Tente novamente. Senha?"; # pergunta novamente $a = ; # recebe a entrada novamente chop $a; # retira a nova linha (\n) novamente }

O bloco de ações é executa enquanto a entrada não for verdadeira. A estrutura while é muito simples, mas esta é a oportunidade para notarmos algumas coisas. Primeiro, podemos receber uma entrada do teclado quando abrimos primeiramente o arquivo. Segundo, quando a senha é digitada $a recebe o valor incluindo uma nova linha (\n) no final. A função chop remove o último caractere de uma string, neste caso a nova linha (\n).

Lembre-se uma string vazia é considerada falsa.

É possivel colocar várias alternativas com operadores condicionais:

if (!$a) { print "A string está vazia ...\n"; } elsif (length($a) = = 1) { print "A string tem um caractere...\n"; } elsif (length($a) = = 2) { print "A string tem dois caracteres...\n"; } else { print "A string tem vários caracteres...\n"; }

Note que elsif NÃO tem o "e".

8.1 - Exercícios Localize um arquivo grande que contenha texto e brancos. No exercício anterior você imprimiu o arquivo de senhas com as linhas numeradas. Altere o programa de forma que ele trabalhe com arquivos de texto. Agora altere o programa novamente de forma que ele não imprima nem conte as linhas em branco. Lembre-se que quando uma linha é lida, automaticamente é incluido um caractere de nova linha ao final da linha lida.

9 -String

Uma das propriedades mais utilizadas da Perl ( se não a mais utilizada) são as poderosas facilidades para manipulação de string. Esta propriedade é conhecida como expressões regulares (RE) que é copiada de muitas das ferramentas do UNIX.

9.1 Expressões regulares (RE) Uma expressão regular fica dentro de barras ( /RE/ ), e comparação é feita com o operador =~. A expressão abaixo é verdadeira se a string " ola " aparecer na variável $sentenca.

$sentenca =~ /ola/

As expressões regulares (RE) são case sensitive , ou seja diferenciam maiusculas de minusculas, a expressão acima seria falsa se:

$sentenca = "Ola meus amigos"

por que o "O" de ola está em maiusculo.

O operador != é utilizado para a negação da RE. Veja o exemplo abaixo

$sentenca != /ola/

é verdadeiro por que a string ola não aparece na sentença.

9.2 A variável especial $_ Nos podemos usar a condicional da seguinte forma

if ($sentenca =~ /casa/) { print "Nos estamos falando da linda casa...\n"; }

a mensagem será impressa se a string casa estiver na variável $sentenca , veja:

$sentenca = "A linda casa de campo"; $sentenca = "O casa rao da avenida das palmeiras"; $sentenca = "O casa co de vento";

logo, no nosso exemplo a mensagem seria impressa em qualquer um dos casos.

Mas frequentemente nós comparamos a sentença com a variável especial $_, que é escalar. Se nós fizermos isso, poderemos desconsiderar os operadores de igualdade ( =~ ) e diferença ( != ) e escrever a sentença como segue abaixo:

if (/casa/) { print "Nos estamos falando da linda casa...\n"; }

A variável $_ é o padrão ( default ) para muitas operações da Perl e consequente você vai encontrar este tipo de comparação com muita freqüência.

Bem, quando eu estava iniciando meus estudos da Perl, tive dificuldades para entender o funcionamento da variável $_ , então vou montar um outro exemplo para os que tiverem dificuldades como eu tive.

$_ é como uma copia da última operação de atribuição, então se:

$teste = "ola";

e se fizermos:

print $_;

o resultado sera:

Neste ponto você já tem condições de pular para o exercício e faze-lo, o resto são referências.

Uma barra vertical | representa um ou e parentese ( ... ) são usados para agrupamento de strings:

frank|ned # frank ou ned (tr|br)incar # tr incar ou br incar (da)+ # da ou dada ou dadada ou ...

Mais caracteres especiais:

\n # nova linha \t # um tab \w # qualquer palavra alfanumérica - semelhante a [a-zA-Z0-9_] \W # qualquer palavra sem letras ou números - semelhante a [^a-zA-Z0-9_] \d # qualquer dígito - semelhate a [0-9] \D # NÃO dígitos - semelhante a [^0-9] \s # qualquer caractere de espaço: espaço, tab, nona linha, etc \S # qualquer caractere diferente de espaço \b # qualquer palavra dentro do limite, ou seja fora de [ ] \B # qualquer palafra fora do limite

Alguns caracteres são um caso peculiar quando trata-se expressões regulares, se você precisar usa-los devem ser precedidod de uma barra invertida:

| # barra vertical [ # abertura de colchete ) # fechamento de parentese * # asterisco \ ^ # símbolo de circunflexo @ # símbolo de arroba / # barra \ # barra invertida

9.4 Alguns exemplos de RE

9.5 Exercícios

Referência :

 http://agora.leeds.ac.uk/Perl/start.html  Learning Perl (ISBN 1-56592-042-2)  Programming Perl (ISBN 1-56592-149-6)  Perl 5 Desktop Referenc (ISBN 1-56592-187-9)  Teach Yourself CGI programming with Perl 5 in a week (ISBN 1-57521-196-3)  Perl 5 quick reference (ISBN 85-352-0144-0)