Capítulo 18: Funções (Modularização II)

🎯 Objetivo da Aula

Um procedimento apenas executa uma tarefa. Uma Função, por outro lado, executa um cálculo e devolve o resultado para o programa principal. Nesta aula, você aprenderá a criar funções com parâmetros e retorno. O objetivo é criar ferramentas de cálculo (como conversores e calculadoras de impostos) reutilizáveis.


🏢 O Cenário Prático (Seu Desafio)

Situação: A FastLog trabalha com importação e precisa converter valores de Dólar para Real constantemente. O Problema: Em vez de escrever a fórmula da conversão toda vez, precisamos de uma função que receba o “Valor em Dólar” e a “Cotação” e nos entregue o “Valor em Real” pronto.

Missão: Criar uma função financeira de conversão de câmbio.


🧠 Fundamentos: A Teoria Traduzida

1. Parâmetros e Retorno

Uma função pode receber dados e devolver resultados.

🍹 Exemplo 1: Cotidiano (Liquidificador)

  • Entrada (Parâmetros): Fruta e Açúcar.
  • Processo: Triturar.
  • Saída (Retorno): Suco.

💵 Exemplo 2: Técnico (Conversor de Moeda)

  • Entrada: Valor em US$ e Cotação do Dia.
  • Processo: Multiplicação.
  • Saída: Valor em R$.
graph LR
    P[Parâmetros: Valor e Cotação] --> F(Funcao Converter)
    F --> R[Retorno: Reais]
    
    style F fill:#8e44ad,stroke:#fff,color:#fff
    style R fill:#2ecc71,stroke:#fff,color:#fff

2. A Sintaxe no VisuAlg

Diferente do procedimento, a função precisa ter um Tipo de Retorno definido.

1
2
3
4
5
funcao NomeDaFuncao(parametro : tipo) : tipo_do_retorno
inicio
   // calculos
   retorne resultado
fimfuncao

📖 Exemplo Guiado: Conversor Financeiro

Diferente do procedimento, a função realiza um cálculo e devolve (retorna) o resultado para o programa principal. Ela deve ter um tipo de retorno definido.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
algoritmo "Conversor_Moedas"

funcao ConverterParaReal(v_dolar, cotacao : real) : real
inicio
   retorne v_dolar * cotacao
fimfuncao

var
   valor_usd, total_brl : real
inicio
   valor_usd <- 150.00
   total_brl <- ConverterParaReal(valor_usd, 5.15)
   escreval("Valor em Reais: R$ ", total_brl)
fimalgoritmo

🛠️ Prática Obrigatória 1: Calcular Imposto

Crie uma função chamada CalcularImposto(valor : real) : real. Essa função deve retornar 10% do valor enviado. No programa principal, peça um valor ao usuário, chame a função e exiba o imposto calculado.

✅ Resultado Esperado

1
2
Preço do Serviço: 500.0
Imposto (10%): R$ 50.0

🛠️ Prática Obrigatória 2: Conversor de Moedas FastLog

Crie uma função que receba um valor em Reais e a Cotação, e retorne o valor convertido em Dólar. No programa principal, use o retorno para exibir a mensagem: “O saldo disponível em conta é: $…”.

✅ Resultado Esperado

1
2
3
Saldo em Reais: 1000.0
Cotação: 5.0
Saldo em Dólar: $ 200.0

🔥 Desafio de Fixação (Opcional): Calculadora de Média

Crie uma função que receba duas notas de um aluno e retorne a média aritmética. No programa principal, use essa função para decidir se o aluno foi aprovado (média >= 7).


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Verifique se o comando retorne está sendo usado corretamente dentro da função.
  2. Salve os arquivos com a extensão .alg (Ex: Atividade_18_SeuNome.alg).
  3. Envie no Microsoft Teams na tarefa “VisuAlg Cap 18 - Funções”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
algoritmo "Imposto"
funcao CalcularImposto(v : real) : real
inicio
   retorne v * 0.10
fimfuncao

var
   preco : real
inicio
   escreva("Preço: ") leia(preco)
   escreva("Imposto: ", CalcularImposto(preco))
fimalgoritmo

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
algoritmo "Conversor_USD"
funcao RealParaDolar(v, cot : real) : real
inicio
   retorne v / cot
fimfuncao

var
   reais, cotacao : real
inicio
   escreva("Saldo em Reais: ") leia(reais)
   escreva("Cotação: ") leia(cotacao)
   escreva("Saldo em Dólar: $ ", RealParaDolar(reais, cotacao))
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
algoritmo "Media"
funcao CalcMedia(n1, n2 : real) : real
inicio
   retorne (n1 + n2) / 2
fimfuncao

var
   nota1, nota2 : real
inicio
   escreva("N1: ") leia(nota1)
   escreva("N2: ") leia(nota2)
   se (CalcMedia(nota1, nota2) >= 7) entao
      escreva("APROVADO")
   senao
      escreva("REPROVADO")
   fimse
fimalgoritmo