Exercício de Aplicação: Simulação de Decaimento/Diluição até um Limiar (com while)

Author

Jean Resende

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

  1. Defina uma concentração inicial da substância (ex: 100.0 unidades).

  2. 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%).

  3. Defina um limiar de segurança (ex: 10.0 unidades).

  4. Crie uma variável para contar o número de passos (passos_necessarios), inicializando-a em zero.

  5. Use um laço while que continue executando enquanto a concentracao_atual for maior ou igual ao limiar_seguranca.

    • Dentro do laço:

      • Imprima a concentracao_atual no início de cada passo e o número do passo.

      • Calcule a nova concentracao_atual aplicando a taxa_decaimento (multiplique a concentração atual pela taxa).

      • Incremente a variável passos_necessarios em 1.

  6. 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_necessarios total 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

#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.

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."