O comando return - obtendo resultados das funções

Se você tiver notado bem, até o momento, em nosso estudo sobre as funções na linguagem C, as tarefas foram todas realizadas dentro das funções.

E se quiséssemos obter o resultado da soma, que foi calculada internamente da função soma()? Ou o resultado do produto? Nem sempre exibir os resultados, como foi feito no exemplo de programa em C passado e quando usamos funções aninhadas, é o que queremos.

Muitas vezes queremos o resultado em si, e é isso que aprenderemos nesse artigo de nossa apostila.

Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!

O que é e como usar o comando return em C

Lembra que declaramos as funções com uma palavrinha no começo, void ?
Pois é, void em inglês quer dizer vazio, sem nada. O que isso quer dizer?

Por definição, toda função em C retorna algo, algum valor, variável. Pode retornar um inteiro, um float, um caractere, um vetor, struct ou outro tipo que você criou (veremos tudo isso em nosso curso online de C).

O void serviu pra indicar que tais funções não retornavam nada. E é verdade.
Elas simplesmente mostravam algo na tela, faziam uns cálculos, mas tudo ficava dentro do escopo das funções. Do lado de fora delas, não tínhamos acesso a esses cálculos.
Era como se as funções fossem caixas-pretas inacessíveis.

Pois bem, poucas coisas em programação são isoladas assim.
Na verdade, os diversos aplicativos e tarefas de uma máquina se comunicam, mandando informação um pro outro. E boa parte dessa comunicação é feita através do retorno das funções.

Se você já estudou outras linguagens, em Java as funções são chamadas de métodos e em Perl, de sub-rotinas. Nomes diferentes, mas ‘função’ parecida.

Se vamos retornar alguma informação de uma função, não vamos mais usar o void.
Vamos usar outros tipos conhecidos.

Exemplo de código C

Crie uma função que recebe dois números como argumentos e retorna a soma deles.

Vamos criar, na main(), três variáveis inteiras: duas para pedir ao usuário e uma terceira que irá armazenar o resultado da soma dessas variáveis.
Porém, essa soma será feita na função soma().

Declaramos, dentro dessa função, um inteiro ‘c’ que irá armazenar o valor da soma dos parâmetros. Vamos passarmos ‘num1’ e ‘num2’ como argumentos para a função de soma, que sempre armazena esses valores como ‘a’ e ‘b’, pois não importa o nome das variáveis que a função recebe, ela apenas colhe o valor e armazena em ‘a’ e ‘b’.

E a variável que declaramos dentro da função vai receber esse valor inteiro.
Como declaramos a função como: int soma(int a, int b), ela tem que retornar um valor inteiro No caso, ‘c’.

Usamos o comando return para retornar esse valor: return c;
Veja como ficou nosso código C:

#include <stdio.h>
 
int soma(int a, int b)
{
    int c;
    c = a + b;
    return c;
}
 
int main()
{
    int num1,
        num2,
        result;
 
    printf("Numeros a serem somados: ");
    scanf("%d", &num1);
    scanf("%d", &num2);
 
    result = soma(num1, num2);
 
    printf("Resultado: %d\n", result);
}





Exemplo de código

Escreva uma função que recebe dois floats como argumento, e retorna o produto deles.
Use o mínimo de variáveis possíveis.

No exemplo passado, declaramos a variável ‘c’ e a variável ‘result’ apenas para efeito de organização e didática, pois poderíamos ter feito:
return (a+b);
e
printf(“Resultado: %d\n”, soma(num1,num2));

Veja como fica o código da função que multiplica dois floats:

#include <stdio.h>

float produto(float a, float b)
{
    return (a*b);
}

int main()
{
    float num1,
          num2;

    printf("Numeros a serem multiplicados: ");
    scanf("%f", &num1);
    scanf("%f", &num2);

    printf("Resultado: %.2f\n", produto(num1,num2));
}

6 comentários:

Kaique Nunes disse...

Ótimo! Isso abre mais inúmeras vantagens e facilita na programação. Muito bem explicado. Brigado.

Anônimo disse...

CPROGRESSIVO é muito legal. É uma fonte riquíssima para pesquisas. Códigos interessantes e muitíssimo bem explicados

Robson Ferreira disse...

Se eu tivesse dinheiro, concerteza doaria pois aprendi muito com vocês.
Deus abençoe...

Marcelo Alves disse...

Olá, sou iniciante e uma coisa que me confunde é como que o Num1 sabe que é o a, e como o Num2 sabe que é o b, se o a não recebeu o valor Num1 e nem o b recebeu o valor Num2 tipo int a= Num1; int b= Num2

d2 disse...

estou aprendendo muito com o Cprogressivo

Natã Marques disse...

Eu só não consigo entender oque significa esse RETORNAR UM VALOR..
Como assim retornar? Eu entendi toda a lógica do return...mas não entendo essa palavra usada "RETORNAR UMA FUNÇÃO"

Gostou desse tutorial de C?
Sabia que o acervo do portal C Progressivo é o mesmo, ou maior que, de um livro ou curso presencial?
E o melhor: totalmente gratuito.

Mas para nosso projeto se manter é preciso divulgação.
Para isso, basta curtir nossa página no Facebook e/ou clicar no botão +1 do Google.
Contamos e precisamos de seu apoio.