Trilhas
/
C++
C++
/
Exercícios
/
Juros são interessantes
Juros são interessantes

Juros são interessantes

Exercício de aprendizagem

Introdução

Laços

Laços servem para executar alguma lógica repetidamente. Os dois tipos mais comuns são o while loop (repetição indefinida) e o for loop (repetição definida, ou contada). Existe também o laço for each, que vai aparecer em um conceito mais adiante.

Sintaxe geral

O for loop é formado por um cabeçalho e um bloco de código que contém o corpo do laço entre chaves. O cabeçalho é composto por 3 componentes separados por ponto e vírgula ;: instrução de inicialização, condição e outra expressão. Qualquer um deles pode ficar vazio.

for (init_statement; condition; expression) {
  some_statement;
}
  • O componente instrução de inicialização é o código que roda só uma vez, antes de o laço começar.
  • O componente condição precisa ser uma expressão que resulte em um boolean e que controla quando o laço deve parar. O código dentro do laço roda enquanto essa condição for true. Assim que essa expressão for false, o laço não roda mais nenhuma iteração.
  • O componente expressão é um código que roda no fim de cada iteração.

O while loop executa o seu corpo enquanto a verificação da condição for true. O trecho de código abaixo mostra como transformar um for em um while loop.

init_statement;
while(condition) {
    some_statement;
    expression;
}

Interlúdio: incrementos e decrementos

Ao trabalhar com laços, muitas vezes é preciso somar 1 ou subtrair 1 de uma variável contadora que acompanha as iterações. Isso é tão comum que as ações de incremento e de decremento têm operadores especiais: ++ e --.

Eles existem na forma prefixada e na forma pós-fixada. A versão prefixada altera a variável antes do uso na instrução; a pós-fixada, depois. Na maioria das vezes, você provavelmente vai querer a versão prefixada.

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

Laços for: um exemplo

O componente de inicialização geralmente cria uma variável contadora, a condição verifica se o laço deve continuar ou parar, e o componente final geralmente incrementa o contador no fim de cada repetição.

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

Esse laço soma os números de 1 a 9 (incluindo o 9).

break e continue

Dentro do corpo de um laço, você pode usar a palavra-chave break para interromper a execução do laço por completo:

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

Já a palavra-chave continue interrompe apenas a execução da iteração atual e segue para a próxima:

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (i%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12
Note

Normalmente é mais fácil entender a lógica do laço quando o uso de break e continue é reduzido ao mínimo ou evitado por completo. As duas palavras-chave pulam certas partes do código e, muitas vezes, dificultam acompanhar o que acontece.

Instruções

Neste exercício, você vai trabalhar com contas poupança. A cada ano, o saldo da sua conta poupança é atualizado com base na sua taxa de juros. A taxa de juros que o seu banco oferece depende da quantia de dinheiro na sua conta (o saldo):

  • 3.213% para um saldo menor que 0 dólares (o saldo fica ainda mais negativo).
  • 0.5% para um saldo maior ou igual a 0 dólares e menor que 1000 dólares.
  • 1.621% para um saldo maior ou igual a 1000 dólares e menor que 5000 dólares.
  • 2.475% para um saldo maior ou igual a 5000 dólares.

Você tem quatro tarefas, e cada uma delas lida com o saldo e a sua taxa de juros.

1. Calcule a taxa de juros

Implemente a função interest_rate para calcular a taxa de juros com base no saldo especificado:

interest_rate(200.75);
// => 0.5

2. Calcule os juros

Implemente a função yearly_interest para calcular os juros com base no saldo especificado:

yearly_interest(200.75):
// => 1.003750

3. Calcule a atualização anual do saldo

Implemente a função annual_balance_update para calcular a atualização anual do saldo, levando em conta a taxa de juros:

annual_balance_update(200.75);
// => 201.75375

4. Calcule os anos necessários para atingir o saldo desejado

Implemente a função years_until_desired_balance para calcular o número mínimo de anos necessários para atingir o saldo desejado, levando em conta que, a cada ano, os juros são adicionados ao saldo. Isso significa que o saldo depois de um ano é: saldo inicial + juros sobre o saldo inicial. O saldo depois do segundo ano é o saldo depois de um ano + juros sobre o saldo depois de um ano. E assim por diante, até que o saldo do ano atual seja maior ou igual ao saldo desejado.

double balance {200.75};
double targetBalance {214.88};
years_until_desired_balance(balance, targetBalance)
// => 14

Repare que o valor retornado é um int.

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

Tudo pronto para começar Juros são interessantes?

Crie sua conta no Exercism para aprender e dominar C++ com 19 conceitos100 exercícios e mentoria humana de verdade, tudo de graça.