Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro [email protected]...

45
Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro [email protected] CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL

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.

Introdução a Algoritmos e Estruturas de Dados

Sandro Carvalho Izidoro

[email protected]

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.