You are on page 1of 45

CURSO DE VERO EM BIOINFORMTICA ESTRUTURAL

Introduo a Algoritmos e
Estruturas de Dados
Sandro Carvalho Izidoro
sandroizidoro@unifei.edu.br

Apresentao

Definio
Variveis
Estrutura sequencial
Estrutura condicional
Estrutura de repetio
Procedimentos e funes
Vetor e Matriz

Sandro Carvalho Izidoro

Definio
Para resolver um problema atravs de um computador
necessrio encontrar uma maneira de descrev-lo de uma
forma clara e precisa.
Assim se faz necessrio estabelecer uma sequncia de passos
que conduzam sua resoluo. Esta sequncia de passos
designada por algoritmo.
O conceito central de programao e da cincia da computao
o de algoritmo. Programar basicamente construir
algoritmos.
Algoritmo a descrio de um conjunto de comandos
que, obedecidos, resultam numa sucesso finita de
aes.

Sandro Carvalho Izidoro

Definio
Pseudocdigo uma forma genrica de escrever um
algoritmo, utilizando uma linguagem simples sem necessidade
de conhecer a sintaxe de nenhuma linguagem de programao.

Os programas de computadores nada mais so do que


algoritmos escritos em uma linguagem de programao
(Perl, Pascal, C/C++, Fortran, Java, etc.) e que so
interpretados e executados por um computador.

Sandro Carvalho Izidoro

Definio
Exemplo
A seguir um exemplo de um algoritmo para somar 2 nmeros.
O que esse algoritmo faz :

Obter o primeiro nmero;


Obter o segundo nmero;
Somar os 2 nmeros;
Escrever o resultado.

Sandro Carvalho Izidoro

Algoritmo
declare a,b,c numerico
inicio
leia a
leia b
ca+b
escreva c
Fim algoritmo

Definio

Algoritmo
declare a,b,c numerico
inicio
leia a
leia b
ca+b
escreva c
Fim 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 nmeros
*/
#include <stdio.h>
int main(void){
int A, B, C;
scanf("%d", &A);
scanf("%d", &B);
C = A + B;
printf("%d", C );
}

Definio

Algoritmo
declare a,b,c numerico
inicio
leia a
leia b
ca+b
escreva c
Fim 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";

Variveis
Sabe-se da matemtica que uma varivel a representao
simblica dos elementos de um certo conjunto. Nos
algoritmos, destinados a resolver um problema no computador,
cada varivel corresponde uma posio de memria cujo
contedo pode variar ao longo do tempo durante a execuo
do programa.
Embora uma varivel possa assumir diferentes valores, ela s
pode armazenar um nico valor a cada instante.
Toda varivel identificada por um nome ou identificador.
Assim, por exemplo, em um algoritmo para clculo das razes
de uma equao de 2 grau (ax2+bx+c = 0), os identificadores
A, B, C podem representar as posies de memria que
armazenam os coeficientes da equao.

Sandro Carvalho Izidoro

Variveis
Declarao de Variveis
As variveis s podem armazenar valores de um mesmo tipo e
so classificadas como numricas, lgicas e literais.
A declarao de variveis tem a seguinte forma:
declare lista-de-identificadores nome-do-tipo
Exemplo:
declare MASSA, CODIGO, X_5 numrico
TESTE, SIM lgico
NOME_PROTEINA literal

Sandro Carvalho Izidoro

Variveis
Declarao de Variveis
Um identificador formado por 1 ou mais caracteres, sendo
que o 1 caractere deve, obrigatoriamente, ser uma letra e os
caracteres seguintes, letras ou dgitos, no sendo permitido o
uso de smbolos especiais.
Identificadores permitidos
A

X_5

NOTA

A3_2B MATRICULA

1G3H5

Identificadores NO permitidos
5B

X-Y

Sandro Carvalho Izidoro

E(13)

NOTA[1]

A:B

B*D

Variveis
Comentrios
Com a finalidade de simplificar o compreenso de um algoritmo
utilizado um instrumento denominado comentrio.
Os comentrios podem ser colocados em qualquer ponto do
algoritmo onde se faam necessrios.
Exemplo
declare

MAT, {N de matrcula do aluno}


NOTA, {Total de pontos no semestre}
COD {Cdigo do curso} numrico

Sandro Carvalho Izidoro

Variveis
Varivel Simples
declare x, y, n numerico

x 100 / n
escreva x
Varivel Composta Homognea
Variveis compostas homogneas correspondem a posies de
memria, identificadas por um mesmo nome, individualizadas
por ndices e cujo contedo de mesmo tipo.
declare medias[1:50] numerico
...
leia medias[13]
Sandro Carvalho Izidoro

Variveis
Varivel Composta Heterognea
Variveis compostas heterogneas so conjuntos de dados
logicamente relacionados, mas de tipos diferentes (numrico,
literal, lgico). So tambm conhecidos como registros ou
estruturas.
Cada componente individualizado pela explicitao de seu
identificador.
declare Funcionario registro (Nome, Rua, Sexo literal,
Numero, CEP, CPF, Salario numerico,
Nascimento literal)
...
leia Funcionario.Nome, Funcionario.CPF
Funcionario.Salario Funcionario.Salario + Aumento

Sandro Carvalho Izidoro

Estrutura Sequencial
Estrutura sequencial em algoritmos
Comando de atribuio

Comandos de entrada e sada

Operadores relacionais e lgicos

Sandro Carvalho Izidoro

Estrutura Sequencial
Comando de atribuio
Este comando permite que se fornea um valor a uma certa
varivel, onde a natureza deste valor tem de ser compatvel
com o tipo da varivel na qual est sendo armazenado. O
comando de atribuio tem a seguinte forma geral:
identificador expresso
Exemplos
a) K 1
b) MEDIA SOMA / N
c) COR "VERDE"
d) TESTE F
e) A B
Sandro Carvalho Izidoro

Estrutura Sequencial
Comandos de Entrada e Sada
As unidades de entrada e sada so dispositivos que
possibilitam a comunicao entre o usurio e o computador.
Atravs do teclado o usurio consegue dar entrada ao
programa e aos dados na memria do computador. Por sua
vez, o computador pode emitir os resultados e outras
mensagens para o usurio atravs do vdeo ou de uma
impressora.
Um comando de entrada e sada construdo de acordo com a
forma geral:
leia lista de identificadores
escreva lista de identificadores e/ou constantes

Sandro Carvalho Izidoro

Estrutura Sequencial
Expresses Lgicas
comum nos algoritmos surgirem situaes em que a
execuo de uma ao, ou sequncia de aes, esteja
sujeita a uma certa condio. Esta condio representada
no texto do algoritmo por meio de uma expresso lgica.
Denomina-se expresso lgica expresso cujos operadores
so lgicos e cujos operandos so relaes e/ou variveis
do tipo lgico.

Sandro Carvalho Izidoro

Estrutura Sequncial
Operadores Relacionais
Relaes: Uma expresso relacional, ou relao, uma
comparao realizada entre dois valores de mesmo tipo bsico.
Estes valores so representados na relao atravs de
constantes, variveis ou expresses aritmticas.
O resultado obtido de uma relao, sempre um valor lgico.

Sandro Carvalho Izidoro

Estrutura Sequncial
Operadores Lgicos

Dadas as variveis numricas X,Y e Z, contendo os valores 2, 5


e 9 respectivamente, a varivel literal NOME, contendo a
sequncia "MARIA" e a varivel lgica SIM, contendo o valor
lgico F, obter os resultados das expresses lgicas a seguir:
a)(
b)(
c)(

) X + Y > Z e NOME = "MARIA"


) SIM ou Y > X
) NOME = "JORGE" e SIM ou X2 < Z + 10

Sandro Carvalho Izidoro

Estrutura Condicional
Estrutura Condicional
A estrutura condicional permite a escolha do grupo de aes e
estruturas a ser executado quando determinadas condies so ou no
satisfeitas. A estrutura condicional pode ser apresentada atravs de
uma estrutura simples ou de uma estrutura composta.
Formato de uma Estrutura Condicional Simples
se condio
ento sequncia de comandos

Sandro Carvalho Izidoro

Estrutura Condicional
Exemplo 01
Algoritmo
declare sequencia01, sequencia02 literal
sequencia01 GTGGGATC
leia sequencia02
se sequencia01 = sequencia02
ento escreva Sequencia encontrada
Fim_Algoritmo
#!/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";
}
Sandro Carvalho Izidoro

Estrutura Condicional
Estrutura Condicional Composta
se condio
ento sequncia 1 de comandos
seno sequncia 2 de comandos
Neste caso, a sequncia 1 s ser executada se a condio for
verdadeira e a sequncia 2 de comandos s ser executada
se a condio for falsa.

Sandro Carvalho Izidoro

Estrutura Condicional
Exemplo 02
Algoritmo
declare sequencia01 literal
leia sequencia01
se sequencia01 = GGTCAG
ento escreva Sequencia encontrada
seno escreva Sequencia no
encontrada
Fim_Algoritmo

Sandro Carvalho Izidoro

#!/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 no encontrada\n";
}

Estrutura Condicional
Exemplo 03
Algoritmo
declare seq01, seq02, seq03 literal
seq01 GGTACGTA
seq02 GGTACGAT
leia seq03
se seq03 = seq01
ento escreva Encontrou
seno se seq03 = seq02
ento escreva Encontrou
seno escreva No achou!
Fim_Algoritmo

Sandro Carvalho Izidoro

#!/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 "No achou\n";
}

Estrutura Condicional
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
ento escreva Media: , media, - Aprovado
seno se media >= 5
ento escreva Media: , media, - Exame Final
seno escreva Media: , media, - Reprovado
Fim_Algoritmo

Sandro Carvalho Izidoro

Estrutura Condicional
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";
}
Sandro Carvalho Izidoro

Estrutura Condicional
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
ento escreva Reprovado
seno se media >= 5 e media < 7
ento escreva Exame Final
seno escreva Aprovado
Fim_Algoritmo

Sandro Carvalho Izidoro

Estrutura Condicional
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";
}
Sandro Carvalho Izidoro

Estrutura de Repetio
Estrutura de repetio
A estrutura de repetio permite que uma sequncia de comandos seja
executada repetidamente at que uma determinada condio de
interrupo seja satisfeita. A condio de interrupo que deve ser
satisfeita representada por uma expresso lgica. As estruturas de
repetio so:
Comando Enquanto
Comando Repita
Comando Para

Sandro Carvalho Izidoro

Estrutura de Repetio
Estrutura Enquanto
Enquanto o valor da condio for verdadeiro, as aes dos comandos
so executadas. Quando for falso, o comando abandonado. Se j da
primeira vez o resultado falso, os comandos no so executados
nenhuma vez.
Formato do comando Enquanto
enquanto condio faa
inicio
comandos
fim

Sandro Carvalho Izidoro

Estrutura de repetio
Exemplo
Algoritmo
declare X,Y, L numrico
L0
enquanto L <= 3 faa
incio
leia X,Y
se X > Y
ento escreva X
seno escreva Y
LL+1
fim
Fim_Algoritmo.

Sandro Carvalho Izidoro

#!/usr/bin/perl
# Repe/cao: 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;
}

Estrutura de Repetio
Estrutura Repita
Os comandos so executados pelo menos uma vez. Quando a condio
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 so executados at que a condio se
torne verdadeira.
Formato do comando Repita
repita
comandos
at condio

Sandro Carvalho Izidoro

Estrutura de Repetio
Exemplo
Algoritmo
declare X,Y, L numrico
L0
repita
leia X,Y
se X > Y
ento escreva X
seno escreva Y
LL+1
at L > 3
Fim_Algoritmo.

Sandro Carvalho Izidoro

#!/usr/bin/perl
# Repe/cao: 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;
} un/l $l >= 3

Estrutura de Repetio
Estrutura Para
O comando para , na verdade, o comando enquanto utilizando uma
varivel de controle, escrito numa notao compactada. Neste caso
existir sempre uma inicializao da varivel de controle, um teste para
verificar se a varivel atingiu o limite e um acrscimo na varivel de
controle.
Formato do comando Para
para var de val_num_1 at val_num_2 [ passo val_num_3] faa
incio
comandos
fim

Sandro Carvalho Izidoro

Estrutura de repetio
Exemplo
Algoritmo
declare X,Y, L numrico
para L de 1 at 3 passo 1 faa
incio
leia X,Y
se X > Y
ento escreva X
seno escreva Y
fim
Fim_Algoritmo.

Sandro Carvalho Izidoro

#!/usr/bin/perl
# Repe/cao: 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";
}
}

Procedimentos e Funes
Um mdulo um grupo de comandos, constituindo um trecho de
algoritmo, com uma funo bem definida e o mais independente
possvel em relao ao resto do algoritmo.
Todo mdulo constitudo por uma sequncia de comandos que
operam sobre um conjunto de objetos, que podem ser globais ou locais.
Objetos globais so entidades que podem ser usadas em mdulos
internos a outro mdulo do algoritmo onde foram declaradas.
Objetos locais so entidades que s podem ser usadas no mdulo do
algoritmo onde foram declaradas.
A comunicao entre mdulos dever ser feita atravs de vnculos,
utilizando-se objetos globais ou transferncia de parmetros.

Sandro Carvalho Izidoro

Procedimentos e Funes
A diviso do algoritmo em mdulos traz os seguintes benefcios:
Manuteno simples (mdulos independentes);
Elaborao e testes em separado;
Reutilizao do mdulo em outros programas.

Ferramentas para modularizao


Como ferramentas de modularizao podemos destacar as sub-rotinas
e as funes. Os mdulos de programao servem basicamente a trs
objetivos:
Repetio de cdigo;
Dividir e estruturar melhor um algoritmo;
Aumentar a legibilidade de um algoritmo.

Sandro Carvalho Izidoro

Procedimentos e Funes
Sub-rotinas e funes so mdulos hierarquicamente subordinados a
um algoritmo, comumente chamado de mdulo principal. Da mesma
forma, uma sub-rotina ou uma funo pode conter outras sub-rotinas e
funes aninhadas.

A sub-rotina e a funo so criadas atravs das suas declaraes em


um algoritmo. Para serem executadas, necessitam de ativao
provocada por um comando de chamada.

Sandro Carvalho Izidoro

Procedimentos e Funes
Sub-rotinas
Sintaxe
Subrotina NOME (lista_de_parmetros_formais)
declaraes dos objetos locais sub-rotina
comandos da sub-rotina
Fim_sub_rotina NOME
A chamada de uma sub-rotina feita com uma referncia a seu
nome e a indicao dos parmetros atuais no local do
algoritmo onde a sub-rotina deve ser ativada, ou seja, onde a
sua execuo deve ser iniciada. A forma geral para a ativao
de uma sub-rotina a seguinte:
NOME (lista_de_parmetros_atuais)

Sandro Carvalho Izidoro

Procedimentos e Funes
Funes
Sintaxe
Funo tipo NOME (lista_de_parmetros_formais)
declaraes dos objetos locais funo
comandos da funo
retorne valor
Fim_funo NOME
A chamada de uma funo feita com uma referncia a seu
nome e a indicao dos parmetros atuais no local do
algoritmo onde a funo deve ser ativada. Pode-se chamar
uma funo de vrias formas:
valor NOME (lista_de_parmetros_atuais)
escreva NOME (lista_de_parmetros_atuais)
Sandro Carvalho Izidoro

Procedimentos e Funes
Exemplo
Algoritmo
declare numero numerico
funo literal ph (valor numerico)
escreva fornea o ph da soluo:
leia numero
escreva A soluo , ph (numero)
Fim_Algoritmo.
funo literal ph (numero numerico)
se numero > 7
ento retorne base
seno se numero < 7
ento retorne cida
seno retorne neutra
fim funo ph
Sandro Carvalho Izidoro

Procedimentos e Funes
Exemplo
#!/usr/bin/perl
# Funo exemplo
my ($ph);
print "Fornea o ph da soluo: ";
$ph = <STDIN>;
print "A soluo ", &retorna_ph($ph) , "\n";
sub retorna_ph {
my $parametro01 = $_[0];
if ($parametro01 > 7) {
return "base";
} elsif ($parametro01 < 7) {
return "cida";
}else { return "neutra";}
}

Sandro Carvalho Izidoro

Vetor e Matriz
Exemplo Vetor
Algoritmo
declare vetor1[1:3], vetor2[1:3] literal
flag, i numrico
escreva Digite o primeiro vetor
para i de 1 at 3 passo 1 faa
inicio
leia (vetor1[ i ])
fim para
escreva Digite o segundo vetor
para i de 1 at 3 passo 1 faa
inicio
leia (vetor2[ i ])
fim para
flag 1

Sandro Carvalho Izidoro

para i de 1 at 3 passo 1 faa


inicio
se (vetor1[ i ] <> vetor2[ i ] )
ento flag 0
fim para
se (flag = 1)
ento escreva Iguais
seno escreva diferentes
fim algoritmo.

Vetor e Matriz
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>;
}

Sandro Carvalho Izidoro

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";
}

Vetor e Matriz
Exemplo Matriz
Algoritmo
declare matriz[1:3,1:2], seq literal
i, j numrico
escreva Digite os valores para a matriz
para i de 1 at 3 passo 1 faa
inicio
para j de 1 at 2 passo 1 faa
inicio
leia (matriz[ i, j ])
fim para
fim para
escreva Digite uma sequncia:
leia seq

Sandro Carvalho Izidoro

para j de 1 at 3 passo 1 faa


inicio
se (matriz[ i, 1 ] = seq)
ento escreva matriz[i , 2]
fim para
fim algoritmo.

You might also like