Exercício de Aplicação: Cálculo de Densidade e Verificação de Padrão (Química/Física)

Author

Jean Resende

Cenário

Você está em um laboratório realizando medições de densidade para diferentes amostras de um material. Para cada amostra, você tem o volume (em cm³) e a massa (em gramas). Você precisa calcular a densidade e verificar se ela está dentro de um “intervalo padrão” aceitável para o material.

Dados

Você tem as seguintes massas e volumes para 5 amostras:

massas_g <- c(10.5, 12.0, 9.8, 11.2, 10.9)
volumes_cm3 <- c(5.2, 5.9, 4.8, 5.5, 5.4)

Instruções para o Exercício

  • Crie uma função chamada calcular_densidade que receba massa_g e volume_cm3 como argumentos.

    • A função deve calcular a densidade (densidade = massa / volume).

    • A função deve retornar o valor da densidade.

  • Crie uma segunda função chamada verificar_densidade_padrao que receba a densidade calculada.

    • Defina um limite_inferior_padrao (ex: 2.0 g/cm³) e um limite_superior_padrao (ex: 2.1 g/cm³).

    • Se a densidade estiver dentro desse intervalo (inclusive os limites), a função deve retornar "Dentro do Padrão".

    • Caso contrário, deve retornar "Fora do Padrão".

  • Use um laço for para iterar sobre os índices das amostras (de 1 até o número total de amostras).

    • Dentro do laço, para cada índice i:

      • Obtenha a massa e o volume correspondentes (massas_g[i] e volumes_cm3[i]).

      • Chame a função calcular_densidade para obter a densidade da amostra.

      • Chame a função verificar_densidade_padrao para obter o status do padrão.

      • Finalmente, imprima o resultado para cada amostra, no formato: "Amostra X: Densidade = Y g/cm³ - Status: [Status Padrão]" (Onde X é o número da amostra e Y é a densidade arredondada para 2 casas decimais).

Gabarito

# Dados fornecidos
massas_g <- c(10.5, 12.0, 9.8, 11.2, 10.9)
volumes_cm3 <- c(5.2, 5.9, 4.8, 5.5, 5.4)

# 1. Função para calcular a densidade
calcular_densidade <- function(massa_g, volume_cm3) {
  if (volume_cm3 == 0) {
    warning("Volume zero detectado! Não é possível calcular a densidade.")
    return(NA) # Retorna Not Available se o volume for zero
  }
  densidade <- massa_g / volume_cm3
  return(densidade)
}

# 2. Função para verificar a densidade padrão
verificar_densidade_padrao <- function(densidade) {
  limite_inferior_padrao <- 2.0 # g/cm³
  limite_superior_padrao <- 2.1 # g/cm³
  
  # É bom verificar se a densidade não é NA antes de comparar
  if (is.na(densidade)) {
    status <- "Erro de Cálculo"
  } else if (densidade >= limite_inferior_padrao && densidade <= limite_superior_padrao) {
    status <- "Dentro do Padrão"
  } else {
    status <- "Fora do Padrão"
  }
  return(status)
}

# 3. Usar o laço 'for' e as funções para analisar as amostras
for (i in 1:length(massas_g)) {
  massa_atual <- massas_g[i]
  volume_atual <- volumes_cm3[i]
  
  # Chama a função para calcular a densidade
  densidade_calculada <- calcular_densidade(massa_atual, volume_atual)
  
  # Chama a função para verificar o padrão
  status_padrao <- verificar_densidade_padrao(densidade_calculada)
  
  # Imprime o resultado
  # Usamos round(x, 2) para arredondar a densidade
  cat(paste0("Amostra ", i, ": Densidade = ", round(densidade_calculada, 2), " g/cm³ - Status: ", status_padrao, "\n"))
}
Amostra 1: Densidade = 2.02 g/cm³ - Status: Dentro do Padrão
Amostra 2: Densidade = 2.03 g/cm³ - Status: Dentro do Padrão
Amostra 3: Densidade = 2.04 g/cm³ - Status: Dentro do Padrão
Amostra 4: Densidade = 2.04 g/cm³ - Status: Dentro do Padrão
Amostra 5: Densidade = 2.02 g/cm³ - Status: Dentro do Padrão