Percursos
/
Elixir
Elixir
/
Exercícios
/
Tarifas de freelancer
Tarifas de freelancer

Tarifas de freelancer

Exercício de aprendizagem

Introdução

Números inteiros

Há dois tipos diferentes de números em Elixir: números inteiros e números de vírgula flutuante.

Os números inteiros são números sem parte fracionária.

integer = 3
# => 3

Números de vírgula flutuante

Os números de vírgula flutuante são números com um ou mais algarismos depois do separador decimal. Usam o formato de vírgula flutuante de precisão dupla de 64 bits.

float = 3.45
# => 3.45

Trabalhar com números

Nos módulos Integer e Float podes encontrar algumas funções úteis para trabalhar com esses tipos. Os operadores aritméticos básicos estão definidos no módulo Kernel.

Conversão

Os números inteiros e os números de vírgula flutuante podem ser misturados numa única expressão aritmética. Usar um número de vírgula flutuante numa expressão garante que o resultado também será um número de vírgula flutuante.

2 * 3
# => 6

2 * 3.0
# => 6.0

No entanto, ao dividir, o resultado será sempre um número de vírgula flutuante, mesmo que só se usem números inteiros.

6 / 2
# => 3.0

Para converter um número de vírgula flutuante num número inteiro, podes descartar a parte decimal com trunc/1.

Instruções

Neste exercício vais escrever código para ajudar um freelancer a comunicar com um gestor de projeto. A tua tarefa é fornecer alguns utilitários para calcular rapidamente valores diários e mensais, opcionalmente com um determinado desconto.

Começamos por estabelecer algumas regras entre o freelancer e o gestor de projeto:

  • O valor diário é 8 vezes o valor por hora.
  • Um mês tem 22 dias faturáveis.

Por vezes, o freelancer oferece-se para aplicar um desconto no seu valor diário (por exemplo, para os clientes mais fiéis ou para clientes sem fins lucrativos).

Os descontos são representados por números fracionários que representam percentagens, por exemplo 25.0 (25%).

1. Calcula o valor diário a partir de um valor por hora

Implementa uma função chamada daily_rate que calcula o valor diário a partir de um valor por hora recebido como parâmetro. O contrato define que um dia tem 8 horas faturáveis.

FreelancerRates.daily_rate(60)
# => 480.0

O valor diário devolvido deve ser um número de vírgula flutuante.

2. Calcula um preço com desconto

Implementa uma função apply_discount que calcula o preço depois de aplicar um desconto.

FreelancerRates.apply_discount(150, 10)
# => 135.0

O valor devolvido deve ser sempre um número de vírgula flutuante, sem qualquer arredondamento.

3. Calcula o valor mensal a partir de um valor por hora e de um desconto

Implementa uma função monthly_rate que calcula o valor mensal com desconto. Recebe dois parâmetros: um valor por hora e o desconto em percentagem.

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

O valor mensal devolvido deve ser arredondado por excesso (arredondar para cima) para o número inteiro mais próximo.

4. Calcula o número de dias de trabalho completos a partir de um orçamento, de um valor por hora e de um desconto

Implementa uma função days_in_budget que recebe um orçamento, um valor por hora e um desconto, e calcula quantos dias completos de trabalho isso cobre.

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

O número de dias devolvido deve ser arredondado por defeito (arredondar para baixo), com uma casa decimal.

Editar via GitHub A ligação abre numa nova janela ou separador
Elixir Exercism

Estás pronto para começar Tarifas de freelancer?

Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.