Definição

Funções são blocos de programas que permitem ao usuário deixar o programa mais legível e expansível.

Abaixo é apresentando um exemplo de programa que faz uso de funções:

O programa executando passo-a-passo (aguarde!!):

A estrutura de uma função

Tomamos como base a função abaixo:

Retorno da função

Dentro da função temos o pedaço de código: return resultado;

Durante a execução da função, quando alcançar uma declaração return a função encerra e retorna o valor. Uma função pode ter diversos return, porém só vai executar até alcançar o primeiro. Veja um exemplo:

Perceba que nesse caso, nem chegamos a comparar o valor com 0 (zero), pois se o número não for positivo, nem negativo, com certeza será 0.

Assim, verifique que na função a seguir, o comando printf irá apresentar um valor diferente do esperado:

Caso não se deseja ou espere que nenhum retorno seja feito por uma função, o return pode ser declarado sem valor depois e no cabeçalho da função utilizar a palavra void:

Parâmetros de uma função

Partimos agora para a passagem de parâmetros, dada a parte da função como modelo: nome_funcao(int valor1, int valor2)

Dentros do parênteses podem ser enviado vários parâmetros nas mais diversas combinações:

ou também nenhum parâmetro:

Os parâmetros são passados por valores para as variáveis e essas variáveis tem Escopo Local, isto é, poderão ser utilizadas apenas dentro da função.

Por exemplo, veja o programa a seguir:

De forma didática, podemos pensar a função como o bloco apresentado:

Todos os parâmetros, tanto de entrada quanto de saída, são passados por valores ou ponteiros (isso será um assunto futuro), sendo armazenados internamente nas suas respectivas variáveis.

Porém, podemos ter a variáveis com o Escopo Global, dessa forma, eles poderão ser utilizadas por funções internas:

A grande vantagem de se utilizar o Escopo Global é a possibilidade alterar o valor de uma variável por uma função e esse valor ser utilizado por outra função (há outra maneira de fazer isso com ponteiros):

Protótipos de Funções

Até agora nos exemplos estamos inserido as funções antes da função main, isso se deve a necessidade do compilador conhecer as funções que serão utilizadas antes da função principal (main).

E conforme o programa vai ficando grande, se torna inviável e pouco legível declarar todas as funções antes da função main. Por isso, as funções podem ser declaradas apenas através do Protótipos da Função, podendo ser antes da função main:

Ou ainda, incluíndo num arquivo separado (verifique os arquivos classificador.c e classificador.h) e fazendo o uso da diretiva #include:

Atividades

  • 1. Escreva uma função que calcule e apresente a distância entre dois pontos \((x1, y1)\) e \((x2, y2)\). Todos os números e valores de retorno devem ser do tipo float.
  • 2. Faça uma função que receba nota do aluno, retornando 1 se a nota for maior ou igual a 5, indicando que o aluno foi aprovado, ou 0 se for menor e indicando que o aluno foi reprovado.
  • 3. Utilizando a função da atividade anterior, faça um programa que leia 10 notas de alunos e identifique quantos foram aprovados e reprovados.