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.
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;
}
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 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;
}
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
for: um exemploO 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
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.
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):
0 dólares (o saldo fica ainda mais negativo).0 dólares e menor que 1000 dólares.1000 dólares e menor que 5000 dólares.5000 dólares.Você tem quatro tarefas, e cada uma delas lida com o saldo e a sua 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
Implemente a função yearly_interest para calcular os juros com base no saldo especificado:
yearly_interest(200.75):
// => 1.003750
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
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.
Crie sua conta no Exercism para aprender e dominar C++ com 19 conceitos100 exercícios e mentoria humana de verdade, tudo de graça.