Cursos / Informática para Internet / Lógica de Programação / Aula
Sabemos que em funções e procedimentos deve haver uma comunicação entre o subalgoritmo e o algoritmo que o "chama", através das variáveis globais do algoritmo e das variáveis locais do subalgoritmo. A essa comunicação, damos o nome de passagem de parâmetros.
Os tipos de parâmetros que utilizamos nesse processo são dois. Veja-os a seguir:
Por exemplo, veja o cabeçalho da função fsoma, a seguir.
Funcao fsoma (a1, b1 :inteiro) : inteiro
As variáveis a1 e b1 são os parâmetros formais da função. Veja, agora, o seguinte trecho do algoritmo que chama essa função:
leia (a)
leia (b)
soma <- fsoma(a,b)
Os valores armazenados nas variáveis globais a e b são os parâmetros reais. Note que poderíamos, simplesmente, chamar a função, passando os valores diretamente: soma <- fsoma (3,5). Nesse caso, os números 3 e 5 seriam os parâmetros reais.
No processo de passagem de parâmetros, são passados dados de entrada do algoritmo para o subalgoritmo e dados de saída no sentido oposto. Veja esse processo ilustrado na Figura 2.
Na Figura 2, podemos ver uma função, no módulo da esquerda, que calcula uma soma entre dois números. No módulo da direita, temos o corpo do algoritmo que "chama" essa função.
O algoritmo passa os dados de entrada (números armazenados nas variáveis a e b, que são os parâmetros reais) para a função, que os armazena em suas variáveis locais a1 e b1 (parâmetros formais). O cálculo é efetuado e o valor encontrado é armazenado na variável local resultado. Através do comando retorne, esse valor é passado como dado de saída para o algoritmo (no momento da chamada da função), que o armazena na variável global soma para então ser exibido.
Em um procedimento, essa passagem de parâmetros é feita de uma forma um pouco diferente. Veja a Figura 3.
No procedimento, a comunicação de saída não é feita de forma explícita como na função. Veja que, ao contrário do que é feito na função, a palavra reservada var é utilizada nos parâmetros do procedimento. Veja, também, que na chamada ao procedimento todos os dados são passados como parâmetros, ao passo que na função, são passados apenas os dados de entrada (os números armazenados em a e b). Por que será que isso ocorre?
Porque os parâmetros, na função da Figura 2, estão sendo passados por valor e, no procedimento da Figura 3, os parâmetros estão sendo passados por referência.
Vamos compreender o que isso significa?
Versão 5.3 - Todos os Direitos reservados