Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro [email protected]...
Transcript of Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro [email protected]...
![Page 1: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/1.jpg)
Introdução a Algoritmos e Estruturas de Dados
Sandro Carvalho Izidoro
CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL
![Page 2: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/2.jpg)
Apresentação
Definição Variáveis Estrutura sequencial Estrutura condicional Estrutura de repetição Procedimentos e funções Vetor e Matriz
Sandro Carvalho Izidoro
![Page 3: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/3.jpg)
Definição
Para resolver um problema através de um computador é necessário encontrar uma maneira de descrevê-lo de uma forma clara e precisa.
Assim se faz necessário estabelecer uma sequência de passos que conduzam à sua resolução. Esta sequência de passos é designada por algoritmo.
O conceito central de programação e da ciência da computação é o de algoritmo. Programar é basicamente construir algoritmos.
Algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.
Sandro Carvalho Izidoro
![Page 4: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/4.jpg)
Definição
Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação.
Os programas de computadores nada mais são do que algoritmos escritos em uma linguagem de programação (Perl, Pascal, C/C++, Fortran, Java, etc.) e que são interpretados e executados por um computador.
Sandro Carvalho Izidoro
![Page 5: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/5.jpg)
Definição
Exemplo
A seguir um exemplo de um algoritmo para somar 2 números. O que esse algoritmo faz é:
Obter o primeiro número; Obter o segundo número; Somar os 2 números; Escrever o resultado.
Sandro Carvalho Izidoro
Algoritmodeclare a,b,c numericoinicio leia a leia b c ← a + b escreva cFim algoritmo
![Page 6: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/6.jpg)
Definição
Algoritmodeclare a,b,c numericoinicio leia a leia b c ← a + b escreva cFim algoritmo
Sandro Carvalho Izidoro
{Programa que soma 2 numeros }Program Soma; var A, B, C : integer;begin Readln( A ); Readln( B ); C := A + B; Writeln( C );end.
/*Programa que soma 2 números */#include <stdio.h>int main(void){ int A, B, C; scanf("%d", &A); scanf("%d", &B); C = A + B; printf("%d", C );}
![Page 7: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/7.jpg)
Definição
Algoritmodeclare a,b,c numericoinicio leia a leia b c ← a + b escreva cFim algoritmo
Sandro Carvalho Izidoro
#!/usr/bin/perl# Somando dois numeros.my ($a, $b, $c);print "Digite o valor de A: ";$a = <STDIN>; print "Digite o valor de B: ";$b = <STDIN>;$c = $a + $b;print "Soma: $c\n";
![Page 8: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/8.jpg)
Variáveis
Sabe-se da matemática que uma variável é a representação simbólica dos elementos de um certo conjunto. Nos algoritmos, destinados a resolver um problema no computador, cada variável corresponde uma posição de memória cujo conteúdo pode variar ao longo do tempo durante a execução do programa.
Embora uma variável possa assumir diferentes valores, ela só pode armazenar um único valor a cada instante.
Toda variável é identificada por um nome ou identificador. Assim, por exemplo, em um algoritmo para cálculo das raízes de uma equação de 2º grau (ax2+bx+c = 0), os identificadores A, B, C podem representar as posições de memória que armazenam os coeficientes da equação.
Sandro Carvalho Izidoro
![Page 9: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/9.jpg)
Variáveis
Declaração de Variáveis
As variáveis só podem armazenar valores de um mesmo tipo e são classificadas como numéricas, lógicas e literais.
A declaração de variáveis tem a seguinte forma:
declare lista-de-identificadores nome-do-tipo
Exemplo:
declare MASSA, CODIGO, X_5 numérico TESTE, SIM lógico NOME_PROTEINA literal
Sandro Carvalho Izidoro
![Page 10: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/10.jpg)
Variáveis
Declaração de Variáveis
Um identificador é formado por 1 ou mais caracteres, sendo que o 1º caractere deve, obrigatoriamente, ser uma letra e os caracteres seguintes, letras ou dígitos, não sendo permitido o uso de símbolos especiais.
Identificadores permitidos
A X_5 NOTA A3_2B MATRICULA 1G3H5
Identificadores NÃO permitidos
5B X-Y E(13) NOTA[1] A:B B*D
Sandro Carvalho Izidoro
![Page 11: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/11.jpg)
Variáveis
Comentários
Com a finalidade de simplificar o compreensão de um algoritmo é utilizado um instrumento denominado comentário.
Os comentários podem ser colocados em qualquer ponto do algoritmo onde se façam necessários.
Exemplo
declare MAT, {Nº de matrícula do aluno} NOTA, {Total de pontos no semestre} COD {Código do curso} numérico
Sandro Carvalho Izidoro
![Page 12: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/12.jpg)
Variáveis
Variável Simples
declare x, y, n numerico…x ← 100 / nescreva x
Variável Composta Homogênea
Variáveis compostas homogêneas correspondem a posições de memória, identificadas por um mesmo nome, individualizadas por índices e cujo conteúdo é de mesmo tipo.
declare medias[1:50] numerico...leia medias[13]
Sandro Carvalho Izidoro
![Page 13: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/13.jpg)
Variáveis
Variável Composta Heterogênea
Variáveis compostas heterogêneas são conjuntos de dados logicamente relacionados, mas de tipos diferentes (numérico, literal, lógico). São também conhecidos como registros ou estruturas.
Cada componente é individualizado pela explicitação de seu identificador.
declare Funcionario registro (Nome, Rua, Sexo literal, Numero, CEP, CPF, Salario numerico,
Nascimento literal)...leia Funcionario.Nome, Funcionario.CPFFuncionario.Salario ← Funcionario.Salario + Aumento
Sandro Carvalho Izidoro
![Page 14: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/14.jpg)
Estrutura Sequencial
Estrutura sequencial em algoritmos
Comando de atribuição
Comandos de entrada e saída
Operadores relacionais e lógicos
Sandro Carvalho Izidoro
![Page 15: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/15.jpg)
Estrutura Sequencial
Comando de atribuição
Este comando permite que se forneça um valor a uma certa variável, onde a natureza deste valor tem de ser compatível com o tipo da variável na qual está sendo armazenado. O comando de atribuição tem a seguinte forma geral:
identificador expressão
Exemplos
a) K 1 b) MEDIA SOMA / Nc) COR "VERDE"d) TESTE Fe) A B
Sandro Carvalho Izidoro
![Page 16: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/16.jpg)
Estrutura Sequencial
Comandos de Entrada e Saída
As unidades de entrada e saída são dispositivos que possibilitam a comunicação entre o usuário e o computador. Através do teclado o usuário consegue dar entrada ao programa e aos dados na memória do computador. Por sua vez, o computador pode emitir os resultados e outras mensagens para o usuário através do vídeo ou de uma impressora.
Um comando de entrada e saída é construído de acordo com a forma geral:
leia lista de identificadores
escreva lista de identificadores e/ou constantes
Sandro Carvalho Izidoro
![Page 17: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/17.jpg)
Estrutura Sequencial
Expressões Lógicas
É comum nos algoritmos surgirem situações em que a execução de uma ação, ou sequência de ações, esteja sujeita a uma certa condição. Esta condição é representada no texto do algoritmo por meio de uma expressão lógica.
Denomina-se expressão lógica à expressão cujos operadores são lógicos e cujos operandos são relações e/ou variáveis do tipo lógico.
Sandro Carvalho Izidoro
![Page 18: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/18.jpg)
Estrutura Sequêncial
Operadores Relacionais
Relações: Uma expressão relacional, ou relação, é uma comparação realizada entre dois valores de mesmo tipo básico. Estes valores são representados na relação através de constantes, variáveis ou expressões aritméticas.
O resultado obtido de uma relação, é sempre um valor lógico.
Sandro Carvalho Izidoro
![Page 19: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/19.jpg)
Estrutura Sequêncial
Operadores Lógicos
Sandro Carvalho Izidoro
Dadas as variáveis numéricas X,Y e Z, contendo os valores 2, 5 e 9 respectivamente, a variável literal NOME, contendo a sequência "MARIA" e a variável lógica SIM, contendo o valor lógico F, obter os resultados das expressões lógicas a seguir:
a)( ) X + Y > Z e NOME = "MARIA"b)( ) SIM ou Y > Xc)( ) NOME = "JORGE" e SIM ou X2 < Z + 10
![Page 20: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/20.jpg)
Estrutura Condicional
Estrutura Condicional
A estrutura condicional permite a escolha do grupo de ações e estruturas a ser executado quando determinadas condições são ou não satisfeitas. A estrutura condicional pode ser apresentada através de uma estrutura simples ou de uma estrutura composta.
Formato de uma Estrutura Condicional Simples
se condição então sequência de comandos
Sandro Carvalho Izidoro
![Page 21: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/21.jpg)
Estrutura Condicional
Exemplo 01
Sandro Carvalho Izidoro
#!/usr/bin/perl# Selecao Simples.my ($sequencia01, $sequencia02);$sequencia01 = "GTGGGATC";print "Digite a sequencia: ";chomp($sequencia02 = <STDIN>); if($sequencia01 eq $sequencia02){ print "Sequencia encontrada\n"; }
Algoritmodeclare sequencia01, sequencia02 literalsequencia01 ← “GTGGGATC”leia sequencia02se sequencia01 = sequencia02 então escreva “Sequencia encontrada”
Fim_Algoritmo
![Page 22: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/22.jpg)
Estrutura Condicional
Sandro Carvalho Izidoro
Estrutura Condicional Composta
se condiçãoentão sequência 1 de comandossenão sequência 2 de comandos
Neste caso, a sequência 1 só será executada se a condição for verdadeira e a sequência 2 de comandos só será executada se a condição for falsa.
![Page 23: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/23.jpg)
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 02
Algoritmo declare sequencia01 literal leia sequencia01 se sequencia01 = “GGTCAG” então escreva “Sequencia encontrada” senão escreva “Sequencia não encontrada”Fim_Algoritmo
#!/usr/bin/perl# Selecao Composta.my ($sequencia);print "Digite a sequencia: ";chomp($sequencia = <STDIN>);if ($sequencia eq "GGTCAG"){ print "Sequencia encontrada\n"; } else { print "Sequencia não encontrada\n"; }
![Page 24: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/24.jpg)
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 03
Algoritmo declare seq01, seq02, seq03 literal seq01 ← “GGTACGTA” seq02 ← “GGTACGAT” leia seq03 se seq03 = seq01 então escreva “Encontrou” senão se seq03 = seq02 então escreva “Encontrou” senão escreva “Não achou!”Fim_Algoritmo
#!/usr/bin/perl# Selecao Composta.my ($seq01, $seq02, $seq03);$seq01 = "GGTACGTA";$seq02 = "GGTACGAT";print "Digite a sequencia: ";chomp($seq03 = <STDIN>);if ($seq03 eq $seq01){ print "Encontrou\n"; } elsif ($seq03 eq $seq02){ print "Encontrou\n"; } else {print "Não achou\n"; }
![Page 25: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/25.jpg)
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 04
Algoritmo declare nota1, nota2, media numerico escreva “digite nota 1:” leia nota1 escreva “digite nota 2:” leia nota2 media ← (nota1+nota2)/2 se media >= 7 então escreva “Media: ”, media, “ - Aprovado” senão se media >= 5 então escreva “Media: ”, media, “ - Exame Final” senão escreva “Media: ”, media, “ - Reprovado”Fim_Algoritmo
![Page 26: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/26.jpg)
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 04
#!/usr/bin/perl# Selecao Composta.my ($nota1, $nota2, $media);print "Digite nota 1: ";$nota1 = <STDIN>;print "Digite nota 2: ";$nota2 = <STDIN>;$media = ($nota1 + $nota2)/2;if ($media >= 7){ print "Media: $media - Aprovado\n"; } elsif ($media >= 5){ print "Media: $media - Exame final\n"; } else { print "Media: $media - Reprovado\n"; }
![Page 27: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/27.jpg)
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 05
Algoritmo declare media, faltas numerico escreva “digite a media:” leia media escreva “digite o numero de faltas:” leia faltas se media < 5 ou faltas > 25 então escreva “Reprovado” senão se media >= 5 e media < 7 então escreva “Exame Final” senão escreva “Aprovado”Fim_Algoritmo
![Page 28: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/28.jpg)
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 05
#!/usr/bin/perl
# Selecao Composta.
my ($media, $faltas);
print "Digite a media: ";
$media = <STDIN>;
print "Digite o numero de faltas: ";
$faltas = <STDIN>;
if ($media < 5 || $faltas > 25){
print "Reprovado\n";
}
elsif ($media >= 5 && $media < 7){
print "Exame Final\n";
}
else {
print "Aprovado\n";
}
![Page 29: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/29.jpg)
Estrutura de Repetição
Sandro Carvalho Izidoro
Estrutura de repetição
A estrutura de repetição permite que uma sequência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita. A condição de interrupção que deve ser satisfeita é representada por uma expressão lógica. As estruturas de repetição são:
• Comando Enquanto
• Comando Repita
• Comando Para
![Page 30: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/30.jpg)
Estrutura de Repetição
Sandro Carvalho Izidoro
Estrutura Enquanto
Enquanto o valor da condição for verdadeiro, as ações dos comandos são executadas. Quando for falso, o comando é abandonado. Se já da primeira vez o resultado é falso, os comandos não são executados nenhuma vez.
Formato do comando Enquanto
enquanto condição façainicio comandos fim
![Page 31: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/31.jpg)
Estrutura de repetição
Sandro Carvalho Izidoro
Exemplo
#!/usr/bin/perl# Repeticao: Enquanto.my ($x, $y, $l);$l = 0;while ($l <= 3){
print "digite x: ";$x = <STDIN>;print "digite y: ";$y = <STDIN>;if ($x > $y){ print "$x \n";} else { print "$y \n";}$l = $l + 1;
}
Algoritmodeclare X,Y, L numéricoL ← 0enquanto L <= 3 façainício
leia X,Yse X > Y então escreva X senão escreva YL ← L + 1
fimFim_Algoritmo.
![Page 32: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/32.jpg)
Estrutura de Repetição
Sandro Carvalho Izidoro
Estrutura Repita
Os comandos são executados pelo menos uma vez. Quando a condição é encontrada, ela é testada. Se for verdadeira o comando seguinte será executado. Se for falsa, os comandos voltam a ser executados. Em outras palavras os comandos são executados até que a condição se torne verdadeira.
Formato do comando Repita
repita comandos até condição
![Page 33: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/33.jpg)
Estrutura de Repetição
Sandro Carvalho Izidoro
Exemplo
#!/usr/bin/perl# Repeticao: Repita.my ($x, $y, $l);$l = 0;do { print "digite x: "; $x = <STDIN>; print "digite y: "; $y = <STDIN>; if ($x > $y){ print "$x \n"; } else { print "$y \n"; } $l = $l + 1;} until $l >= 3
Algoritmodeclare X,Y, L numéricoL ← 0repita
leia X,Yse X > Y então escreva X senão escreva Y
L ← L + 1até L > 3
Fim_Algoritmo.
![Page 34: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/34.jpg)
Estrutura de Repetição
Sandro Carvalho Izidoro
Estrutura Para
O comando para é, na verdade, o comando enquanto utilizando uma variável de controle, escrito numa notação compactada. Neste caso existirá sempre uma inicialização da variável de controle, um teste para verificar se a variável atingiu o limite e um acréscimo na variável de controle.
Formato do comando Para
para var de val_num_1 até val_num_2 [ passo val_num_3] façainício
comandosfim
![Page 35: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/35.jpg)
Estrutura de repetição
Sandro Carvalho Izidoro
Exemplo
#!/usr/bin/perl# Repeticao: Para.my ($x, $y, $l);for ($l=0;$l<=3;$l++){ print "digite x: "; $x = <STDIN>; print "digite y: "; $y = <STDIN>; if ($x > $y){ print "$x \n"; } else { print "$y \n"; }}
Algoritmodeclare X,Y, L numéricopara L de 1 até 3 passo 1 faça
início leia X,Yse X > Y então escreva X senão escreva Y
fimFim_Algoritmo.
![Page 36: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/36.jpg)
Procedimentos e Funções
Sandro Carvalho Izidoro
Um módulo é um grupo de comandos, constituindo um trecho de algoritmo, com uma função bem definida e o mais independente possível em relação ao resto do algoritmo.
Todo módulo é constituído por uma sequência de comandos que operam sobre um conjunto de objetos, que podem ser globais ou locais.
Objetos globais são entidades que podem ser usadas em módulos internos a outro módulo do algoritmo onde foram declaradas.
Objetos locais são entidades que só podem ser usadas no módulo do algoritmo onde foram declaradas.
A comunicação entre módulos deverá ser feita através de vínculos, utilizando-se objetos globais ou transferência de parâmetros.
![Page 37: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/37.jpg)
Procedimentos e Funções
Sandro Carvalho Izidoro
A divisão do algoritmo em módulos traz os seguintes benefícios:
Manutenção simples (módulos independentes); Elaboração e testes em separado; Reutilização do módulo em outros programas.
Ferramentas para modularização
Como ferramentas de modularização podemos destacar as sub-rotinas e as funções. Os módulos de programação servem basicamente a três objetivos:
Repetição de código; Dividir e estruturar melhor um algoritmo; Aumentar a legibilidade de um algoritmo.
![Page 38: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/38.jpg)
Procedimentos e Funções
Sandro Carvalho Izidoro
Sub-rotinas e funções são módulos hierarquicamente subordinados a um algoritmo, comumente chamado de módulo principal. Da mesma forma, uma sub-rotina ou uma função pode conter outras sub-rotinas e funções aninhadas.
A sub-rotina e a função são criadas através das suas declarações em um algoritmo. Para serem executadas, necessitam de ativação provocada por um comando de chamada.
![Page 39: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/39.jpg)
Procedimentos e Funções
Sandro Carvalho Izidoro
Sub-rotinas
Sintaxe
Subrotina NOME (lista_de_parâmetros_formais) declarações dos objetos locais à sub-rotina comandos da sub-rotina
Fim_sub_rotina NOME
A chamada de uma sub-rotina é feita com uma referência a seu nome e a indicação dos parâmetros atuais no local do algoritmo onde a sub-rotina deve ser ativada, ou seja, onde a sua execução deve ser iniciada. A forma geral para a ativação de uma sub-rotina é a seguinte:
NOME (lista_de_parâmetros_atuais)
![Page 40: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/40.jpg)
Procedimentos e Funções
Sandro Carvalho Izidoro
Funções
Sintaxe
Função tipo NOME (lista_de_parâmetros_formais) declarações dos objetos locais à função
comandos da funçãoretorne valor
Fim_função NOME
A chamada de uma função é feita com uma referência a seu nome e a indicação dos parâmetros atuais no local do algoritmo onde a função deve ser ativada. Pode-se chamar uma função de várias formas:
valor ← NOME (lista_de_parâmetros_atuais)
escreva NOME (lista_de_parâmetros_atuais)
![Page 41: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/41.jpg)
Procedimentos e Funções
Sandro Carvalho Izidoro
Exemplo
Algoritmodeclare numero numerico função literal ph (valor numerico)
escreva “forneça o ph da solução:”leia numeroescreva “A solução é “, ph (numero)
Fim_Algoritmo.
função literal ph (numero numerico) se numero > 7 então retorne “base” senão se numero < 7 então retorne “ácida” senão retorne “neutra”fim função ph
![Page 42: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/42.jpg)
Procedimentos e Funções
Sandro Carvalho Izidoro
Exemplo
#!/usr/bin/perl# Função exemplo
my ($ph);print "Forneça o ph da solução: ";$ph = <STDIN>;print "A solução é ", &retorna_ph($ph) , "\n";
sub retorna_ph { my $parametro01 = $_[0]; if ($parametro01 > 7) { return "base"; } elsif ($parametro01 < 7) { return "ácida"; }else { return "neutra";} }
![Page 43: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/43.jpg)
Vetor e Matriz
Sandro Carvalho Izidoro
Exemplo Vetor
Algoritmodeclare vetor1[1:3], vetor2[1:3] literal flag, i numéricoescreva “Digite o primeiro vetor”para i de 1 até 3 passo 1 façainicio
leia (vetor1[ i ]) fim para
escreva “Digite o segundo vetor”para i de 1 até 3 passo 1 façainicio
leia (vetor2[ i ]) fim para
flag ← 1
para i de 1 até 3 passo 1 façainicio
se (vetor1[ i ] <> vetor2[ i ] ) então flag ← 0fim parase (flag = 1) então escreva “Iguais” senão escreva “diferentes”
fim algoritmo.
![Page 44: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/44.jpg)
Vetor e Matriz
Sandro Carvalho Izidoro
Exemplo Vetor
#!/usr/bin/perl# Vetor
my (@vetor1, @vetor2, $flag);$flag = 1;
print "Digite o primeiro vetor:\n";for($i=0;$i<3;$i++){ $vetor1[$i] = <STDIN>; }
print "Digite o segundo vetor:\n";for($i=0;$i<3;$i++){ $vetor2[$i] = <STDIN>; }
for($i=0;$i<3;$i++){ if($vetor1[$i] ne $vetor2[$i]){ $flag = 0; }}if($flag == 1){ print "Vetores iguais\n";} else { print "Vetores diferentes\n"; }
![Page 45: Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro sandroizidoro@unifei.edu.br CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.](https://reader034.fdocument.pub/reader034/viewer/2022052618/552fc130497959413d8d4fbd/html5/thumbnails/45.jpg)
Vetor e Matriz
Sandro Carvalho Izidoro
Exemplo Matriz
Algoritmo declare matriz[1:3,1:2], seq literal
i, j numéricoescreva “Digite os valores para a matriz”para i de 1 até 3 passo 1 façainicio
para j de 1 até 2 passo 1 façainicio
leia (matriz[ i, j ]) fim para
fim paraescreva “Digite uma sequência:”leia seq
para j de 1 até 3 passo 1 façainicio
se (matriz[ i, 1 ] = seq) então escreva matriz[i , 2]fim para fim algoritmo.