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

Tarifas de freelancer

Exercício de aprendizagem

Introdução

Números inteiros

Existem dois tipos diferentes de números em Elixir: números inteiros e números de ponto flutuante.

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

integer = 3
# => 3

Números de ponto flutuante

Números de ponto flutuante são números com um ou mais dígitos depois do separador decimal. Eles usam o formato de ponto flutuante de precisão dupla de 64 bits.

float = 3.45
# => 3.45

Trabalhando com números

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

Conversão

Números inteiros e números de ponto flutuante podem ser misturados em uma única expressão aritmética. Usar um número de ponto flutuante em uma expressão garante que o resultado também será um número de ponto flutuante.

2 * 3
# => 6

2 * 3.0
# => 6.0

No entanto, ao fazer uma divisão, o resultado sempre será um número de ponto flutuante, mesmo que você use apenas números inteiros.

6 / 2
# => 3.0

Para converter um número de ponto flutuante em um número inteiro, você pode descartar a parte decimal com trunc/1.

Instruções

Neste exercício, você vai escrever código para ajudar uma pessoa freelancer a se comunicar com um gerente de projetos. Sua tarefa é fornecer alguns utilitários para calcular rapidamente valores diários e mensais, opcionalmente com um desconto dado.

Primeiro, estabelecemos algumas regras entre quem é freelancer e o gerente de projetos:

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

Às vezes, o freelancer oferece um desconto sobre o valor diário (por exemplo, para os clientes mais fiéis ou para clientes sem fins lucrativos).

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

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

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

FreelancerRates.daily_rate(60)
# => 480.0

O valor diário retornado deve ser um número de ponto flutuante.

2. Calcule um preço com desconto

Implemente uma função apply_discount para calcular o preço depois de aplicar um desconto.

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

O valor retornado deve ser sempre um número de ponto flutuante, sem arredondamento de nenhum tipo.

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

Implemente uma função monthly_rate para calcular o valor mensal com desconto. Ela recebe dois parâmetros: um valor por hora e o desconto em porcentagem.

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

O valor mensal retornado deve ser arredondado para cima (teto) para o número inteiro mais próximo.

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

Implemente 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 retornado deve ser arredondado para baixo (piso) até uma casa decimal.

Editar via GitHub O link abre em uma nova janela ou aba
Elixir Exercism

Tudo pronto para começar Tarifas de freelancer?

Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.