Ana səhifə

Universidade Regional Integrada do Alto Uruguai e das Missões Campus Frederico Westphalen Departamento de Engenharias e Ciência da Computação Algoritmos e Estrutura de Dados I informática I


Yüklə 0.52 Mb.
səhifə11/23
tarix25.06.2016
ölçüsü0.52 Mb.
1   ...   7   8   9   10   11   12   13   14   ...   23

9.Subalgoritmos


A complexidade dos algoritmos está intimamente ligada à da aplicação a que se destinam. Em geral, problemas complicados exigem algoritmos extensos para sua solução.

Sempre é possível dividir problemas grandes e complicados em problemas menores e de solução mais simples. Assim, pode-se solucionar cada um destes pequenos problemas separadamente, criando algoritmos para tal (subalgoritmos). Posteriormente, pela justaposição destes subalgoritmos elabora-se “automaticamente” um algoritmo mais complexo e que soluciona o problema original. Esta metodologia de trabalho é conhecida como Método de Refinamentos Sucessivos, cujo estudo é assunto de cursos avançados sobre técnicas de programação.

Um subalgoritmo é um nome dado a um trecho de um algoritmo mais complexo e que, em geral, encerra em si próprio um pedaço da solução de um problema maior – o algoritmo a que ele está subordinado. Este conceito é essencial numa ciência bastante recente: a Engenharia de Software.

Em resumo, os subalgoritmos são importantes na:



  • subdivisão de algoritmos complexos, facilitando o seu entendimento;

  • estruturação de algoritmos, facilitando principalmente a detecção de erros e a documentação de sistemas; e

  • modularização de sistemas, que facilita a manutenção de softwares e a reutilização de subalgoritmos já implementados.

A idéia da reutilização de software tem sido adotada por muitos grupos de desenvolvimento de sistemas de computador, devido à economia de tempo e trabalho que proporcionam. Seu princípio é o seguinte: um conjunto de algoritmos destinado a solucionar uma série de tarefas bastante corriqueiras é desenvolvido e vai sendo aumentado com o passar do tempo, com o acréscimo de novos algoritmos. A este conjunto dá-se o nome de biblioteca. No desenvolvimento de novos sistemas, procura-se ao máximo basear sua concepção 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 seqüência de comandos que é repetida várias vezes num algoritmo. Nestes casos, os subalgoritmos proporcionam uma diminuição do tamanho de algoritmos maiores. Antigamente, esta propriedade era tida como a principal utilidade dos subalgoritmos.


9.1Mecanismo de Funcionamento


Um algoritmo completo é dividido num algoritmo principal e diversos subalgoritmos (tantos quantos forem necessários e/ou convenientes). O algoritmo principal é aquele por onde a execução do algoritmo sempre se inicia. Este pode eventualmente invocar os demais subalgoritmos.

O corpo do algoritmo principal é sempre o último trecho do pseudocódigo de um algoritmo. As definições dos subalgoritmos estão sempre colocadas no trecho após a definição das variáveis globais e antes do corpo do algoritmo principal:



Algoritmo <nome do algoritmo>

Var <definição das variáveis globais>

<definições dos subalgoritmos>

Inicio

<corpo do algoritmo principal>

Fim.

Durante a execução do algoritmo principal, quando se encontra um comando de invocação de um subalgoritmo, a execução do mesmo é interrompida. A seguir, passa-se à execução dos comandos do corpo do subalgoritmo. Ao seu término, retoma-se a execução do algoritmo que o chamou (no caso, o algoritmo principal) no ponto onde foi interrompida (comando de chamada do subalgoritmo) e prossegue-se pela instrução imediatamente seguinte.

Note, também, que é possível que um subalgoritmo chame outro através do mesmo mecanismo.

9.2Definição de Subalgoritmos


A definição de um subalgoritmo consta de:

  • um cabeçalho, onde estão definidos o nome e o tipo do subalgoritmo, bem como os seus parâmetros e variáveis locais;

  • um corpo, onde se encontram as instruções (comandos) do subalgoritmo.

O nome de um subalgoritmo é o nome simbólico pelo qual ele é chamado por outro algoritmo.

O corpo do subalgoritmo contém as instruções que são executadas cada vez que ele é invocado.



Variáveis locais são aquelas definidas dentro do próprio subalgoritmo e só podem ser utilizadas pelo mesmo.

Parâmetros são canais por onde os dados são transferidos pelo algoritmo chamador a um subalgoritmo, e vice-versa. Para que possa iniciar a execução das instruções 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 comunicação bidirecional pode ser feita de dois modos que serão estudados mais à frente: por meio de variáveis globais ou por meio da passagem de parâmetros.

O tipo de um subalgoritmo é definido em função do número de valores que o subalgoritmo retorna ao algoritmo que o chamou. Segundo esta classificação, os algoritmos podem ser de dois tipos:



  • funções, que retornam um, e somente um, valor ao algoritmo chamador;

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

Na realidade, a tarefa desempenhada por um subalgoritmo do tipo função pode perfeitamente ser feita por outro do tipo procedimento (o primeiro é um caso particular deste). Esta diferenciação é feita por razões históricas, ou, então, pelo grande número de subalgoritmos que se encaixam na categoria de funções.

9.3Funções


O conceito de Função é originário da idéia de função matemática (por exemplo, raiz quadrada, seno, cosseno, tangente, logaritmo, entre outras), onde um valor é calculado a partir de outro(s) fornecido(s) à função.

A sintaxe da definição de uma função é dada a seguir:



Função <nome> ( <parâmetros> ) <tipo_de_dado>

Var <variáveis locais>

Início

<comando composto>

Fim

Temos que:



  • <nome> é o nome simbólico pelo qual a função é invocada por outros algoritmos;

  • <parâmetros> são os parâmetros da função;

  • <tipo de dado> é o tipo de dado da informação retornado pela função ao algoritmo chamador;

  • <variáveis locais> consiste na definição das variáveis locais à função. Sua forma é análoga à da definição de variáveis num algoritmo;

  • <comando composto> é o conjunto de instruções do corpo da função.

Dentro de um algoritmo, o comando de invocação de um subalgoritmo do tipo função sempre aparece dentro de uma expressão do mesmo tipo que o do valor retornado pela função.

A invocação de uma função é feita pelo simples aparecimento do nome da mesma, seguido pelos respectivos parâmetros entre parênteses, dentro de uma expressão. A função é executada e, ao seu término, o trecho do comando que a invocou é substituído pelo valor retornado pela mesma dentro da expressão em que se encontra, e a avaliação desta prossegue normalmente.

Dentro de uma função, e somente neste caso, o comando Retorne <expressão> é usado para retornar o valor calculado pela mesma. Ao encontrar este comando, a expressão entre parênteses é avaliada, a execução da função é terminada neste ponto e o valor da expressão é retornado ao algoritmo chamador. Vale lembrar que uma expressão pode ser uma simples constante, uma variável ou uma combinação das duas por meio de operadores. Esta expressão deve ser do mesmo tipo que o valor retornado pela função.

O algoritmo a seguir é um exemplo do emprego de função para calcular o valor de um número elevado ao quadrado.



Algoritmo Exemplo_de_função

Var X, Y : real
Função Quad(w : real) : real

Var Z : real

Inicio

Z := w * w



Retorne Z

Fim
Início

Escreva "Digite um número”

Leia X

Y := Quad(X)



Escreva X, " elevado ao quadrado é = ", Y

Fim.

Do exemplo anterior é importante notar que:

– a função Quad toma W como parâmetro do tipo real, retorna um valor do tipo real e possui Z como uma variável local real;

– o comando de invocação da função Quad aparece no meio de uma expressão, no comando de atribuição dentro do algoritmo principal.


1   ...   7   8   9   10   11   12   13   14   ...   23


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət