Skip to main content

Função (também chamado de procedimento, método, subprograma, ou rotina) é uma porção de código destinado a realizar uma tarefa única, específica.

Sub-rotina, (também conhecido como procedimento, função, rotina, método ou subprograma) é uma porção de código dentro de um programa maior, que executa uma tarefa específica e é relativamente independente do restante do código.

O conteúdo de uma sub-rotina é o seu corpo, o qual é executado quando a sub-rotina é chamada ou invocada.

Uma sub-rotina pode ser escrita de modo a receber um ou mais valores de dados - conhecidos como parâmetros ou argumentos - a partir do programa que faz a chamada. Ela também pode retornar um valor calculado para o seu chamador (seu valor de retorno), ou fornecer vários valores de resultado através de parâmetros out.

Na verdade, uma utilização comum de sub-rotinas é implementação de funções matemáticas, em que o efeito da sub-rotina é somente calcular um ou mais resultados cujos valores são inteiramente determinados pelos parâmetros passados ​​para a rotina. (Os exemplos incluem calcular o logaritmo de um número ou o determinante de uma matriz).

No entanto, uma chamada de sub-rotina também pode ter efeitos colaterais, como a modificação de estruturas de dados na memória do computador, lendo ou escrevendo para um dispositivo periférico, criando um arquivo, travar o programa ou a máquina, ou até mesmo atrasar a execução do programa por determinado tempo. Um subprograma com efeitos secundários podem retornar resultados diferentes cada vez que é chamado, mesmo se ele for chamado com os mesmos argumentos. Um exemplo é uma função de número aleatório, disponível em várias linguagens, que retorna um número aparentemente aleatório diferente a cada vez que é chamado. O uso generalizado de sub-rotinas com efeitos colaterais é uma característica das linguagens de programação imperativas.

Uma sub-rotina pode ser codificada para que possa chamar a si mesma de forma recursiva, em um ou mais locais, a fim de realizar a sua tarefa. Esta técnica permite a implementação direta de funções definidas por indução matemática e recursiva de algoritmos "dividir e conquistar".

Uma sub-rotina cujo objetivo é calcular uma única função com valor booleano (ou seja, para responder a uma pergunta sim/não) é chamada de predicado. Em linguagens de programação lógicas, muitas vezes todas as sub-rotinas são chamadas de "predicados", já que principalmente determinam o sucesso ou fracasso. Por exemplo, qualquer tipo de função é uma sub-rotina, exceto main().

A função é uma unidade comum de código para a maioria das outras linguagens de programação.

Função também tem uma definição matemática, o que é importante na ciência da computação e estatísticas. Função matemática tem relacionamento 1-1 onde um argumento sempre retorna o mesmo valor. Em linguagens funcionais puras, como Haskell apenas funções matemáticas são permitidas.

Ver mais na Wikipedia.