Conversor de Moedas — Agência de Viagens
Algoritmo em linguagem natural, fluxograma e pseudocódigo
1. Especificação
Sistema de apoio para uma agência de viagens. O cliente informa um valor em reais (R$) e o sistema mostra quanto isso representa em outras moedas, usando taxas de câmbio definidas pela empresa.
| Item | Descrição |
|---|---|
| Entrada | O valor em reais (R$) e a moeda de destino escolhida no menu |
| Processamento | Chamar uma única função de conversão, passando o valor e a taxa da moeda escolhida |
| Saída | O valor convertido, com o símbolo e o nome da moeda de destino |
1.1 Tabela de câmbio da empresa
Taxas definidas pela agência — quantos reais custa uma unidade de cada moeda:
| Opção | Moeda | Símbolo | Taxa (R$ por 1 unidade) |
|---|---|---|---|
| 1 | Dólar americano | US$ | 5,2000 |
| 2 | Euro | EUR | 5,6500 |
| 3 | Libra esterlina | GBP | 6,6000 |
| 4 | Dólar canadense | CAD | 3,8000 |
| 5 | Peso argentino | AR$ | 0,0060 |
| 6 | Iene japonês | JPY | 0,0350 |
| 7 | Converter para todas as moedas | — | — |
| 0 | Encerrar | — | — |
Valores ilustrativos, fixados pela agência. Não são cotações de mercado em tempo real.
Os símbolos
€,£e¥foram substituídos pelos códigos ISOEUR,GBPeJPYnos literais do pseudocódigo, para não depender do suporte a Unicode do console.
1.2 Dicionário de variáveis
Constantes de câmbio (carregadas uma vez, no início):
| Variável | Tipo | Valor |
|---|---|---|
TAXA_DOLAR | real | 5,2000 |
TAXA_EURO | real | 5,6500 |
TAXA_LIBRA | real | 6,6000 |
TAXA_CAD | real | 3,8000 |
TAXA_PESO | real | 0,0060 |
TAXA_IENE | real | 0,0350 |
Variáveis de trabalho:
| Variável | Tipo | Conteúdo |
|---|---|---|
valorReais | decimal | Valor informado pelo cliente, em R$ |
opcao | inteiro | Item escolhido no menu (0 a 7) |
taxaEscolhida | decimal | Taxa correspondente à moeda selecionada |
nomeMoeda | texto | Nome da moeda escolhida, para exibição |
simboloMoeda | texto | Símbolo da moeda escolhida, para exibição |
valorConvertido | decimal | Resultado devolvido pela função |
2. A função de conversão — o coração do algoritmo
2.1 Contrato
| Aspecto | Definição |
|---|---|
| Nome | ConverterMoeda |
| Parâmetro 1 | valorEmReais (decimal) — quantia em R$ a ser convertida |
| Parâmetro 2 | taxaDaMoeda (decimal) — quantos reais custa 1 unidade da moeda de destino |
| Retorno | decimal — a quantia equivalente na moeda de destino |
| Cálculo | valorEmReais / taxaDaMoeda |
| Pré-condição | taxaDaMoeda deve ser maior que zero |
| Efeito colateral | Nenhum — a função apenas lê os parâmetros e devolve o resultado |
2.2 Por que uma função só, e não seis
A função não sabe qual moeda está convertendo, e é justamente isso que a torna reutilizável. Ela recebe um número e uma taxa, e devolve outro número. Quem decide qual taxa passar é o programa principal, a partir da escolha do cliente.
ConverterMoeda(1000,00; 5,2000) -> 192,31 (dólar)
ConverterMoeda(1000,00; 5,6500) -> 176,99 (euro)
ConverterMoeda(1000,00; 6,6000) -> 151,52 (libra)
Três moedas, três resultados, uma única função. Acrescentar o franco suíço amanhã não exige escrever ConverterParaFranco — exige apenas acrescentar uma taxa à tabela e uma linha ao menu. A regra de cálculo permanece intocada.
2.3 Por que dividir, e não multiplicar
Este é o ponto em que a maioria dos conversores erra. A taxa está expressa como "quantos reais valem 1 unidade da moeda estrangeira" — é assim que se cotam moedas no Brasil ("o dólar está a R$ 5,20"). Nesse formato:
| Operação | Conta | Resultado | Faz sentido? |
|---|---|---|---|
| Divisão (correta) | 1.000,00 / 5,2000 | US$ 192,31 | ✅ Menos dólares que reais — o dólar vale mais |
| Multiplicação (errada) | 1.000,00 × 5,2000 | US$ 5.200,00 | ❌ R$ 1.000 virariam US$ 5.200 |
A verificação mental é simples: se a moeda de destino vale mais que o real, o número tem que diminuir. Com o peso argentino (taxa 0,0060, ou seja, vale menos que o real), acontece o oposto — R$ 1.000,00 viram AR$ 166.666,67, e o número aumenta. A divisão acerta os dois casos; a multiplicação erra os dois.
A convenção inversa também é válida: guardar a taxa como "quantas unidades da moeda se compra com 1 real" (0,1923 para o dólar) e multiplicar. As duas funcionam, desde que a tabela e a fórmula sejam coerentes entre si. O erro fatal é misturar as duas — usar taxa de um formato com a operação do outro.