Visão geral das funções
Em termos de programação, um functioné um bloco de instruções que executa uma tarefa específica. As funções aceitam dados, os processam e retornam um resultado. As funções são escritas principalmente para oferecer suporte ao conceito de reutilização. Depois que uma função é escrita, ela pode ser chamada facilmente, sem ter que escrever o mesmo código repetidamente.
Diferentes linguagens funcionais usam diferentes sintaxes para escrever uma função.
Pré-requisitos para escrever uma função
Antes de escrever uma função, um programador deve saber os seguintes pontos -
O objetivo da função deve ser conhecido do programador.
O algoritmo da função deve ser conhecido do programador.
Variáveis de dados de funções e seu objetivo devem ser conhecidos pelo programador.
Os dados da função devem ser conhecidos pelo programador que é chamado pelo usuário.
Controle de fluxo de uma função
Quando uma função é "chamada", o programa "transfere" o controle para executar a função e seu "fluxo de controle" é o seguinte -
O programa chega à instrução que contém uma "chamada de função".
A primeira linha dentro da função é executada.
Todas as instruções dentro da função são executadas de cima para baixo.
Quando a função é executada com sucesso, o controle volta para a instrução de onde começou.
Todos os dados calculados e retornados pela função são usados no lugar da função na linha de código original.
Sintaxe de uma função
A sintaxe geral de uma função é a seguinte -
returnType functionName(type1 argument1, type2 argument2, . . . ) {
// function body
}
Definindo uma função em C ++
Vamos dar um exemplo para entender como uma função pode ser definida em C ++, que é uma linguagem de programação orientada a objetos. O código a seguir tem uma função que adiciona dois números e fornece seu resultado como saída.
#include <stdio.h>
int addNum(int a, int b); // function prototype
int main() {
int sum;
sum = addNum(5,6); // function call
printf("sum = %d",sum);
return 0;
}
int addNum (int a,int b) { // function definition
int result;
result = a + b;
return result; // return statement
}
Ele produzirá a seguinte saída -
Sum = 11
Definindo uma função em Erlang
Vamos ver como a mesma função pode ser definida em Erlang, que é uma linguagem de programação funcional.
-module(helloworld).
-export([add/2,start/0]).
add(A,B) ->
C = A + B,
io:fwrite("~w~n",[C]).
start() ->
add(5,6).
Ele produzirá a seguinte saída -
11
Protótipo de Função
Um protótipo de função é uma declaração da função que inclui tipo de retorno, nome da função e lista de argumentos. É semelhante à definição de função sem corpo de função.
For Example - Algumas linguagens de programação suportam prototipagem de função e outras não.
Em C ++, podemos fazer o protótipo da função 'sum' assim -
int sum(int a, int b)
Note - Linguagens de programação como Python, Erlang, etc não suportam prototipagem de função, precisamos declarar a função completa.
Qual é o uso do protótipo de função?
O protótipo da função é usado pelo compilador quando a função é chamada. O compilador usa-o para garantir o tipo de retorno correto, a lista de argumentos apropriada é passada e seu tipo de retorno está correto.
Assinatura de Função
Uma assinatura de função é semelhante ao protótipo de função em que o número de parâmetros, o tipo de dados dos parâmetros e a ordem de aparecimento devem estar em ordem semelhante. Por exemplo -
void Sum(int a, int b, int c); // function 1
void Sum(float a, float b, float c); // function 2
void Sum(float a, float b, float c); // function 3
Function1 e Function2 têm assinaturas diferentes. Function2 e Function3 têm as mesmas assinaturas.
Note - A sobrecarga de função e a sobreposição de função, que discutiremos nos capítulos subsequentes, são baseadas no conceito de assinaturas de função.
A sobrecarga de função é possível quando uma classe tem várias funções com o mesmo nome, mas assinaturas diferentes.
A substituição de função é possível quando uma função de classe derivada tem o mesmo nome e assinatura de sua classe base.