12.º anoPercurso edumaterial
O que vais aprender
- Decompor tarefas e distinguir argumentos, parâmetros e valor devolvido.
Compreender
Uma função recebe argumentos, trabalha com parâmetros locais e devolve um valor a quem a chamou. Na função de desconto, base 20 e taxa 0,10 produzem 18. Mostrar 18 no ecrã não é o mesmo que devolver 18 para calcular uma fatura. O contrato da função deve também dizer se altera dados externos; neste caso o preço guardado permanece 20.
Com base 20 e taxa 0,10, a função calcula 20 vezes 0,90 e devolve 18. Um teste adicional com taxa zero deve devolver o preço inicial; uma taxa fora do intervalo admitido deve receber tratamento explícito. Imprimir 18 no ecrã não substitui devolver 18 a outra função que precise de construir uma fatura. Os efeitos laterais devem ser deliberados e documentados. A frase «A função deve imprimir o resultado e, por isso, não precisa de devolver valor a quem a chamou.» ultrapassa aquilo que foi demonstrado. Para a corrigir, é necessário explicitar contrato de entradas, saída e efeitos laterais; testar taxa zero e fronteiras admitidas. A decisão resulta da comparação entre o dado, o conceito e a condição que ficou por testar.
No contrato de uma função de desconto, preço-base e taxa são parâmetros formais; 20 e 0,10 são argumentos de uma chamada concreta. A expressão preço-base × (1 − taxa) devolve 18 nessa chamada. Devolver não é imprimir: o programa que chamou a função pode guardar 18 para outra operação. Se a função não altera a lista original, esse efeito lateral ausente deve ser testado, além do valor devolvido. A taxa admissível deve ser definida antes de aceitar entradas arbitrárias.
Exemplo resolvido
Uma função da teoria recebe preço-base 80 e taxa 0,25, devolve base × (1 − taxa) e não altera a lista de preços. Qual é o retorno e que verificações separas?
- Calculo o fator que resta após a taxa: 1 − 0,25 = 0,75.
- Aplico 80 × 0,75 e obtenho 60 como valor devolvido pela chamada.
- Faço um teste ao retorno e outro à lista original: esta deve conservar o preço-base 80.
A função devolve 60; a lista original continua com 80 como preço-base.
Atenção ao erro
A função deve imprimir o resultado e, por isso, não precisa de devolver valor a quem a chamou.

Verifica agora
Com base 20 e taxa 0,10, que valor deve devolver a função e que valor permanece guardado?
Ver solução explicada
Resposta: Devolve 18; o preço-base guardado permanece 20.
Distingue resultado devolvido de estado original.
Um colega toma a seguinte conclusão como demonstrada: «A função deve imprimir o resultado e, por isso, não precisa de devolver valor a quem a chamou.». Localiza o salto e corrige a frase.
Ver solução explicada
Resposta: A conclusão excede o recorte. Parâmetros nomeiam entradas locais e o valor devolvido comunica resultado; não convém ocultar alterações a dados externos. Com base 20 e taxa 0,10, o resultado calculado é 18 sem mudar o preço guardado.
Refuta a inferência com uma condição concreta do caso.
Chama a função com preço-base 50 e taxa 0,20. Que valor devolve e o que deve acontecer à lista original de preços?
Ver solução explicada
Resposta: Devolve 50 × (1 − 0,20) = 40; a lista original conserva todos os seus valores porque o contrato exclui mutação.
Calcula o retorno e distingue-o do estado da lista de origem.
Escreve dois testes distintos para separar valor devolvido de efeito lateral no caso da taxa zero.
Ver solução explicada
Resposta: Com preço-base 20 e taxa 0, o retorno deve ser 20. Após a chamada, a lista original deve continuar com os mesmos elementos e valores; imprimir 20, por si só, não comprova o retorno.
Verifica separadamente saída da função e imutabilidade da lista.
Alinhamento curricular e fontes
- Introdução à programação, funções, página 6. Objetivo oficial parafraseado: Decompor tarefas e distinguir argumentos, parâmetros e valor devolvido.. O exemplo, a sequência e os exercícios são editoriais. · Aprendizagens Essenciais · aplicacoes-informaticas-b · 12-ano

