Módulo 8 - Funções que valem ouro

Retornar não é imprimir: o valor que volta

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Diferenciar imprimir (mostrar na tela) de retornar (devolver um valor).
  • Usar o valor retornado por uma função em outra expressão.
  • Reconhecer por que uma função que só imprime é limitada.
  • Evitar o erro de esperar um resultado de uma função que só imprime.

Duas saídas bem diferentes

Aqui está a distinção que, quando cai a ficha, muda a forma de programar. Imprimir e retornar parecem parecidos porque os dois lidam com o resultado de uma função, mas eles conversam com destinatários diferentes. Imprimir é falar com a pessoa que olha a tela: escreva o total mostra o número para o usuário ler. Retornar é falar com o resto do programa: retorne o total devolve o número para que outra parte do código o use numa nova conta. A diferença fica clara com uma imagem: imprimir é dizer o resultado em voz alta numa sala; retornar é escrever o resultado num papel e entregar na mão de alguém. A voz se dissipa; o papel pode ser usado, somado, guardado.

Por que isso importa tanto? Porque uma função que só imprime é um beco sem saída. Imagine uma função que calcula a média de notas e só a imprime na tela. Ela é bonita, mas inútil para qualquer coisa além de mostrar: você não consegue somar essa média a outra, não consegue decidir aprovado ou reprovado com base nela, não consegue guardá-la numa lista de médias da turma. O resultado apareceu e evaporou. Agora, se a função RETORNA a média, ela vira uma peça de Lego: você encaixa o resultado onde quiser. media_ana recebe media(notas_ana), e agora a média é um valor vivo no seu programa, pronto para entrar em comparações, somas e decisões. Retornar é o que transforma uma função em ferramenta reutilizável.

Duas funções lado a lado. À esquerda, uma função com uma seta saindo para um monitor que mostra o número 7, rotulada imprimir: aparece e some. À direita, uma função com uma seta entregando um cartão com o número 7 de volta ao programa, onde ele é guardado numa variável e usado numa conta, rotulada retornar: o valor volta e pode ser reusado.
Imprimir joga o valor na tela e ele some; retornar entrega o valor de volta ao programa, que continua usando.

Usar o valor que volta

Quando uma função retorna um valor, a chamada dela vira, na prática, esse valor. É como se, no lugar onde você escreveu media(notas), o programa colocasse o número que a função devolveu. Isso significa que você pode usar a chamada da função em qualquer lugar onde um valor caberia: numa atribuição (m recebe media(notas)), numa comparação (se media(notas) >= 6), numa soma (total recebe media(prova1) + media(prova2)), até como argumento de outra função. Essa capacidade de encaixar o resultado de uma função dentro de outra expressão é o que dá poder de composição ao seu código: funções pequenas que retornam valores se combinam para resolver problemas grandes, cada uma fazendo bem a sua parte.

função dobro(x)
  retorne x * 2
fim

// o retorno vira o valor no lugar da chamada:
a <- dobro(5)          // a vale 10
b <- dobro(5) + 1      // b vale 11
se dobro(5) > 8 então  // 10 > 8 é verdadeiro
  escreva("Grande")
fim
escreva(dobro(dobro(3)))   // dobro(3) é 6, dobro(6) é 12

A chamada de uma função que retorna vira o valor devolvido, e pode ser usada em contas, comparações e até dentro de outra chamada.

🎮 Jogo da aula

A função que só imprime

Este código tenta usar o resultado de soma, mas a função não retorna nada, só imprime. Toque na linha onde está a causa do problema.

Quando imprimir e quando retornar

A regra prática é clara e vale a pena adotar. Uma função que CALCULA algo, uma média, um total, um preço com desconto, deve RETORNAR o resultado, porque quase sempre esse valor vai ser usado em outra parte do programa. Deixe a decisão de mostrar na tela para quem chamou a função. Assim a mesma função serve tanto para exibir o valor quanto para alimentar uma conta maior, sem amarrar o cálculo à tela. Imprimir dentro da função só faz sentido quando o objetivo dela é justamente comunicar com o usuário, como uma função que exibe um menu ou uma mensagem de boas-vindas. Misturar as duas coisas, uma função que calcula e imprime, costuma limitar o reuso: quem só queria o valor recebe também uma impressão indesejada. Calcule e retorne; mostre por fora.

Função que só imprime (limitada)

  • O resultado aparece na tela e some.
  • Não dá para somar, comparar ou guardar o valor.
  • Serve só para mostrar, nada além.

Função que retorna (reutilizável)

  • O valor volta para o programa.
  • Dá para guardar, somar, comparar, passar adiante.
  • Quem chama decide se mostra na tela ou usa numa conta.

Teste rápido

Uma função calcula o total de uma compra. Por que é melhor ela RETORNAR o total em vez de apenas IMPRIMI-lo?

Perguntas frequentes

Qual a diferença de uma frase entre retornar e imprimir?
Imprimir mostra um valor na tela para a pessoa ver; retornar devolve um valor para o programa continuar usando. Imprimir é comunicação com o usuário; retornar é comunicação com o resto do código. Uma função que calcula deve retornar; imprimir fica por conta de quem chama.
Uma função pode retornar e imprimir ao mesmo tempo?
Pode, tecnicamente, mas costuma ser uma má ideia misturar as duas coisas numa função de cálculo. Quem só queria o valor recebe uma impressão indesejada. O mais limpo é a função calcular e retornar, e a decisão de imprimir ficar de fora. Funções cujo propósito é comunicar (mostrar um menu) são a exceção.
O que acontece se eu usar o resultado de uma função que só imprime?
Você não recebe valor nenhum: a função imprimiu e não devolveu nada, então a variável que deveria guardar o resultado fica vazia. Tentar usar essa variável numa conta dá comportamento estranho ou erro. É um bug clássico de iniciante; o conserto é fazer a função retornar o valor.
Por que retornar deixa a função reutilizável?
Porque o valor devolvido pode ser encaixado em qualquer lugar onde um valor caberia: atribuições, comparações, somas, argumentos de outras funções. Isso permite compor funções pequenas para resolver problemas grandes. Uma função que só imprime é um beco sem saída; uma que retorna é uma peça de encaixe.
A função para de executar quando retorna?
Sim: ao encontrar o retorne, a função devolve o valor e encerra ali, ignorando qualquer linha depois dele. É por isso que as cláusulas de guarda funcionam, elas retornam cedo para sair da função. Colocar código depois de um retorno que sempre executa é um erro, porque esse código nunca roda.
Toda função precisa retornar algo?
Não. Funções cujo propósito é fazer uma ação (mostrar uma mensagem, salvar um dado) podem não retornar valor. Mas funções que calculam quase sempre devem retornar, para que o resultado sirva ao resto do programa. Na dúvida, se a função produz um valor que interessa, retorne-o.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.