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.