Se lhe fosse solicitado um algoritmo para preencher uma matriz, você o resolveria correto? Porém, se ao invés de uma matriz fossem solicitadas dez matrizes? Concordamos que o algoritmo ficaria muito cansativo e repetitivo. Mas, e se pudéssemos repetir o mesmo procedimento, quantas vezes necessário, o escrevendo apenas uma vez? Nós podemos. Para isso, usamos uma função. Função consiste em uma porção de código que resolve um problema muito específico, parte de um problema maior.
Algumas das vantagens na utilização de funções durante a programação são:
As componentes de uma funções são:
A declaração de função no Portugol é realizada da seguinte forma: Deve-se utilizar a palavra reservada funcao, seguido do tipo de retorno. Quando o tipo de retorno é ocultado, o Portugol assume que o retorno é do tipo vazio. Então, deve-se definir o nome da função seguido de abre parênteses, uma lista de parâmetros pode ser incluída antes do fecha parênteses. Para concluir a declaração deve-se criar o corpo da função. O corpo da função consiste em estruturas dentro do abre e fecha chaves. Quando uma função possui um tipo de retorno diferente de vazio, é obrigatória a presença do comando retorne no corpo da função.
A declaração dos parâmetros é similar a declaração de variável, vetor e matriz sem inicialização e devem ser separados por vírgula. Note que uma função do tipo vazio não tem retorno.
Para funções existem dois tipos de passagens de valores possíveis. São eles: por valor e por referência. A passagem de parâmetros por valor transfere para a função apenas o valor contido na variável, ou seja, a variável em si não terá seu conteúdo alterado. Já a passagem de parâmetro por referência transfere a variável como um todo, modificando a mesma de acordo com os comandos presentes no corpo da função.
Por padrão os parâmetros se comportam como passagem por valor, para o parâmetro se comportar como referência deve-se adicionar o simbolo & antes do nome do parâmetro.
Para melhor compreensão deste conceito, confira o exemplo abaixo.