
Conheça o projeto
Nesse projeto você irá construir uma ferramenta de linha de comando (CLI) para converter um valor específico em Reais (BRL) para outra moeda, utilizando taxas de câmbio pré-definidas.
Instruções
Estrutura, regras e requisitos do projeto
Requisitos Funcionais
- Interface de Linha de Comando: O programa deve ser executável via terminal.
- Argumentos de Entrada: A aplicação deve aceitar exatamente dois argumentos na seguinte ordem:
[valor_em_brl]
: Um número (float) representando a quantia em Reais a ser convertida.[moeda_destino]
: O código da moeda para a qual o valor será convertido (ex:USD
,EUR
,JPY
).
- Fonte das Taxas: O programa deve utilizar as taxas de câmbio fornecidas abaixo. Você pode optar por:
- Carregar os dados de um arquivo
rates.json
local. - Incorporar (hardcode) os dados diretamente no seu código Go (por exemplo, usando um
map
).
- Carregar os dados de um arquivo
- Cálculo: O programa deve multiplicar o
[valor_em_brl]
pela taxa correspondente à[moeda_destino]
. - Saída: A aplicação deve imprimir no console apenas o valor final convertido, formatado com duas casas decimais.
Sintaxe de Comando Esperada
./convert [valor_em_brl] [moeda_destino]
Exemplos de Execução
# Exemplo 1: Converter 10 BRL para USD $ ./convert 10 USD 1.51 # Exemplo 2: Converter 12 BRL para JPY $ ./convert 12 JPY 195.48
Fonte de Dados (Taxas de Câmbio Base: BRL)
Utilize o JSON abaixo como fonte para as taxas de conversão.
{ "base": "BRL", "date": "2025-04-14", "rates": { "USD": 0.151, "EUR": 0.137, "JPY": 16.29, "GBP": 0.13, "CHF": 0.1402, "AUD": 0.2712, "CAD": 0.2374, "CNY": 1.251, "HKD": 1.326, "NZD": 0.2922, "SEK": 1.655, "NOK": 1.806, "DKK": 1.122, "SGD": 0.2249, "KRW": 242.97, "ZAR": 3.239, "MXN": 3.454, "INR": 14.71, "ILS": 0.63, "THB": 5.74, "IDR": 2875.0, "MYR": 0.754, "PHP": 9.74, "PLN": 0.644, "CZK": 3.77, "HUF": 61.59, "TRY": 6.49, "BGN": 0.293, "RON": 0.746 } }
Recursos Úteis (Referências)
- Argumentos de Linha de Comando: https://gobyexample.com/command-line-arguments
- Leitura de Arquivos (se optar por essa via): https://gobyexample.com/reading-files
- Processamento de JSON (Unmarshal): https://gobyexample.com/json
- Uso de Maps (se optar por hardcode): https://gobyexample.com/maps
Conceitos Praticados no Projeto
Ao desenvolver este projeto, você praticará os seguintes conceitos de programação em Go:
- Argumentos da Linha de Comando: Ler dados que o usuário passa pelo terminal (
os.Args
). - Estruturas de Dados: Usar
maps
para armazenar e acessar as taxas de câmbio. - Conversão de Tipos: Transformar texto (string) em um número (
float
) para realizar cálculos. - Manipulação de Strings: Modificar textos, como converter a moeda para letras maiúsculas.
- Lógica Condicional: Verificar as entradas do usuário com
if/else
. - Tratamento de Erros: Lidar com entradas inválidas (número errado de argumentos, moeda inexistente, etc.).
- Formatação de Saída: Imprimir o resultado final com um formato específico (ex: duas casas decimais).
Desafios Extras (Opcional)
- Tratamento de Erros: Melhore o programa para lidar com entradas inválidas:
- Número incorreto de argumentos (ex:
./convert 10
). - Valor em BRL que não é um número (ex:
./convert abc USD
). - Código de moeda que não existe nas taxas (ex:
./convert 10 XYZ
).
- Número incorreto de argumentos (ex:
- Formatação de Saída: Garanta que a saída numérica respeite a formatação local para decimais (vírgula em vez de ponto), se aplicável. (Nota: O exemplo
195,48
sugere isso, mas o exemplo1.50
sugere o contrário. O ideal é padronizar - para CLI, o ponto.
é mais comum e fácil de usar em scripts). - Sensibilidade a Maiúsculas/Minúsculas: Faça o programa funcionar independentemente se o usuário digitar
usd
ouUSD
.
Requisitos Funcionais
- Interface de Linha de Comando: O programa deve ser executável via terminal.
- Argumentos de Entrada: A aplicação deve aceitar exatamente dois argumentos na seguinte ordem:
[valor_em_brl]
: Um número (float) representando a quantia em Reais a ser convertida.[moeda_destino]
: O código da moeda para a qual o valor será convertido (ex:USD
,EUR
,JPY
).
- Fonte das Taxas: O programa deve utilizar as taxas de câmbio fornecidas abaixo. Você pode optar por:
- Carregar os dados de um arquivo
rates.json
local. - Incorporar (hardcode) os dados diretamente no seu código Go (por exemplo, usando um
map
).
- Carregar os dados de um arquivo
- Cálculo: O programa deve multiplicar o
[valor_em_brl]
pela taxa correspondente à[moeda_destino]
. - Saída: A aplicação deve imprimir no console apenas o valor final convertido, formatado com duas casas decimais.
Sintaxe de Comando Esperada
./convert [valor_em_brl] [moeda_destino]
Exemplos de Execução
# Exemplo 1: Converter 10 BRL para USD $ ./convert 10 USD 1.51 # Exemplo 2: Converter 12 BRL para JPY $ ./convert 12 JPY 195.48
Fonte de Dados (Taxas de Câmbio Base: BRL)
Utilize o JSON abaixo como fonte para as taxas de conversão.
{ "base": "BRL", "date": "2025-04-14", "rates": { "USD": 0.151, "EUR": 0.137, "JPY": 16.29, "GBP": 0.13, "CHF": 0.1402, "AUD": 0.2712, "CAD": 0.2374, "CNY": 1.251, "HKD": 1.326, "NZD": 0.2922, "SEK": 1.655, "NOK": 1.806, "DKK": 1.122, "SGD": 0.2249, "KRW": 242.97, "ZAR": 3.239, "MXN": 3.454, "INR": 14.71, "ILS": 0.63, "THB": 5.74, "IDR": 2875.0, "MYR": 0.754, "PHP": 9.74, "PLN": 0.644, "CZK": 3.77, "HUF": 61.59, "TRY": 6.49, "BGN": 0.293, "RON": 0.746 } }
Recursos Úteis (Referências)
- Argumentos de Linha de Comando: https://gobyexample.com/command-line-arguments
- Leitura de Arquivos (se optar por essa via): https://gobyexample.com/reading-files
- Processamento de JSON (Unmarshal): https://gobyexample.com/json
- Uso de Maps (se optar por hardcode): https://gobyexample.com/maps
Conceitos Praticados no Projeto
Ao desenvolver este projeto, você praticará os seguintes conceitos de programação em Go:
- Argumentos da Linha de Comando: Ler dados que o usuário passa pelo terminal (
os.Args
). - Estruturas de Dados: Usar
maps
para armazenar e acessar as taxas de câmbio. - Conversão de Tipos: Transformar texto (string) em um número (
float
) para realizar cálculos. - Manipulação de Strings: Modificar textos, como converter a moeda para letras maiúsculas.
- Lógica Condicional: Verificar as entradas do usuário com
if/else
. - Tratamento de Erros: Lidar com entradas inválidas (número errado de argumentos, moeda inexistente, etc.).
- Formatação de Saída: Imprimir o resultado final com um formato específico (ex: duas casas decimais).
Desafios Extras (Opcional)
- Tratamento de Erros: Melhore o programa para lidar com entradas inválidas:
- Número incorreto de argumentos (ex:
./convert 10
). - Valor em BRL que não é um número (ex:
./convert abc USD
). - Código de moeda que não existe nas taxas (ex:
./convert 10 XYZ
).
- Número incorreto de argumentos (ex:
- Formatação de Saída: Garanta que a saída numérica respeite a formatação local para decimais (vírgula em vez de ponto), se aplicável. (Nota: O exemplo
195,48
sugere isso, mas o exemplo1.50
sugere o contrário. O ideal é padronizar - para CLI, o ponto.
é mais comum e fácil de usar em scripts). - Sensibilidade a Maiúsculas/Minúsculas: Faça o programa funcionar independentemente se o usuário digitar
usd
ouUSD
.
Tarefas
Use este checklist para ajudar a organizar a sua entrega