#Passo 0: Concentração = 100
#Passo 1: Concentração = 80
#Passo 2: Concentração = 64
#Passo 3: Concentração = 51.2
#Passo 4: Concentração = 40.96
#Passo 5: Concentração = 32.768
#Passo 6: Concentração = 26.2144
#Passo 7: Concentração = 20.97152
#Passo 8: Concentração = 16.777216
#Passo 9: Concentração = 13.4217728
#Passo 10: Concentração = 10.73741824
#Passo 11: Concentração = 8.589934592
#A concentração final (8.59) está abaixo do limiar de segurança (10).
#Foram necessários 11 passos para atingir o limiar.Exercício de Aplicação: Simulação de Decaimento/Diluição até um Limiar (com while)
Cenário
Você está monitorando a concentração de uma substância em um experimento (pode ser um isótopo radioativo decaindo, um poluente sendo degradado, ou uma droga sendo metabolizada). A concentração diminui a cada “passo de tempo” (ou ciclo de diluição). Você precisa simular esse processo e descobrir quantos passos são necessários até que a concentração caia abaixo de um nível de segurança.
Instruções para o Exercício
Defina uma concentração inicial da substância (ex:
100.0unidades).Defina uma taxa de decaimento/diluição por passo (ex:
0.8- significa que a cada passo, a concentração se torna 80% da anterior, ou seja, diminui 20%).Defina um limiar de segurança (ex:
10.0unidades).Crie uma variável para contar o número de passos (
passos_necessarios), inicializando-a em zero.Use um laço
whileque continue executando enquanto aconcentracao_atualfor maior ou igual aolimiar_seguranca.Dentro do laço:
Imprima a
concentracao_atualno início de cada passo e o número do passo.Calcule a nova
concentracao_atualaplicando ataxa_decaimento(multiplique a concentração atual pela taxa).Incremente a variável
passos_necessariosem 1.
Após o laço terminar (quando a concentração estiver abaixo do limiar de segurança), imprima uma mensagem final indicando:
A
concentracao_final(a última concentração calculada).O
passos_necessariostotal para atingir o limiar.
Dica: Preste atenção na condição do while e certifique-se de que a concentração mude dentro do laço para que a condição eventualmente se torne falsa e o laço pare (evitando um “loop infinito”!).
Saída Esperada
Gabarito
# 1. Defina a concentração inicial
concentracao_inicial <- 100.0
# 2. Defina a taxa de decaimento/diluição por passo (ex: 0.8 para 20% de decaimento)
taxa_decaimento <- 0.8
# 3. Defina o limiar de segurança
limiar_seguranca <- 10.0
# Variáveis para o laço
concentracao_atual <- concentracao_inicial
passos_necessarios <- 0
# 5. Use o laço 'while' aqui:
# O laço continua enquanto a concentração atual for maior ou igual ao limiar de segurança
while (concentracao_atual >= limiar_seguranca) {
# Imprime o estado no início de cada passo
print(paste("Passo", passos_necessarios, ": Concentração =",
round(concentracao_atual, 4)))
# Calcula a nova concentração para o próximo passo
concentracao_atual <- concentracao_atual * taxa_decaimento
# Incrementa o contador de passos
passos_necessarios <- passos_necessarios + 1
}[1] "Passo 0 : Concentração = 100"
[1] "Passo 1 : Concentração = 80"
[1] "Passo 2 : Concentração = 64"
[1] "Passo 3 : Concentração = 51.2"
[1] "Passo 4 : Concentração = 40.96"
[1] "Passo 5 : Concentração = 32.768"
[1] "Passo 6 : Concentração = 26.2144"
[1] "Passo 7 : Concentração = 20.9715"
[1] "Passo 8 : Concentração = 16.7772"
[1] "Passo 9 : Concentração = 13.4218"
[1] "Passo 10 : Concentração = 10.7374"
print(paste("Passo", passos_necessarios, ": Concentração =",
round(concentracao_atual, 4)))[1] "Passo 11 : Concentração = 8.5899"
# 6. Após o laço terminar, imprima a mensagem final
print(paste0("\nA concentração final (", round(concentracao_atual, 4),
") está abaixo do limiar de segurança (", limiar_seguranca, ")."))[1] "\nA concentração final (8.5899) está abaixo do limiar de segurança (10)."
print(paste("Foram necessários", passos_necessarios, "passos para atingir o limiar."))[1] "Foram necessários 11 passos para atingir o limiar."