Módulo 12 - Funções, as máquinas do algoritmo
Retorno: o que sai da máquina
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026
O que você vai aprender
- Entender o retorne como a saída oficial da máquina.
- Guardar o valor retornado numa variável e usá-lo em contas seguintes.
- Diferenciar retornar (devolver para o algoritmo) de escrever (mostrar na tela).
- Reconhecer procedimentos: funções que fazem trabalho sem devolver valor.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Retorno: o que sai da máquina.
Os objetivos desta aula. Entender o retorne como a saída oficial da máquina. Guardar o valor retornado numa variável e usá-lo em contas seguintes. Diferenciar retornar (devolver para o algoritmo) de escrever (mostrar na tela). Reconhecer procedimentos: funções que fazem trabalho sem devolver valor.
Veja o essencial, parte por parte.
A vitamina precisa sair do copo. retorne valor é a saída da máquina: entrega o resultado para quem chamou e encerra a função ali.
Retornar não é escrever na tela. Chegou a hora de desarmar a confusão mais teimosa deste módulo: retornar e escrever parecem irmãos, mas atendem clientes diferentes.
As máquinas que não devolvem nada. Pergunte: o resultado precisa ser usado DEPOIS por outra parte do algoritmo?
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
A vitamina precisa sair do copo
Até aqui a nossa máquina recebe ingredientes e trabalha, mas falta o gesto final: servir o resultado. Em funções, esse gesto é o comando retorne. Quando a execução encontra retorne resultado, duas coisas acontecem de uma vez: o valor viaja de volta para o ponto exato da chamada, e a função encerra na hora, ignorando qualquer linha que exista depois. É o garçom colocando a vitamina no seu lado do balcão: o trabalho da cozinha terminou, e agora o valor é seu para beber, guardar ou misturar em outra receita.
função dobro(numero)
retorne numero * 2
fim função
valor <- dobro(7) // a chamada vira 14, e 14 entra na caixa valor
escreva(valor) // mostra: 14
escreva(dobro(50)) // mostra: 100 (o retorno alimenta o escreva direto)O retorno volta para o ponto da chamada: dá para guardar em variável ou usar na hora.
A linha valor <- dobro(7) merece uma leitura em câmera lenta, porque junta tudo o que o módulo ensinou. Primeiro, o algoritmo pula para dentro da máquina dobro levando o argumento 7. Lá dentro, o parâmetro numero vale 7, a conta produz 14 e o retorne devolve esse 14. De volta ao ponto da chamada, a expressão dobro(7) É o 14, e a atribuição do módulo 3 guarda o valor na caixa. Chamada de função vira valor: essa é a ideia que destrava o resto do curso.
Retornar não é escrever na tela
Chegou a hora de desarmar a confusão mais teimosa deste módulo: retornar e escrever parecem irmãos, mas atendem clientes diferentes. O escreva mostra algo para a PESSOA que está na frente da tela; o valor aparece e evapora, o algoritmo não consegue reaproveitá-lo. O retorne entrega o valor para o ALGORITMO que fez a chamada; a pessoa não vê nada, mas o programa agora tem o resultado na mão para somar, comparar ou guardar. Uma função que escreve o resultado em vez de retorná-lo é uma cozinha que grita “ficou pronto!” sem nunca servir o prato.
retorne resultado
- Entrega o valor para quem chamou a função.
- O valor pode ser guardado: media <- calcular_media(7, 9).
- Serve para o algoritmo continuar a conta.
- Invisível para a pessoa, essencial para o programa.
escreva(resultado)
- Mostra o valor na tela e pronto.
- Nada sobra para guardar: a informação evapora.
- Serve para a pessoa ler o resultado final.
- Visível para a pessoa, inútil para a conta seguinte.
🎮 Jogo da aula
A máquina de troco enlouqueceu
A padaria reclama: o troco está saindo negativo. Uma única linha está errada. Toque nela.
O bug do jogo ilustra uma disciplina de detetive: quando a saída vem errada, siga o caminho do valor. O argumento chegou certo ao parâmetro? A conta interna está correta? O retorne devolve a variável certa? No caso do troco, a estrutura inteira estava saudável e o defeito morava na fórmula, o tipo de erro que o teste de mesa do módulo 13 pega em segundos. Guarde o método: valor entra, valor se transforma, valor sai. O bug mora em uma dessas três estações.
As máquinas que não devolvem nada
Nem toda função precisa devolver um valor. A boas_vindas da aula 1 mostra mensagens e termina: o efeito dela acontece na tela, não numa caixa de memória. Funções assim são chamadas de procedimentos: fazem um trabalho visível (imprimir um recibo, mostrar um menu, tocar um alerta) sem produzir valor para guardar. A campainha de casa é o exemplo perfeito: apertar o botão causa um efeito, o toque, mas não sobra nada na sua mão. O escreva, olhado de novo, é um procedimento; o leia é uma função com retorno. Você usava os dois tipos sem saber o nome.
Teste rápido
A função calcular_media faz a conta e usa escreva para mostrar o resultado, sem retorne. Qual é a limitação prática?
Perguntas frequentes
- O que acontece com as linhas depois do retorne?
- Nada: elas nunca executam. O retorne encerra a função no ato, como o garçom que já serviu o prato e voltou para o salão. Linhas após um retorne incondicional são código morto, e encontrá-las num programa é sinal de descuido ou de sobra de alguma edição antiga.
- Uma função pode ter mais de um retorne?
- Pode, geralmente um por caminho de decisão: SE a nota for maior ou igual a 7, retorne “aprovado”, SENÃO retorne “recuperação”. Só um deles executa por chamada, porque o primeiro retorne alcançado encerra a máquina. É um jeito limpo de combinar as decisões do módulo 8 com funções.
- Posso usar o retorno de uma função como argumento de outra?
- Pode, e isso encadeia máquinas: escreva(dobro(7)) manda o 14 retornado direto para a boca do escreva, sem variável no meio. É a esteira da fábrica: a saída de uma máquina alimenta a entrada da seguinte. Se a leitura ficar confusa, uma variável intermediária resolve.
- A função pode retornar texto ou valor lógico, ou só número?
- Qualquer tipo do módulo 3: número, texto ou lógico (V ou F). Funções que retornam V ou F são especialmente úteis nas decisões, como eh_par(numero) dentro de um SE. Ela pode até retornar uma lista inteira do módulo 11.
- O que a chamada recebe quando a função é um procedimento, sem retorne?
- Nada aproveitável. Tentar guardar o resultado, como em x <- mostrar_menu(), deixa a caixa vazia ou indefinida, dependendo da linguagem. No pseudocódigo do curso, tratamos como erro de lógica: se não há retorno, não há o que atribuir.
- retorne e escreva podem aparecer na mesma função?
- Podem, quando a função precisa avisar algo no meio do trabalho e ainda devolver o resultado. Mas cuidado com o hábito: misturar cálculo e exibição na mesma máquina dificulta o reuso. O desenho mais limpo, que a aula 4 defende, é calcular numa função e mostrar em outra.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.