ESTRUTURAÇÃO DOS MÓDULOS DE UM ALGORITMO
Uma subrotina é um algoritmo hierarquicamente subordinado a um
outro algoritmo geralmente chamado de módulo principal. Da mesma forma,
uma subrotina pode conter outras subrotinas aninhadas.
A
B
C
D
TIPOS BÁSICOS DE SUBROTINAS
Existem dois tipos básicos de subrotinas:
a) Procedimentos;
b) Funções.
PROCEDIMENTOS
Os procedimentos são utilizados quando um conjunto de comandos
repete-se ao longo do algoritmo. Então, para não escrevermos várias vezes o
mesmo bloco de comandos, usamos os procedimentos.
Sintaxe:
procedimento IDENTIFICADOR (parâmetros);
Comandos;
fim procedimento IDENTIFICADOR;
Onde:
- IDENTIFICADOR é o nome de referência do procedimento;
- parâmetros é a lista de variáveis que serão passadas ao procedimento para
serem manipuladas no seu interior. Na definição dos parâmetros também
devem ser declarados seus tipos. Nem todo procedimento utiliza-se de
parâmetros, portanto é um item opcional.
Exemplo:
procedimento LINHA (inteiro: COMPRIMENTO);
inteiro : I;
para I = 1 até COMPRIMENTO faça
escreva “-“;
fim para;
fim procedimento LINHA;
FUNÇÕES
As funções constituem um tipo especial de subrotina, bastante
semelhante ao procedimento, que tem a característica especial de retornar ao
algoritmo chamador um valor associado ao nome da função. Esta característica
permite uma analogia com o conceito de função na matemática.
A utilização de outras funções no algoritmo como por exemplo, seno,
tangente ou qualquer outra função “especial”, pode ser feita declarando-se um
procedimento função.
A declaração de uma função é semelhante a de um procedimento.
Difere somente na especificação do tipo da mesma, ou seja, do tipo de valor
que será retornado.
Apesar de terem sido citadas apenas funções numéricas, elas
podem ser lógicas ou literais.
Sintaxe:
função tipo de retorno: IDENTIFICADOR (parâmetros);
comandos;
fim função IDENTIFICADOR;
Onde:
- tipo de retorno é o tipo de dado que a função retornará (inteiro, real, lógico,
caracter);
- IDENTIFICADOR é o nome de referência da função;
- parâmetros é a lista de variáveis que serão passadas à função para serem
manipuladas no seu interior. Na definição dos parâmetros também devem
ser declarados seus tipos. Nem toda função utiliza-se de parâmetros,
portanto é um item opcional.
Exemplo:
função lógico: PAR (inteiro : N);
se (N mod 2 = 0) então
PAR = verdadeiro
senão
PAR = falso;
fim se;
fim função PAR;
PASSAGEM DE PARÂMETROS
A transferência de informações de e para subrotinas utilizando-se
variáveis globais não constitui uma boa disciplina de programação.
Estas transferências precisam ser melhor formalizadas e
documentadas a bem da legitimidade, documentação e organização do
programa elaborado.
Em algoritmos, a transferência de informações de e para subrotinas
pode ser feita com a utilização de parâmetros.
Esta utilização formaliza a comunicação entre módulos. Além disso,
permite que um módulo seja utilizado com operandos diferentes, dependendo
do que se deseja do mesmo.
Parâmetros de definição são objetos utilizados dentro das subrotinas
que em cada ativação representam objetos de nível mais externo. A forma de
se utilizar parâmetros em subrotinas foi apresentada anteriormente.
A chamada de uma subrotina aparece numa expressão e tem a
seguinte forma:
NOME DO
chamada);
PROCEDIMENTO/FUNÇÃO
(Lista
de
parâmetros
de
Exemplo:
início
real : A, B, C;
procedimento EXEMPLO (real: VALOR1, VALOR2, VALOR3);
real : MAIORVALOR;
MAIORVALOR = VALOR1;
se (VALOR2 > MAIORVALOR) então
MAIORVALOR = VALOR2;
fim se;
se (VALOR3 > MAIORVALOR) então
MAIORVALOR = VALOR3;
fim se;
escreva “O maior valor é: “, MAIORVALOR;
fim procedimento EXEMPLO;
{corpo do programa principal}
leia “Digite 3 números:”; A, B, C;
EXEMPLO (A, B, C);
escreva “Fim de execução”;
fim.
PASSAGEM DE PARÂMETROS POR VALOR
Na passagem de parâmetros por valor (ou por cópia) o parâmetro
real é calculado e uma cópia de seu valor é fornecida ao parâmetro formal, no
ato da invocação da subrotina. A execução da subrotina prossegue
normalmente e todas as modificações feitas no parâmetro formal não afetam o
parâmetro real, pois trabalha-se apenas com uma cópia do mesmo.
Exemplo:
início
inteiro : X;
procedimento PROC (inteiro: Y);
Y = Y + 1;
escreva “Durante = “, Y;
fim procedimento PROC;
X = 1;
escreva “Antes = “, X;
PROC (X);
escreva “Depois = “, X;
fim.
O algoritmo anterior fornece o seguinte resultado:
Antes = 1;
Durante = 2;
Depois = 1;
Este tipo de ação é possível porque, neste mecanismo de passagem
de parâmetros, é feita uma reserva de espaço em memória para os parâmetros
formais, para que neles seja armazenada uma cópia dos parâmetros reais.
PASSAGEM DE PARÂMETROS POR REFERÊNCIA
Neste mecanismo de passagem de parâmetros não é feita uma
reserva de espaço em memória para os parâmetros formais. Quando uma
subrotina com parâmetros passados por referência é chamada, o espaço de
memória ocupado pelos parâmetros reais é compartilhado pelos parâmetros
formais correspondentes. Assim, as eventuais modificações feitas nos
parâmetros formais também afetam os parâmetros reais correspondentes.
Uma mesma subrotina pode utilizar diferentes mecanismos de
passagem de parâmetros, para parâmetros distintos. Para diferenciar uns dos
outros, convencionou-se colocar o prefixo var antes da definição dos
parâmetros formais passados por referência. Se por exemplo um procedimento
tem o seguinte cabeçalho:
procedimento PROC (inteiro: X, Y; real: var Z; real: J)
Então:
- X e Y são parâmetros formais do tipo inteiro e são passados por valor;
- Z é um parâmetro formal real passado por referência;
- J é um parâmetro formal real passado por valor.
O exemplo do item anterior, alterado para que o parâmetro Y do
procedimento seja passado por referência, torna-se:
início
inteiro : X;
procedimento PROC (inteiro: var Y);
Y = Y + 1;
escreva “Durante = “, Y;
fim procedimento PROC;
X ← 1;
escreva “Antes = “, X;
PROC (X);
escreva “Depois = “, X;
fim.
O resultado do algoritmo modificado é:
Antes = 1;
Durante = 2;
Depois = 2;
Download

Procedimentos e funções