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.
- Leia este conteúdo no seu computador: Apostila C Progressivo
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)); }
13 comentários:
Ótimo! Isso abre mais inúmeras vantagens e facilita na programação. Muito bem explicado. Brigado.
CPROGRESSIVO é muito legal. É uma fonte riquíssima para pesquisas. Códigos interessantes e muitíssimo bem explicados
Se eu tivesse dinheiro, concerteza doaria pois aprendi muito com vocês.
Deus abençoe...
\(*~*)/ Muito Bom... Mas Fiquei Com Duvida na Parte do return ele Retorna os Valores que o usuario deixou nas variaveis num1 e num2 para
a função 'produtor' que setia o ( float a, float b)?
obrigado ..vocês me ajudaram muito ...
Muito SHOW!CPROGRESSIVO É uma fonte riquíssima.........................
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
estou aprendendo muito com o Cprogressivo
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"
Só relembrando...
as variáveis num1 e num2 declaradas na main (função principal) são os argumentos da função soma e da função produto.
Argumentos são os valores dos parâmetros.
Os parâmetros são as variáveis que a função recebe (no caso, a e b).
Dessa forma, ao invocar a função, você passa os argumentos
ex da função produto:
a e b são as variáveis da função produto
na função main() você recebe os números que serão multiplicados (num1 e num2)
e invoca a função produto na função main():
produto(num1,num2); //ao fazer isso, fica subentendido que a = num1 e b = num2, pois é respectivo.
ou seja, num1 e num2 serão os argumentos dos parâmetros a e b.
Caso ainda esteja confuso, dá uma voltada lá na parte de Argumentos e Parâmetros ;) http://www.cprogressivo.net/2013/03/Argumentos-e-Parametros-em-C-Funcoes-Aninhadas.html
Mas como se retorna o endereço de uma conteiro criado dentro da função?
Marcelo Alves, a função faz uma associação por posição.
quando ele usou "produto(num1,num2)" a função produto() associou num1 a float a. E num2 a float b. Por associação de posição, respectivamente... deu pra entender?
você não precisa especificar cada variaáel, sendo do tipo inteira ele ira reconhecer.
Postar um comentário