30
SUBALGORITMOS

subalgoritmos

Embed Size (px)

Citation preview

  • SUBALGORITMOS

  • Dividir para conquistar

    Algoritmo completo dividido em:

    Um algoritmo (ou funo) principal

    Um ou diversos subalgoritmos (funes e procedimentos)

  • Subalgoritmos

    um algoritmo que, geralmente, resolve um pequeno problema, e que est subordinado a um outro algoritmo.

    Um subalgoritmo s ser acionado se solicitado pelo algoritmo principal.

    possvel que um subalgoritmo chame outro subalgoritmo.

  • Por que subalgoritmos so importantes?

    Porque permitem:

    a subdiviso de algoritmos complexos, facilitando o seu entendimento;

    a estruturao de algoritmos, facilitando, principalmente, a deteco de erros e a documentao de sistemas;

    a modularizao de sistemas, facilitando a manuteno de softwares e reutilizao de subalgoritmos j implementados.

  • Elementos de um subalgoritmo

    A definio de um subalgoritmo consta de:

    CABEALHO, onde esto definidos o nome e o tipo do subalgoritmo, bem como os seus parmetros e suas variveis locais;

    CORPO, onde se encontram as instrues, que sero executadas cada vez que ele chamado.

  • Definio dos elementos de um subalgoritmo

    Nome um nome simblico pelo qual ele chamado por outro algoritmo.

    Variveis locais so aquelas definidas dentro do prprio subalgoritmo e s podem ser utilizadas pelo mesmo.

    Parmetros so canais por onde os dados so transferidos pelo algoritmo chamador a um subalgoritmo, e vice-versa.

    Essa comunicao bidirecional chamada de: passagem de parmetros

  • Tipos de subalgoritmo

    O tipo de um subalgoritmo definido em funo do nmero de valores que o subalgoritmo retorna ao algoritmo que o chamou.

    So dois tipos:

    Funes que retornam um, e somente um valor ao algoritmo chamador;

    Procedimentos que retornam vrios valores, ou nenhum, ao algoritmo chamador.

  • Funes

    O conceito de funes originrio da ideia de funo matemtica, onde um valor calculado a partir de outro(s) valor(es) fornecidos(s) funo.

    Sintaxe:

    funo () :

    fimfuno

  • Instruo retorne

    Comando simples usado apenas nas funes e tem o efeito de parar a execuo da funo e enviar um valor para o algoritmo principal ou para outro subalgoritmo que o tenha chamado.

    Toda funo deve ter em seu corpo de instrues, pelo menos, uma instruo retorne.

  • Instruo retorne (continuao)

    Sintaxe:

    retorne ()

    Exemplos:

    retorne (1)

    retorne (area)

    retorne (nome1)

    retorne (falso)

    retorne (3.0*x**2+4.0*x 1.5)

  • Utilizando funo algoritmo exemplo

    inteiro x, y

    funo calcula ( inteiro w) : inteiro

    inteiro z

    z

  • Procedimentos

    Um procedimento subalgoritmo que retorna vrios valores, ou nenhum, ao algoritmo que o chama.

    Esses valores so sempre retornados por meio dos parmetros, e nunca explicitamente como no caso das funes que usa a instruo retorne.

  • Forma geral de um procedimento

    Sintaxe:

    procedimento ()

    fimprocedimento

  • Utilizando procedimento algoritmo exemplo

    inteiro a,w,x

    procedimento calcula (inteiro x)

    inteiro w

    w

  • Exerccios

    Faa algoritmos modularizados, ou seja,que tenham funes independentes para entrada de dados, processamento dos dados fornecidos e sada da informao para:

    1. Calcular o mmc entre dois nmeros inteiros.

    2. Calcular a soma dos elementos de um vetor.

    3. Identificar se um vetor possui elementos repetidos.

  • Exerccios (continuao)

    Faa um algoritmo que leia n nmeros inteiros e escreva o maior e o menor deles informando se cada um deles par ou impar. Para isso, voc dever criar procedimentos independentes, sendo que um dever calcular o maior e o menor nmero de um conjunto de nmeros inteiros dados, e outro procedimento para imprimir se um nmero inteiro par ou impar.

  • Parmetros

    Dados so passados pelo algoritmo principal (ou outro subalgoritmo) ao subalgoritmo, ou retornados por este ao primeiro, por meio de parmetros.

    Tipos de parmetros:

    Formais

    Reais

  • Parmetros formais

    So os nomes simblicos (variveis) introduzidos no cabealho dos subalgoritmos, utilizados na definio dos parmetros do mesmo.

    Dentro do subalgoritmo trabalha-se com estes nomes da mesma forma como se trabalha com variveis locais.

  • Parmetros reais

    So aqueles que substituem os parmetros formais quando da chamada de um subalgoritmo.

    Os parmetros formais so teis somente na definio do subalgoritmo. Os parmetros reais podem ser diferentes a cada chamada de um subalgoritmo.

    So divididos em:

    Parmetros de entrada

    Parmetros de sada

  • Quando os parmetros formais substituem os parmetros reais?

    No ato da chamada de um subalgoritmo.

    Esta substituio denominada passagem de parmetros e pode se dar por dois mecanismos:

    Passagem por valor (ou por cpia);

    Passagem por referncia.

  • Passagem de parmetros por valor

    O parmetro real calculado, e uma cpia de seu valor fornecida ao parmetro formal, no ato da chamada do subalgoritmo.

    As modificaes feitas no parmetro formal no afetam o parmetro real, durante a execuo do subalgoritmo, pois trabalha-se apenas com uma cpia do mesmo.

    Os parmetros formais possuem locais de memria exclusivos para que possam armazenar os valores dos parmetros reais.

  • Passagem de parmetros por referncia

    No feita uma reserva de espao de memria para os parmetros formais.

    Quando um subalgoritmo com parmetros passados por referncia chamado, o espao de memria ocupado pelos parmetros reais compartilhado pelos parmetros formais correspondentes.

    Assim, as eventuais modificaes feitas nos parmetros formais tambm afetam os parmetros reais correspondentes.

  • Como vamos trabalhar com os parmetros nessa disciplina?

    Quando a passagem de parmetros for feita com variveis simples, a passagem ser por valor, e quando for feita com variveis indexadas, a passagem de parmetros ser por referncia.

    Para manter intactos vetores ou matrizes aps a chamada de subalgoritmos, que os utilizaram e os modificaram como parmetros formais no ato da chamada dos mesmos, ento devemos antes disso guardar cpias dos seus valores.

  • Procedimentos em VisualG

    procedimento [()] // Seo de Declaraes Internas inicio // Seo de Comandos fimprocedimento

  • Procedimantos em VisualG

    Seqncia-de-declaraes-de-parmetros:

    [var] :

    As declaracoes de parametros so separadas por `;`

    A seqncia-de-parmetros uma seqncia de nomes de parmetros separados por vrgulas

  • Procedimantos em VisualG

    procedimento soma var aux: inteiro inicio // n, m e res so variveis globais aux

  • Funcoes em VisualG

    funcao [()]:

    // Seo de Declaraes Internas inicio // Seo de Comandos fimfuncao

    Seqncia-de-declaraes-de-parmetros:

    [var] :

    O valor retornado pela funo atravs do comando retorne

  • Funcoes em VisualG

    funcao soma: inteiro var aux: inteiro inicio // n, m e res so variveis globais aux

  • Funcoes Recursivas

    funcao fatorial (v: inteiro): inteiro inicio se v

  • algoritmo "Procedimento triangulo" var altura, base, rea : real //declarao das variveis globais procedimento ptriangulo (var h,b,ar : real) //declarao inicio ar