Post on 02-Mar-2018
7/26/2019 Introduao a algoritimos
1/45
Introduo a Algoritmos eEstruturas de Dados
Sandro Carvalho Izidoro
sandroizidoro@unifei.edu.br
CURSO DE VERO EM BIOINFORMTICA ESTRUTURAL
7/26/2019 Introduao a algoritimos
2/45
Apresentao
!
Definio! Variveis! Estrutura sequencial! Estrutura condicional!
Estrutura de repetio! Procedimentos e funes!
Vetor e Matriz
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
3/45
Definio
Para resolver um problema atravs de um computador
necessrio encontrar uma maneira de descrev-lo de umaforma clara e precisa.
Assim se faz necessrio estabelecer uma sequncia de passosque 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 construiralgoritmos.
Algoritmo a descrio de um conjunto de comandosque, obedecidos, resultam numa sucesso finita deaes.
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
4/45
Definio
Pseudocdigo uma forma genrica de escrever umalgoritmo, utilizando uma linguagem simples sem necessidadede conhecer a sintaxe de nenhuma linguagem de programao.
Os programas de computadores nada mais so do quealgoritmos escritos em uma linguagem de programao(Perl, Pascal, C/C++, Fortran, Java, etc.) e que sointerpretados e executados por um computador.
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
5/45
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
Algoritmodeclare a,b,c numerico
inicioleia aleia bc !a + bescreva c
Fim algoritmo
7/26/2019 Introduao a algoritimos
6/45
Definio
Algoritmodeclare a,b,c numericoinicio
leia aleia bc !a + bescreva 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 int main(void){
int A, B, C;
scanf("%d", &A);scanf("%d", &B);C = A + B;printf("%d", C );
}
7/26/2019 Introduao a algoritimos
7/45
Definio
Algoritmodeclare a,b,c numericoinicio
leia aleia bc !a + bescreva c
Fim algoritmo
Sandro Carvalho Izidoro
#!/usr/bin/perl# Somando dois numeros.
my ($a, $b, $c);print "Digite o valor de A: ";$a = ;print "Digite o valor de B: ";$b = ;$c = $a + $b;print "Soma: $c\n";
7/26/2019 Introduao a algoritimos
8/45
Variveis
Sabe-se da matemtica que uma varivel a representao
simblica dos elementos de um certo conjunto . Nosalgoritmos, destinados a resolver um problema no computador,cada varivel corresponde uma posio de memria cujocontedo pode variar ao longo do tempo durante a execuodo programa.
Embora uma varivel possa assumir diferentes valores, ela spode armazenar um nico valor a cada instante.
Toda varivel identificada por um nome ou identificador.Assim, por exemplo, em um algoritmo para clculo das razesde uma equao de 2 grau (ax2+bx+c = 0), os identificadores
A, B, C podem representar as posies de memria quearmazenam os coeficientes da equao.
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
9/45
Variveis
Declarao de Variveis
As variveis s podem armazenar valores de um mesmo tipo eso 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 lgicoNOME_PROTEINA literal
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
10/45
Variveis
Declarao de Variveis
Um identificador formado por 1 ou mais caracteres, sendoque o 1 caractere deve, obrigatoriamente, ser uma letra e oscaracteres seguintes, letras ou dgitos, no sendo permitido ouso de smbolos especiais.
Identificadores permitidos
A X_5 NOTA A3_2B MATRICULA 1G3H5
Identificadores NO permitidos
5B X-Y E(13) NOTA[1] A:B B*D
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
11/45
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 doalgoritmo 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
7/26/2019 Introduao a algoritimos
12/45
Variveis
Varivel Simples
declare x, y, n numericox !100 / nescreva x
Varivel Composta Homognea
Variveis compostas homogneas correspondem a posies dememria, identificadas por um mesmo nome, individualizadaspor ndices e cujo contedo de mesmo tipo.
declare medias[1:50] numerico...leia medias[13]
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
13/45
Variveis
Varivel Composta Heterognea
Variveis compostas heterogneas so conjuntos de dadoslogicamente relacionados, mas de tipos diferentes (numrico,literal, lgico). So tambm conhecidos como registros ouestruturas.
Cada componente individualizado pela explicitao de seuidentificador.
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
7/26/2019 Introduao a algoritimos
14/45
Estrutura Sequencial
Estrutura sequencial em algoritmos
"Comando de atribuio
"Comandos de entrada e sada
"Operadores relacionais e lgicos
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
15/45
Estrutura Sequencial
Comando de atribuio
Este comando permite que se fornea um valor a uma certavarivel, onde a natureza deste valor tem de ser compatvelcom o tipo da varivel na qual est sendo armazenado. Ocomando de atribuio tem a seguinte forma geral:
identificador expresso
Exemplos
a) K !1b) MEDIA !SOMA / N
c) COR !"VERDE"d) TESTE !Fe) A !B
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
16/45
Estrutura Sequencial
Comandos de Entrada e Sada
As unidades de entrada e sada so dispositivos quepossibilitam a comunicao entre o usurio e o computador.Atravs do teclado o usurio consegue dar entrada aoprograma e aos dados na memria do computador. Por suavez, o computador pode emitir os resultados e outras
mensagens para o usurio atravs do vdeo ou de umaimpressora.
Um comando de entrada e sada construdo de acordo com aforma geral:
leia lista de identificadoresescreva lista de identificadores e/ou constantes
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
17/45
Estrutura Sequencial
Expresses Lgicas
comum nos algoritmos surgirem situaes em que aexecuo de uma ao, ou sequncia de aes, estejasujeita a uma certa condio. Esta condio representadano texto do algoritmo por meio de uma expresso lgica.
Denomina-se expresso lgica expresso cujos operadoresso lgicos e cujos operandos so relaes e/ou variveisdo tipo lgico.
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
18/45
Estrutura Sequncial
Operadores Relacionais
Relaes: Uma expresso relacional, ou relao, umacomparao realizada entre dois valores de mesmo tipo bsico.Estes valores so representados na relao atravs deconstantes, variveis ou expresses aritmticas.
O resultado obtido de uma relao, sempre um valor lgico.
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
19/45
Estrutura Sequncial
Operadores Lgicos
Sandro Carvalho Izidoro
Dadas as variveis numricas X,Y e Z, contendo os valores 2, 5e 9 respectivamente, a varivel literal NOME, contendo asequncia "MARIA" e a varivel lgica SIM, contendo o valorlgico F, obter os resultados das expresses lgicas a seguir:
a)( ) X + Y > Z e NOME = "MARIA"b)( ) SIM ou Y > Xc)( ) NOME = "JORGE" e SIM ou X2< Z + 10
7/26/2019 Introduao a algoritimos
20/45
Estrutura Condicional
Estrutura Condicional
A estrutura condicional permite a escolha do grupo de aes eestruturas a ser executado quando determinadas condies so ou nosatisfeitas. A estrutura condicional pode ser apresentada atravs deuma estrutura simples ou de uma estrutura composta.
Formato de uma Estrutura Condicional Simples
se condioento sequncia de comandos
Sandro Carvalho Izidoro
7/26/2019 Introduao a algoritimos
21/45
Estrutura Condicional
Exemplo 01
Sandro Carvalho Izidoro
#!/usr/bin/perl# Selecao Simples.my ($sequencia01, $sequencia02);$sequencia01 = "GTGGGATC";
print "Digite a sequencia: ";chomp($sequencia02 = );if($sequencia01 eq $sequencia02){
print "Sequencia encontrada\n";}
Algoritmodeclare sequencia01, sequencia02 literalsequencia01!GTGGGATCleia sequencia02se sequencia01 = sequencia02
ento escreva Sequencia encontradaFim_Algoritmo
7/26/2019 Introduao a algoritimos
22/45
Estrutura Condicional
Sandro Carvalho Izidoro
Estrutura Condicional Composta
se condioento sequncia 1 de comandosseno sequncia 2 de comandos
Neste caso, a sequncia 1s ser executadase a condio forverdadeirae a sequncia 2de comandos s ser executadase a condio for falsa.
7/26/2019 Introduao a algoritimos
23/45
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 02
Algoritmodeclare sequencia01 literalleia sequencia01se sequencia01 = GGTCAGento escreva Sequencia encontradaseno escreva Sequencia no
encontrada
Fim_Algoritmo
#!/usr/bin/perl# Selecao Composta.my ($sequencia);print "Digite a sequencia: ";chomp($sequencia = );if ($sequencia eq "GGTCAG"){
print "Sequencia encontrada\n";
}else {print "Sequencia no encontrada\n";}
7/26/2019 Introduao a algoritimos
24/45
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 03
Algoritmodeclare seq01, seq02, seq03 literalseq01!GGTACGTAseq02!GGTACGATleia seq03se seq03 = seq01
ento escreva Encontrou
seno se seq03 = seq02ento escreva Encontrouseno escreva No achou!
Fim_Algoritmo
#!/usr/bin/perl# Selecao Composta.my ($seq01, $seq02, $seq03);$seq01 = "GGTACGTA";$seq02 = "GGTACGAT";print "Digite a sequencia: ";chomp($seq03 = );
if ($seq03 eq $seq01){print "Encontrou\n";} elsif ($seq03 eq $seq02){
print "Encontrou\n";}else {print "No achou\n";}
7/26/2019 Introduao a algoritimos
25/45
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 04
Algoritmodeclare nota1, nota2, media numericoescreva digite nota 1:leia nota1escreva digite nota 2:leia nota2media!(nota1+nota2)/2se media >= 7
ento escreva Media: , media, - Aprovadoseno se media >= 5
ento escreva Media: , media, - Exame Finalseno escreva Media: , media, - Reprovado
Fim_Algoritmo
7/26/2019 Introduao a algoritimos
26/45
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 04
#!/usr/bin/perl# Selecao Composta.my ($nota1, $nota2, $media);print "Digite nota 1: ";$nota1 = ;print "Digite nota 2: ";$nota2 = ;
$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";}
7/26/2019 Introduao a algoritimos
27/45
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 05
Algoritmodeclare media, faltas numericoescreva digite a media:leia mediaescreva digite o numero de faltas:leia faltasse media < 5 ou faltas > 25
ento escreva Reprovadoseno se media >= 5 e media < 7
ento escreva Exame Finalseno escreva Aprovado
Fim_Algoritmo
7/26/2019 Introduao a algoritimos
28/45
Estrutura Condicional
Sandro Carvalho Izidoro
Exemplo 05
#!/usr/bin/perl
# Selecao Composta.
my ($media, $faltas);
print "Digite a media: ";
$media = ;
print "Digite o numero de faltas: ";
$faltas = ;
if ($media < 5 || $faltas > 25){
print "Reprovado\n";
}
elsif ($media >= 5 && $media < 7){
print "Exame Final\n";
}
else {
print "Aprovado\n";
}
7/26/2019 Introduao a algoritimos
29/45
Estrutura de Repetio
Sandro Carvalho Izidoro
Estrutura de repetio
A estrutura de repetio permite que uma sequncia de comandos sejaexecutada repetidamente at que uma determinada condio deinterrupo seja satisfeita. A condio de interrupo que deve sersatisfeita representada por uma expresso lgica. As estruturas derepetio so:
Comando Enquanto
Comando Repita
Comando Para
7/26/2019 Introduao a algoritimos
30/45
Estrutura de Repetio
Sandro Carvalho Izidoro
Estrutura Enquanto
Enquanto o valor da condiofor verdadeiro, as aes dos comandosso executadas. Quando for falso, o comando abandonado. Se j daprimeira vez o resultado falso, os comandos no so executadosnenhuma vez.
Formato do comando Enquanto
enquanto condio faainicio
comandosfim
7/26/2019 Introduao a algoritimos
31/45
Estrutura de repetio
Sandro Carvalho Izidoro
Exemplo
!"#$%'()#*+&,! .+*+/0123 4)5$1)62789 :;?
;, @ A?
BC(,+ :;, D@ E>F
*&()6 GH(I(6+ F
*&()6 G;< Q)G?
R +,%+ F
*&()6 G;9 Q)G?
R;, @ ;, S T?
R
Algoritmodeclare X,Y, L numricoL!0enquanto L Yento escreva Xseno escreva Y
L!L + 1fim
Fim_Algoritmo.
7/26/2019 Introduao a algoritimos
32/45
Estrutura de Repetio
Sandro Carvalho Izidoro
Estrutura Repita
Os comandos so executados pelo menos uma vez. Quando a condio encontrada, ela testada. Se for verdadeira o comando seguinte serexecutado. Se for falsa, os comandos voltam a ser executados. Emoutras palavras os comandos so executados at que a condio setorne verdadeira.
Formato do comando Repita
repitacomandos
at condio
7/26/2019 Introduao a algoritimos
33/45
Estrutura de Repetio
Sandro Carvalho Izidoro
Exemplo
!"#$%'()#*+&,! .+*+/0123 .+*(61789 :;?
;, @ A?
H2 F
*&()6 GH(I(6+ F
*&()6 G;< Q)G?
R +,%+ F
*&()6 G;9 Q)G?
R;, @ ;, S T?
R $)/, ;, O@ E
Algoritmodeclare X,Y, L numricoL!0repita
leia X,Yse X > Y
ento escreva Xseno escreva Y
L!L + 1at L > 3
Fim_Algoritmo.
7/26/2019 Introduao a algoritimos
34/45
Estrutura de Repetio
Sandro Carvalho Izidoro
Estrutura Para
O comando para, na verdade, o comando enquanto utilizando umavarivel de controle, escrito numa notao compactada. Neste casoexistir sempre uma inicializao da varivel de controle, um teste paraverificar se a varivel atingiu o limite e um acrscimo na varivel decontrole.
Formato do comando Para
para var de val_num_1 at val_num_2 [ passo val_num_3] faaincio
comandos
fim
7/26/2019 Introduao a algoritimos
35/45
Estrutura de repetio
Sandro Carvalho Izidoro
Exemplo
!"#$%'()#*+&,! .+*+/0123 U1&1789 :;?
P2& :;,@A?;,D@E?;,SS>F
*&()6 GH(I(6+ F*&()6 G;< Q)G?
R +,%+ F
*&()6 G;9 Q)G?
R
R
Algoritmodeclare X,Y, L numricopara L de 1 at 3 passo 1 faa
incioleia X,Yse X > Y
ento escreva Xseno escreva Y
fimFim_Algoritmo.
7/26/2019 Introduao a algoritimos
36/45
Procedimentos e Funes
Sandro Carvalho Izidoro
Um mdulo um grupo de comandos, constituindo um trecho de
algoritmo, com uma funo bem definida e o mais independentepossvel em relao ao resto do algoritmo.
Todo mdulo constitudo por uma sequncia de comandos queoperam sobre um conjunto de objetos, que podem ser globais ou locais.
Objetos globais so entidades que podem ser usadas em mdulosinternos a outro mdulo do algoritmo onde foram declaradas.
Objetos locaisso entidades que s podem ser usadas no mdulo doalgoritmo onde foram declaradas.
A comunicao entre mdulos dever ser feita atravs de vnculos,utilizando-se objetos globaisou transferncia de parmetros.
7/26/2019 Introduao a algoritimos
37/45
Procedimentos e Funes
Sandro Carvalho Izidoro
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-rotinase as funes. Os mdulos de programao servem basicamente a trsobjetivos:
" Repetio de cdigo;" Dividir e estruturar melhor um algoritmo;"Aumentar a legibilidade de um algoritmo.
7/26/2019 Introduao a algoritimos
38/45
Procedimentos e Funes
Sandro Carvalho Izidoro
Sub-rotinase funesso mdulos hierarquicamente subordinados a
um algoritmo, comumente chamado de mdulo principal. Da mesmaforma, uma sub-rotina ou uma funo pode conter outras sub-rotinas efunes aninhadas.
A sub-rotina e a funo so criadas atravs das suas declaraes emum algoritmo. Para serem executadas, necessitam de ativaoprovocada por um comando de chamada.
7/26/2019 Introduao a algoritimos
39/45
Procedimentos e Funes
Sandro Carvalho Izidoro
Sub-rotinas
Sintaxe
Subrotina NOME (lista_de_parmetros_formais)declaraes dos objetos locais sub-rotinacomandos da sub-rotina
Fim_sub_rotina NOME
A chamada de uma sub-rotina feita com uma referncia a seunome e a indicao dos parmetros atuais no local doalgoritmo onde a sub-rotina deve ser ativada, ou seja, onde asua execuo deve ser iniciada. A forma geral para a ativaode uma sub-rotina a seguinte:
NOME (lista_de_parmetros_atuais)
7/26/2019 Introduao a algoritimos
40/45
Procedimentos e Funes
Sandro Carvalho Izidoro
Funes
SintaxeFuno tipo NOME (lista_de_parmetros_formais)
declaraes dos objetos locais funocomandos da funoretorne valor
Fim_funo NOMEA chamada de uma funo feita com uma referncia a seunome e a indicao dos parmetros atuais no local doalgoritmo onde a funo deve ser ativada. Pode-se chamaruma funo de vrias formas:
valor !NOME (lista_de_parmetros_atuais)
escreva NOME (lista_de_parmetros_atuais)
7/26/2019 Introduao a algoritimos
41/45
Procedimentos e Funes
Sandro Carvalho Izidoro
Exemplo
Algoritmodeclare numero numerico
funo literal ph (valor numerico)escreva fornea o ph da soluo:leia numeroescreva A soluo , ph (numero)
Fim_Algoritmo.
funo literal ph (numero numerico)se numero > 7
ento retorne baseseno se numero < 7
ento retorne cidaseno retorne neutra
fim funo ph
7/26/2019 Introduao a algoritimos
42/45
Procedimentos e Funes
Sandro Carvalho Izidoro
Exemplo
#!/usr/bin/perl# Funo exemplo
my ($ph);print "Fornea o ph da soluo: ";$ph = ;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";}}
7/26/2019 Introduao a algoritimos
43/45
Vetor e Matriz
Sandro Carvalho Izidoro
Exemplo Vetor
Algoritmodeclare vetor1[1:3], vetor2[1:3] literalflag, i numrico
escreva Digite o primeiro vetorpara i de 1 at 3 passo 1 faainicio
leia (vetor1[ i ])
fim paraescreva Digite o segundo vetorpara i de 1 at 3 passo 1 faainicio
leia (vetor2[ i ])fim paraflag!1
para i de 1 at 3 passo 1 faainiciose (vetor1[ i ] vetor2[ i ] )
ento flag!0fim parase (flag = 1)
ento escreva Iguais
seno escreva diferentes
fim algoritmo.
7/26/2019 Introduao a algoritimos
44/45
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
7/26/2019 Introduao a algoritimos
45/45
Vetor e Matriz
Sandro Carvalho Izidoro
Exemplo Matriz
Algoritmodeclare matriz[1:3,1:2], seq literal
i, j numricoescreva Digite os valores para a matrizpara i de 1 at 3 passo 1 faainicio
para j de 1 at 2 passo 1 faainicio
leia (matriz[ i, j ])fim para
fim paraescreva Digite uma sequncia:leia seq
para j de 1 at 3 passo 1 faainicio
se (matriz[ i, 1 ] = seq)ento escreva matriz[i , 2]
fim para
fim algoritmo.