Introdução à Lógica de Programação Utilizando Perl Thiago Yukio Kikuchi Oliveira [email protected] Lógica de Programação A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica para o desenvolvimento. Então o que é lógica? Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. O que é um algoritmo? Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas. Exemplo de um algoritmo: Faça um algoritmo que mostre como buscar uma garrafa de água na geladeira partindo do sofá da sala. Levantar do sofá; Andar até a porta da cozinha; Andar até a geladeira; Abrir a porta da geladeira; Retirar a garrafa d'água da geladeira; Fechar a porta da geladeira; Andar até o sofá; Sentar-se no sofá; Programas Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador (Perl, Pascal, C, Cobol, Fortran, Java entre outras) e que são interpretados e executados por uma máquina, no caso um computador. Notem que dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real. Linguagem Perl Perl: The Practical Extraction and Report Language Desenvolvida em 1987 por Larry Wall Características: Linguagem script Disponível sob a GPL Perl tira as melhores características de linguagens como C, awk, sed, sh, e BASIC, entre outras. Sua interface de integração com base de dados (DBI) suporta muitos bancos de dados Perl é extensível (+ de 5.000 modulos). Portada para mais de 100 diferentes plataformas Ultilizada para criação de conteúdo dinâmico na Web Larry Wall Um simples programa em Perl Arquivo: exemplo.pl #!/usr/bin/perl # O simbolo "#" indica um comentário no código # Meu primeiro programa em perl # O "\n" ao final indica uma quebra de linha no terminal do linux. print "Olá mundo!\n"; Variáveis Na matemática: X=1 Y=2 Então: X+Y=3 Nos algoritmos, as variáveis podem guardar textos além de números. X=4 X = "Linux" Em Perl, existem 3 tipos de variáveis: - Escalares (sempre começam com o simbolo "$") - "Arrays" (sempre começam com o simbolo "@") - "Hashes" (sempre começam com o simbolo "%") Variaveis do tipo "Escalar" Guardam somente uma informação. Essa informação pode ser um número ou um texto. Identificadas com o símbolo "$" no início. Exemplos: $valor = 10; $nome = "Thiago"; $nome2 = $nome; $frase = "Hoje é dia 14 de Fevereiro"; Declarando Variáveis Declarando uma variavel em Perl: my $[NOME DA VARIAVEL]; Exemplo: my $idade; my $nome; $idade = 11; $nome = “Rafael”; OBS: A declaração de variáveis em perl não é obrigatória, mas é uma boa prática de programação! Usando variáveis no programa Arquivo: exemplo.pl #!/usr/bin/perl # Declarando a variável. my $frase; $frase = "Olá mundo!\n"; print $frase; Exercício 1 "Escreva um algoritmo em Perl com duas variáveis que recebam, respectivamente, o seu nome e a sua idade e escreva o conteúdo das variáveis na tela." Exercício 1 "Escreva um algoritmo em Perl com duas variáveis que recebam, respectivamente, o seu nome e a sua idade e escreva o conteúdo das variáveis na tela." #!/usr/bin/perl # Declarando as variáveis my $nome; my $idade; $nome = "Thiago Yukio Kikuchi Oliveira"; $idade = 25; # Mostrando na tela print $nome; print $idade; Operadores Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Temos três tipos de operadores: Operadores Aritméticos Operadores Relacionais Operadores Lógicos Operadores Aritméticos Os operadores aritméticos são os utilizados para obter resultados numéricos. Além da adição, subtração, multiplicação e divisão, podem utilizar também o operador para exponenciação. Os símbolos para os operadores aritméticos, em Perl, são: Operação Adição Subtração Multiplicação Divisão Exponenciação Símbolo + * / ** Hierarquia das Operações Aritméticas 1 º ( ) Parênteses 2 º Exponenciação 3 º Multiplicação, divisão (o que aparecer primeiro) 4 º + ou – (o que aparecer primeiro) Usando operadores Aritméticos Arquivo: calcula_media.pl #!/usr/bin/perl # Script que calcula a nota média de duas provas. # Declarando as variáveis. my $nota_1; my $nota_2; my $media; $nota_1 = 9; $nota_2 = 7; # Calculando a média. $media = ($nota_1 + $nota_2)/2; print “A média das notas é: $media \n”; Exercício 2 "Escreva um algoritmo em Perl que receba a distância inicial, a distância final, o tempo inicial, o tempo final, calcule a velocidade média e mostre na tela." Lembre-se: Vm = S2 – S1 t2 - t1 Exercício 2 "Escreva um algoritmo em Perl que receba a distância inicial, a distância final, o tempo inicial, o tempo final, calcule a velocidade média e mostre na tela." Lembre-se: Vm = S2 – S1 t2 - t1 #!/usr/bin/perl # Declarando as variáveis. my ($S1, $S2, $T1, $T2, $velocidade_media); $S1 $S2 $T1 $T2 = = = = 0; 350; 0; 5; # Calculando a velocidade média. $velocidade_media = ($S2 - $S1)/($T2 - $T1); print “A velocidade média é: $velocidade_média Km/h \n”; Operadores Relacionais Os operadores relacionais são utilizados para comparar caracteres (texto) e números. Os valores a serem comparados podem ser caracteres ou variáveis. Os símbolos para os operadores relacionais, em Perl, são: Operação Símbolo p/ números Símbolo p/ texto Igual a == eq Diferente de != neq Maior que > Menor que < Maior ou igual a >= Menor ou igual a <= Exemplos: $nota = 6 $nota > 5 (verdadeiro) $nota < 5 (falso) $nome = “thiago” $nome eq “carlos” (falso) $nome eq “thiago” (verdadeiro) Condicionais (Se.. senão/If.. else) Se (condição) Então [ executa instruções] FimSe . Se (condição) Então [ executa instruções] Senão [ executa outra instruções] FimSe SE MEDIA >= 5.0 ENTÃO ALUNO APROVADO SENÃO REPROVADO Algoritmo escrito em Perl Algoritmo #!/usr/bin/perl media = 9 Se (media >= 5) Então Escreva “Aprovado” Senão Escreva “Reprovado” FimSe # Declarando as variáveis. my $media = 9; if ($media >= 5){ print “Aprovado \n”; } else { print “Reprovado \n”; } Exercício 3 "Escreva um algoritmo em Perl que receba dois valores quaisquer, some-os e mostre na tela se a soma deles é maior ou menor que 10." Exercício 3 "Escreva um algoritmo em Perl que receba dois valores quaisquer, some-os e mostre na tela se a soma deles é maior ou menor que 10." #!/usr/bin/perl # Declarando as variáveis my ($valor1, $valor2, $soma); # Atribuindo os valores. $valor1 = 20; $valor2 = 30; # Somando $soma = $valor1 + $valor2; If ($soma > 10) { print “A soma é maior que 10 \n”; } else { print “A soma é menor que 10 \n”; } Operadores Lógicos Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. Os símbolos para os operadores lógicos, em Perl, são: Operação Símbolo E && Ou || Negação ! SE MEDIA >= 5.0 E FALTAS < 3 ENTÃO ALUNO APROVADO Algoritmo escrito em Perl Algoritmo #!/usr/bin/perl media = 9 faltas = 4 Se (media >= 5 e faltas < 3) Então Escreva “Aprovado” Senão Escreva “Reprovado” FimSe # Declarando as variáveis. my $media = 9; my $faltas = 4; if (($media >= 5) && ($faltas < 3)){ print “Aprovado \n”; } else { print “Reprovado \n”; } Exercício 4 "Escreva um algoritmo em Perl que receba o peso e a idade de uma pessoa. Se a pessoa tiver mais de 10 anos ou pesar mais de 50kg escreva que ela pode andar na montanha russa." Exercício 4 "Escreva um algoritmo em Perl que receba o peso e a idade de uma pessoa. Se a pessoa tiver mais de 10 anos ou pesar mais de 50kg escreva que ela pode andar na montanha russa." #!/usr/bin/perl # Declarando as variáveis my ($idade, $peso); # Atribuindo os valores. $idade = 15; $peso = 60; If (($idade > 10) || ($peso > 50)) { print “Você pode andar na montanha russa!\n”; } Estrutura de Laço: Para/For Para (inicio; condição;) [ executa instruções] incremento FimPara Algoritmo contador Para contador de 1 até 5 Escreva “Olá” contador = contador + 1 FimPara Algoritmo escrito em Perl #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador Contador <= 5 Print “Olá!” Contador++ Tela do computador: Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 Contador <= 5 Print “Olá!” Contador++ Tela do computador: Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 Contador <= 5 sim Print “Olá!” Contador++ Tela do computador: Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 Contador <= 5 sim Print “Olá!” Contador++ sim Tela do computador: Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 Contador <= 5 sim Print “Olá!” Contador++ sim 1+1 = 2 Tela do computador: Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 Contador <= 5 sim sim Print “Olá!” Contador++ sim 1+1 = 2 Tela do computador: Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 Contador <= 5 sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim Tela do computador: Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 Contador <= 5 sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 Tela do computador: Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 Contador <= 5 sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 Tela do computador: Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 Contador <= 5 sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 Tela do computador: Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 Contador <= 5 sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim Tela do computador: Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 Contador <= 5 sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 Tela do computador: Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 Contador <= 5 sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 Tela do computador: Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 Contador <= 5 sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 Tela do computador: Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 Contador <= 5 sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim Tela do computador: Ola! Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 Contador <= 5 sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim 4+1 = 5 Tela do computador: Ola! Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 5 Contador <= 5 sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim 4+1 = 5 Tela do computador: Ola! Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 5 Contador <= 5 sim sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim 4+1 = 5 Tela do computador: Ola! Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 5 Contador <= 5 sim sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim 4+1 = 5 sim Tela do computador: Ola! Ola! Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 5 Contador <= 5 sim sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim 4+1 = 5 sim 5+1 = 6 Tela do computador: Ola! Ola! Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 5 6 Contador <= 5 sim sim sim sim sim Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim 4+1 = 5 sim 5+1 = 6 Tela do computador: Ola! Ola! Ola! Ola! Ola! Estrutura de Laço: Para/For #!/usr/bin/perl # Declarando as variáveis. my $contador; for ($contador=1; $contador<=5;){ print “Olá \n”; $contador = $contador + 1; } Contador 1 2 3 4 5 6 Contador <= 5 sim sim sim sim sim não Print “Olá!” Contador++ sim 1+1 = 2 sim 2+1 = 3 sim 3+1 = 4 sim 4+1 = 5 sim 5+1 = 6 Tela do computador: Ola! Ola! Ola! Ola! Ola! Exercício 5 "Escreva um algoritmo em Perl que receba o seu nome e o escreva 20 vezes na tela." Exercício 5 "Escreva um algoritmo em Perl que receba o seu nome e o escreva 20 vezes na tela." #!/usr/bin/perl # Declarando as variáveis my $contador; my $nome; # Atribuindo os valores. $nome = “Thiago”; for ($contador = 1; $contador <= 20;) { print “$nome \n”; $contador++; } Exercício 6 "Escreva um algoritmo em Perl que escreva todos os números de 1 a 100 na tela." Exercício 6 "Escreva um algoritmo em Perl que escreva todos os números de 1 a 100 na tela." #!/usr/bin/perl # Declarando as variáveis my $contador; for ($contador = 1; $contador <= 100; $contador++) { print “$contador \n”; } Estrutura de Laço: Enquanto/While Enquanto (condição) [ executa instruções] FimEnquanto Algoritmo escrito em Perl Algoritmo #!/usr/bin/perl contador = 10 Enquanto (contador > 2) Escreva “Olá” contador = contador - 1 FimEnquanto # Declarando as variáveis. my $contador = 10; while ($contador > 1){ print “Olá \n”; $contador = $contador - 1; } Variaveis do tipo “Array” Variáveis responsáveis por guardar uma lista (vetor) de informações. Exemplo: @frutas = (“abacaxi”, “banana”, “pêra”); Vetor: frutas 0 1 2 abacaxi banana pêra Para acessar um valor específico na lista devemos dar o nome da variável seguido pelo índice do vetor: print $frutas[0]; # Escreve “abacaxi” na tela print $frutas[2]; # Escreve “pêra” na tela print $frutas[1]; # Escreve “banana” na tela print @frutas; # Escreve “abacaxibananapêra” na tela Exercício 7 "Escreva um algoritmo em Perl que receba 4 nomes em um array e escreva-os na tela um a um." Exercício 7 "Escreva um algoritmo em Perl que receba 4 nomes em um array e escreva-os na tela um a um." #!/usr/bin/perl # Declarando as variáveis my @nomes = (“Maria”, “João”, “José”, “Pedro”); print print print print “$nomes[0] “$nomes[1] “$nomes[2] “$nomes[3] \n”; \n”; \n”; \n”; Exercício 7 "Escreva um algoritmo em Perl que receba 4 nomes em um array e escreva-os na tela um a um." #!/usr/bin/perl # Declarando as variáveis my @nomes = (“Maria”, “João”, “José”, “Pedro”); print print print print “$nomes[0] “$nomes[1] “$nomes[2] “$nomes[3] \n”; \n”; \n”; \n”; #!/usr/bin/perl # Declarando as variáveis my $contador; my @nomes = (“Maria”, “João”, “José”, “Pedro”); for ($contador = 0; $contador <=3 ; $contador++) { print “$nomes[$contador] \n”; } Variaveis do tipo “Hash” Também conhecido como Array Associativo. Também guardar uma lista, mas utiliza texto como índice ao invés de números. Exemplo: %profissao = ( “thiago” => “estudante”, “joão” => “médico”, “josé” => “advogado” ); Vetor: profissão thiago estudante joão médico josé advogado Para acessar um valor específico na lista devemos dar o nome da variável seguido pelo índice textual entre “{ }” do vetor: print $profissao{“thiago”}; # Escreve “estudante” na tela print $profissao{“joão”}; # Escreve “médico” na tela print $profissao{“josé”}; # Escreve “advogado” na tela Exercício 8 "Escreva um algoritmo em Perl que receba o nome de 3 colegas do seu lado e sua respectiva idade. Armazene essas informações em um hash usando o nome como índice. Mostre a idade de cada um na tela." Exercício 8 "Escreva um algoritmo em Perl que receba o nome de 3 colegas do seu lado e sua respectiva idade. Armazene essas informações em um hash usando o nome como índice. Mostre a idade de cada um na tela." #!/usr/bin/perl # Declarando as variáveis my %colegas = ( “Maria” => 20, “João” => 23, “José” => 30 ); print “$colegas{“Maria”} \n”; print “$colegas{“João”} \n”; print “$colegas{“José”} \n”;