Saltar para o conteúdo
edumaterial.netMudar idioma

Voltar a Aplicações Informáticas B

Funções e passagem de parâmetros

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?

  1. Calculo o fator que resta após a taxa: 1 − 0,25 = 0,75.
  2. Aplico 80 × 0,75 e obtenho 60 como valor devolvido pela chamada.
  3. 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.

Cartão de preço e ficha de desconto entram numa caixa de processamento; sai um resultado único.
Visualizar parâmetros, cálculo e retorno de uma função.

Verifica agora

  1. Ver a ilustração

    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.

  2. Ver a ilustração

    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.

  3. Ver a ilustração

    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.

  4. Ver a ilustração

    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