Upload
thiago-vieira
View
33
Download
2
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