introduçao a algoritimos

Upload: anonymous-2fcjhnzs0e

Post on 02-Mar-2018

243 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/26/2019 Introduao a algoritimos

    1/45

    Introduo a Algoritmos eEstruturas de Dados

    Sandro Carvalho Izidoro

    [email protected]

    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.