60
Algoritmos e Programação Modularização

Modulização algoritmo e programação

Embed Size (px)

DESCRIPTION

material de algoritmo e programação

Citation preview

  • Algoritmos e Programao

    Modularizao

  • Algoritmos e Programao

    Modularizao de Algoritmos A resoluo de problemas complexos em computao

    geralmente leva a algoritmos longos, que so difceis de analisar, verificar e alterar.

    Uma abordagem eficiente para auxiliar na resoluo de problemas complexos a decomposio: dividir para conquistar!

    Essa abordagem denominada top-down (ou refinamentos sucessivos): parte-se do todo, dividindo-o em partes menores.

  • Algoritmos e Programao

    Modularizao de Algoritmos Vrias reas utilizam essa abordagem: um exemplo a

    fabricao de um carro numa indstria automobilstica.

    Vantagens da modularizao: Clareza e legibilidade do algoritmo. Construo independente. Testes individualizados. Simplificao da manuteno. Reaproveitamento de algoritmos.

  • Algoritmos e Programao

    Modularizao de Algoritmos A abordagem top-down aplicada em algoritmos consiste em

    dividir um algoritmo em subalgoritmos/subprogramas menores que executam partes da resoluo do problema.

    Essa tcnica chamada de modularizao de algoritmos.

  • Algoritmos e Programao

    Subalgoritmo

  • Algoritmos e Programao

    Subalgoritmo

    Um subalgoritmo um nome dado a um trecho de um algoritmo mais complexo e que, em geral, encerra em si prprio um pedao da soluo de um problema maior o algoritmo a que ele est subordinado. Este conceito essencial numa cincia bastante recente: a Engenharia de Software.

  • Algoritmos e Programao

    Subalgoritmo

    Em resumo, os subalgoritmos so importantes na:

    Subdiviso de algoritmos complexos, facilitando o seu entendimento;

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

    Modularizao de sistemas, que facilita a manuteno de softwares e a reutilizao de subalgoritmos j implementados.

  • Algoritmos e Programao

    Subalgoritmo

    A idia da reutilizao de software tem sido adotada por muitos grupos de desenvolvimento de sistemas de computador, devido economia de tempo e trabalho que proporcionam.

    Seu princpio o seguinte: um conjunto de algoritmos destinado a solucionar uma srie de tarefas bastante corriqueiras desenvolvido e vai sendo aumentado com o passar do tempo, com o acrscimo de novos algoritmos.

  • Algoritmos e Programao

    Subalgoritmo

    A este conjunto d-se o nome de biblioteca. No desenvolvimento de novos sistemas, procura-se ao mximo basear sua concepo em subalgoritmos j existentes na biblioteca, de modo que a quantidade de software realmente novo que deve ser desenvolvido minimizada.

    Muitas vezes os subalgoritmos podem ser teis para encerrar em si uma certa sequncia de comandos que repetida vrias vezes num algoritmo. Nestes casos, os subalgoritmos proporcionam uma diminuio do tamanho de algoritmos maiores. Antigamente, esta propriedade era tida como a principal utilidade dos subalgoritmos.

  • Algoritmos e Programao

    Subalgoritmo Mecanismo de Funcionamento

    Um algoritmo completo dividido num algoritmo principal e

    diversos subalgoritmos (tantos quantos forem necessrios e/ou convenientes). O algoritmo principal aquele por onde a execuo do algoritmo sempre se inicia. Este pode eventualmente invocar os demais subalgoritmos.

  • Algoritmos e Programao

    Subalgoritmo Mecanismo de Funcionamento

    O corpo do algoritmo principal sempre o ltimo trecho do

    pseudocdigo de um algoritmo. As definies dos subalgoritmos esto sempre colocadas no trecho aps a definio das variveis globais e antes do corpo do algoritmo principal:

  • Algoritmos e Programao

    Subalgoritmo Mecanismo de Funcionamento

    ALGORITMO Var

    Inicio

    FimAlgoritmo.

  • Algoritmos e Programao

    Subalgoritmo Mecanismo de Funcionamento Durante a execuo do algoritmo principal, quando se

    encontra um comando de invocao de um subalgoritmo, a execuo do mesmo interrompida. A seguir, passa-se execuo dos comandos do corpo do subalgoritmo. Ao seu trmino, retoma-se a execuo do algoritmo que o chamou (no caso, o algoritmo principal) no ponto onde foi interrompida (comando de chamada do subalgoritmo) e prossegue-se pela instruo imediatamente seguinte.

  • Algoritmos e Programao

    Subalgoritmo A definio de um subalgoritmo consta de:

    Um cabealho, onde esto definidos o nome e o tipo do

    subalgoritmo, bem como os seus parmetros e variveis locais;

    Um corpo, onde se encontram as instrues (comandos) do subalgoritmo.

  • Algoritmos e Programao

    Subalgoritmo O nome de um subalgoritmo o nome simblico pelo qual

    ele chamado por outro algoritmo.

    O corpo do subalgoritmo contm as instrues que so executadas cada vez que ele invocado.

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

  • Algoritmos e Programao

    Subalgoritmo Parmetros so canais por onde os dados so transferidos

    pelo algoritmo chamador a um subalgoritmo, e vice-versa. Para que possa iniciar a execuo das instrues em seu corpo, um subalgoritmo s vezes precisa receber dados do algoritmo que o chamou e, ao terminar sua tarefa, o subalgoritmo deve fornecer ao algoritmo chamador os resultados da mesma. Esta comunicao bidirecional pode ser feita de dois modos que sero estudados mais frente: por meio de variveis globais ou por meio da passagem de parmetros.

  • Algoritmos e Programao

    Subalgoritmo O tipo de um subalgoritmo definido em funo do nmero

    de valores que o subalgoritmo retorna ao algoritmo que o chamou. Segundo esta classificao, os subalgoritmos podem ser de dois tipos: funes, que retornam um, e somente um, valor ao

    algoritmo chamador;

    procedimentos, que retornam zero (nenhum) ou mais valores ao algoritmo chamador.

  • Algoritmos e Programao

    Procedimentos

  • Algoritmos e Programao

    Procedimentos Um procedimento um subalgoritmo que retorna zero

    (nenhum) ou mais valores ao (sub)algoritmo chamador. Estes valores so sempre retornados por meio dos parmetros ou de variveis globais, mas nunca explicitamente, como no caso de funes. Portanto, a chamada de um procedimento nunca surge no meio de expresses, como no caso de funes. Pelo contrrio, a chamada de procedimentos s feita em comandos isolados dentro de um algoritmo, como as instrues de entrada (Leia) e sada (Escreva) de dados.

  • Algoritmos e Programao

    Procedimentos A sintaxe da definio de um procedimento : PROCEDIMENTO ( ) Var Inicio FimProcedimento

  • Algoritmos e Programao

    Procedimentos Detalhe o nome simblico pelo qual o procedimento invocado por

    outros algoritmos;

    so os parmetros do procedimento;

    so as definies das variveis locais ao procedimento. Sua forma anloga da definio de variveis num algoritmo;

    o conjunto de instrues do corpo do procedimento, que executado toda vez que o mesmo invocado.

  • Algoritmos e Programao

    Procedimentos

  • Algoritmos e Programao

    Procedimentos No exemplo conveniente observar:

    A forma de invocao dos procedimentos, por meio do seu

    nome, seguido de seus eventuais parmetros (no caso, nenhum), num comando isolado dentro do algoritmo principal.

  • Algoritmos e Programao

    Funes

  • Algoritmos e Programao

    Funes Funes so as estruturas que permitem ao

    desenvolvedores separar seus programas em blocos. Se no as tivssemos, os programas teriam que ser curtos e de pequena complexidade. Para fazermos programas grandes e complexos temos de constru-los bloco a bloco.

  • Algoritmos e Programao

    Funes Uma funo um mdulo que tem por objetivo calcular e

    retornar ao algoritmo, procedimento ou funo "chamador" um valor. A chamada de uma funo para execuo feita apenas citando-se o seu identificador no meio de uma expresso. Vide as funes previamente existentes no nosso pseudo-cdigo. Uma funo dita recursiva quando chama a ela prpria.

  • Algoritmos e Programao

    Funes Resumindo Funes:

    Funes so nada mais do que subprogramas, isto ,

    pedaos de programas dentro de programas.

  • Algoritmos e Programao

    Funes O conceito de Funo originrio da idia de funo

    matemtica (por exemplo, raiz quadrada, seno, coseno, tangente, logaritmo, entre outras), onde um valor calculado a partir de outro(s) fornecido(s) funo. FUNCAO ( ) : VAR INICIO

    retorne

    FIMFUNCAO

  • Algoritmos e Programao

    Funes - Reaproveitamento de cdigo

    Vez por outra nos deparamos com situaes onde temos que escrever cdigos parecidos, mas muito parecidos em trechos diferentes do programa. As vezes a diferena de um para outro questo de uma ou outra varivel que muda.

    Tal fato ocorre com muita frequncia, muitas vezes o trecho exatamente o mesmo.

  • Algoritmos e Programao

    Funes - Reaproveitamento de cdigo

    Ento faz sentido que possamos estruturar o cdigo repetido de maneira a constituir um subprograma e, no programa propriamente dito, fazer o cdigo do subprograma ser executado para diferentes valores de variveis. Isto provoca uma grande economia de cdigo escrito, ao mesmo tempo em que facilita a manuteno do programa.

  • Algoritmos e Programao

    Funes Exemplo

  • Algoritmos e Programao

    Funes A invocao de uma funo feita pelo simples

    aparecimento do nome da mesma, seguido pelos respectivos parmetros entre parnteses, dentro de uma expresso. A funo executada e, ao seu trmino, o trecho do comando que a invocou substitudo pelo valor retornado pela mesma dentro da expresso em que se encontra, e a avaliao desta prossegue normalmente.

  • Algoritmos e Programao

    Funes Uma funo, devolve ao algoritmo que a chamou apenas um

    valor, calculado por ela, e definido no comando retorne.

    Exemplo

  • Algoritmos e Programao

    Funes - Variveis Variveis globais so aquelas declaradas no incio de um

    algoritmo. Estas variveis so visveis (isto , podem ser usadas) no algoritmo principal e por todos os demais subalgoritmos.

    Variveis locais so aquelas definidas dentro de um subalgoritmo e, portanto, somente visveis (utilizveis) dentro do mesmo. Outros subalgoritmos, ou mesmo o algoritmo principal, no podem utiliz-las.

  • Algoritmos e Programao

    Funes - Parmetros Parmetros so canais pelos quais se estabelece uma

    comunicao bidirecional entre um subalgoritmo e o algoritmo chamador (o algoritmo principal ou outro subalgoritmo). Dados so passados pelo algoritmo chamador ao subalgoritmo, ou retornados por este ao primeiro por meio de parmetros.

  • Algoritmos e Programao

    Funes Parmetros Parmetros formais so os nomes simblicos introduzidos

    no cabealho de subalgoritmos, usados na definio dos parmetros. Dentro de um subalgoritmo trabalha-se com estes nomes da mesma forma como se trabalha com variveis locais ou globais.

  • Algoritmos e Programao

    Funes Parmetros formais

    No exemplo anterior, X e Y so parmetros formais da

    funo Media.

    Parmetros reais so aqueles que substituem os parmetros formais quando da chamada de um subalgoritmo. Por exemplo, o trecho seguinte de um algoritmo invoca a funo Mdia com os parmetros reais 8 e 7 substituindo os parmetros formais X e Y seria Z := Media(8, 7)

  • Algoritmos e Programao

    Funes - Mecanismos de Passagem de Parmetros Como vimos anteriormente, os parmetros reais substituem

    os formais no ato da invocao de um subalgoritmo. Esta substituio denominada passagem de parmetros e pode se dar segundo dois mecanismos distintos: passagem por valor (ou por cpia) ou passagem por referncia.

  • Algoritmos e Programao

    Funes - Passagem de Parmetros por Valor Na passagem de parmetros por valor (ou por cpia) o

    parmetro real calculado e uma cpia de seu valor fornecida ao parmetro formal, no ato da invocao do subalgoritmo. A execuo do subalgoritmo prossegue normalmente e todas as modificaes feitas no parmetro formal no afetam o parmetro real, pois trabalha-se apenas com uma cpia do mesmo.

  • Algoritmos e Programao

    Funes - Passagem de Parmetros por Referncia Neste mecanismo de passagem de parmetros no feita

    uma reserva de espao em 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.

  • Algoritmos e Programao

    Funes - Passagem de Parmetros por Referncia Um mesmo subalgoritmo pode utilizar diferentes

    mecanismos de passagem de parmetros, para parmetros distintos. Para diferenciar uns dos outros, convencionou-se colocar o prefixo VAR antes da definio dos parmetros formais passados por referncia. Se por exemplo um procedimento tem o seguinte cabealho:

    Procedimento PROC( X, Y : inteiro; Var Z : real; J: real)

  • Algoritmos e Programao

    Funes - Passagem de Parmetros por Referncia X e Y so parmetros formais do tipo inteiro e so passados

    por valor;

    Z um parmetro formal do tipo real passado por referncia;

    J um parmetro formal do tipo real passado por valor.

  • Algoritmos e Programao

    Funo X Procedimento Um procedimento difere de uma funo basicamente, pois,

    no tem um valor de retorno associado. Isto faz com que ele se comporte como um comando extra da linguagem ao passo que a funo tem um comportamento mais parecido com o de uma expresso aritmtica ou booleana. Um prottipo para um procedimento de definido ento com base em apenas duas informaes:

    O identificador do procedimento (nome) A lista de parmetros (que podem ser por valor ou

    referncia).

  • Algoritmos e Programao

    Funo X Procedimento Resumindo, os procedimentos diferem das funes apenas

    por no retornarem nada, nenhum valor.

    Exemplo

  • Algoritmos e Programao

    Arredondamento Exemplo

  • Algoritmos e Programao

    String e Funes de Manipulao Toda linguagem de programao j vem com um grupo de

    funes que facilitam a vida do programador. Estas funes realizam os clculos aritmticos, trigonomtricos e de manipulao e converso de dados mais comuns; assim, o programador no tem que reinventar a roda a cada programa que faz.

    A este grupo de funes d-se s vezes o nome de biblioteca.

  • Algoritmos e Programao

    String e Funes de Manipulao Como usar uma funo?

    Em termos simples, uma funo pode ser usada em

    qualquer lugar onde uma varivel tambm pode, a no ser, naturalmente, no "lado esquerdo da seta" em um comando de atribuio - uma funo produz (diz-se no linguajar dos programadores retorna) um valor, e no o recebe.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    Abs( expresso) - Retorna o valor absoluto de uma expresso do tipo inteiro ou real. Equivale a | expresso | na lgebra.

    ArcCos( expresso) - Retorna o ngulo (em radianos) cujo co-seno representado por expresso.

    ArcSen( expresso) - Retorna o ngulo (em radianos) cujo seno representado por expresso.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    ArcTan( expresso) - Retorna o ngulo (em radianos) cuja tangente representada por expresso.

    Cos( expresso) - Retorna o co-seno do ngulo (em radianos) representado por expresso.

    CoTan( expresso) - Retorna a co-tangente do ngulo (em radianos) representado por expresso.

    Exp( base, expoente) - Retorna o valor de base elevado a expoente, sendo ambos expresses do tipo real.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    GraupRad( expresso) - Retorna o valor em radianos correspondente ao valor em graus representado por expresso.

    Int( expresso) - Retorna a parte inteira do valor representado por expresso.

    Log( expresso) - Retorna o logaritmo na base 10 do valor representado por expresso.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    LogN( expresso) - Retorna o logaritmo neperiano (base e) do valor representado por expresso.

    Pi - Retorna o valor 3.141592.

    Quad( expresso) - Retorna quadrado do valor representado por expresso.

    RadpGrau( expresso) - Retorna o valor em graus correspondente ao valor em radianos representado por expresso.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    RaizQ( expresso) - Retorna a raiz quadrada do valor representado por expresso.

    Rand - Retorna um nmero real gerado aleatoriamente, maior ou igual a zero e menor que um.

    RandI( limite) - Retorna um nmero inteiro gerado aleatoriamente, maior ou igual a zero e menor que limite.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    Sen( expresso) - Retorna o seno do ngulo (em radianos) representado por expresso.

    Tan( expresso) - Retorna a tangente do ngulo (em radianos) representado por expresso.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    Os valores que esto entre parnteses, representados pelas palavras como expresso, base e expoente, so os parmetros, ou como dizem alguns autores, os argumentos que passamos para a funo para que realize seus clculos e retorne um outro, que usaremos no programa. Algumas funes, como Pi e Rand, no precisam de parmetros, mas a maioria tem um ou mais. O valor dos parmetros naturalmente altera o valor retornado pela funo.

  • Algoritmos e Programao

    Funes numricas, algbricas e trigonomtricas

    Exemplo

  • Algoritmos e Programao

    Funes para manipulao de cadeias de caracteres (strings)

    Asc (s : caracter) : Retorna um inteiro com o cdigo ASCII do primeiro caracter da expresso.

    Carac (c : inteiro) : Retorna o caracter cujo cdigo ASCII corresponde expresso.

    Caracpnum (c : caracter) : Retorna o inteiro ou real representado pela expresso. Corresponde a StrToTin() ou StrToFloat() do Delphi, Val() do Basic ou Clipper, etc.

  • Algoritmos e Programao

    Funes para manipulao de cadeias de caracteres (strings) Compr (c : caracter) : Retorna um inteiro contendo o

    comprimento (quantidade de caracteres) da expresso.

    Copia (c : caracter ; p, n : inteiro) : Retorna um valor do tipo caracter contendo uma cpia parcial da expresso, a partir do caracter p, contendo n caracteres. Os caracteres so numerados da esquerda para a direita, comeando de 1.

  • Algoritmos e Programao

    Funes para manipulao de cadeias de caracteres (strings) Maiusc (c : caracter) : Retorna um valor caracter contendo a

    expresso em maisculas.

    Minusc (c : caracter) : Retorna um valor caracter contendo a expresso em minsculas.

    Numpcarac (n : inteiro ou real) : Retorna um valor caracter contendo a representao de n como uma cadeia de caracteres.

  • Algoritmos e Programao

    Funes para manipulao de cadeias de caracteres (strings) Pos (subc, c : caracter) : Retorna um inteiro que indica a

    posio em que a cadeia subc se encontra em c, ou zero se subc no estiver contida em c.

    Exemplo

  • Algoritmos e Programao

    F I M

    Algoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e ProgramaoAlgoritmos e Programao