Chamada de Função

O comando devolva está associado a definição de uma função (e portanto à palavra-reservada funcao). Se a função associada ao comando devolva não for vazia (ou seja, devolve algum tipo), então ele deve ter um parâmetro compatível ao tipo da função.

Um efeito importante do comando devolva é que ao ser executado, o fluxo de execução voltará para o ponto em que a função corrente foi invocada.

Um exemplo é a construção da função fatorial. Essa é uma função que tem domínio no corpo dos naturais e sua imagem é igualmente um valor natural. Como geralmente as linguagens não tem um tipo de variável natural, usaremos o tipo padrão inteiro.

A figura 1 ilustra a construção da expressão inteira para o comando devolva, no caso devolvendo o valor armazenado na variável fat.

       
        Fig. 1. Imagem ilustrando construção do comando devolva (devolverá fat).

O código abaixo (em Portugol) é o correspondente textual ao código visual na figura 1.


Portugol. Código textual correspondente

programa {
  funcao vazio inicio (  )  {
    inteiro n <- 0
    leia(n)
    escreva(fatorial(n)), "\n")
    }
  funcao inteiro fatorial (inteiro pn) {
    inteiro fat <- 1
    inteiro i <- 2
    enquanto_verdadeiro (i <= pn) {
      fat <- fat * i
      i <- i + 1
      }
    devolva fat
    }
  }