Função é um conjunto de instruções agrupadas que, juntas, realizam determinada tarefa. Na linguagem C++, por exemplo, diversas funções como printf() e scanf() já vem como padrão em certas bibliotecas. Entretanto, nem sempre somente funções previamente criadas serão o suficiente e então precisaremos escrever nossas próprias funções.

Sintaxe de uma função:

#include <iostream>
using namespace std;
tipo_do_retorno nome_da_função(tipo_do_parâmetro parâmetro){
// Conjunto de instruções
return retorno;
}

Toda a função retorna um valor de determinado tipo, que também determina o tipo da função. Por exemplo, se a função retorna um número inteiro ela é uma função do tipo Int. Em C++, existe apenas uma exceção que ocorre quando a função não retorna nada. Nesse caso, a função é do tipo Void. Além do tipo, toda a função tem um nome. Qualquer nome pode ser utilizado ao declarar uma função, exceto main, que está reservado para a função que inicia a execução do programa.

Para entendermos as funções de forma menos geral, vamos criar uma função chamada Soma do tipo Int que recebe dois inteiros como parâmetro e retorna a soma deles.

#include <iostream>
using namespace std;
int Soma(int a, int b){
return a + b;
}

Como mostrado na figura acima, para declararmos uma função, devemos seguir os seguintes passos: Declarar o tipo da função que queremos criar, seguido por um espaço em branco e o seu nome, que deve ser diferente de main. Ao lado do seu nome, sempre precisamos colocar os parênteses, para diferenciarmos uma simples variável de uma função. Dentro desses parênteses podemos passar qualquer quantidade de parâmetros que quisermos. Caso não quisermos passar nenhum, basta deixá-lo em branco. Se quisermos apenas um, só precisamos dizer o seu tipo e o seu nome. Para qualquer quantidade acima de 1 parâmetro, basta separá-los com vírgulas.

Note que as funções podem conter parâmetros de diferentes tipos e que podem retornar valores de tipos diferentes do tipo da função. Abaixo, segue um exemplo de uma função de tipo string que recebe como parâmetro um inteiro.

#include <iostream>
using namespace std;
string inverso(int x){ // função que retorna o número escrito da direita pra esquerda
string retorno;
while(x!=0){
int digito = x%10; // digito é último dígito do número
retorno += digito+'0'; // retorno recebe o caractere equivalente ao inteiro digito
x/=10; // divido x por 10, ou seja, elimino o último dígito de x
}
return retorno;
}

Para finalizarmos, devemos nos perguntar: como se usa uma função? Basta escrever o seu nome seguido por parênteses com os parâmetros necessários.

#include <bits/stdc++.h>
using namespace std;
int Soma(int a, int b){
return a + b;
}
string inverso(int x){
string retorno;
while(x!=0){
int digito = x%10;
retorno += digito+'0';
x/=10;
}
return retorno;
}
int main(){
int x, y;
scanf("%d%d", &x, &y);
printf("%s\n", inverso(Soma(x, y)).c_str()); // note que utilizamos o retorno de uma função como parâmetro de outra função
}

Problemas para praticar: