Al completar este laboratorio, usted podrá:
Metodología: Cada sección incluye ejemplos que usted debe escribir paso a paso. No copie y pegue, escriba el código para practicar la sintaxis.
Imaginen que tienen una lista de 20 elementos químicos y necesitan calcular la masa molecular de cada uno. ¿Escribirían 20 líneas de código similares? Las sentencias iterativas nos permiten escribir el código una vez y ejecutarlo múltiples veces.
Vamos a crear datos simples para practicar:
# Crear vectores simples para trabajar
elementos <- c("H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne")
masas_atomicas <- c(1.008, 4.003, 6.94, 9.012, 10.81, 12.01, 14.01, 16.00, 19.00, 20.18)
numeros_atomicos <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
# Mostrar los datos
cat("Elementos:", paste(elementos, collapse = ", "), "\n")
#> Elementos: H, He, Li, Be, B, C, N, O, F, Ne
#> Masas atómicas: 1.008, 4.003, 6.94, 9.012, 10.81, 12.01, 14.01, 16, 19, 20.18
#> Números atómicos: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Empezamos con la estructura más básica. Un if
ejecuta
código solo si se cumple una condición:
# Ejemplo: Verificar si un elemento es hidrógeno
elemento_actual <- "H"
if (elemento_actual == "H") {
cat("Este es hidrógeno, el elemento más simple\n")
}
#> Este es hidrógeno, el elemento más simple
Practique usted: Escriba un if
que
verifique si un elemento es oxígeno (“O”) e imprima “Este elemento es
esencial para la respiración”
# ESCRIBA SU CÓDIGO AQUÍ:
# Verifique si el elemento "O" es oxígeno
# Respuesta:
elemento_test <- "O"
if (elemento_test == "O") {
cat("Este elemento es esencial para la respiración\n")
}
#> Este elemento es esencial para la respiración
Ahora agregamos una alternativa cuando la condición no se cumple:
# Clasificar un elemento como metal o no metal
numero_atomico <- 3 # Litio
if (numero_atomico <= 2) {
cat("Es hidrógeno o helio (no metales)\n")
} else {
cat("Es otro elemento (puede ser metal o no metal)\n")
}
#> Es otro elemento (puede ser metal o no metal)
Practique usted: Escriba un if/else que clasifique una masa atómica como “liviana” (menor a 10) o “pesada” (10 o mayor)
# ESCRIBA SU CÓDIGO AQUÍ:
# Use masa_atomica <- 12.01 (carbono)
# Respuesta:
masa_atomica <- 12.01
if (masa_atomica < 10) {
cat("Elemento liviano\n")
} else {
cat("Elemento pesado\n")
}
#> Elemento pesado
Para clasificaciones más detalladas:
# Clasificar elementos por su número atómico
numero <- 8 # Oxígeno
if (numero == 1) {
categoria <- "Hidrógeno"
} else if (numero == 2) {
categoria <- "Gas noble (helio)"
} else if (numero >= 3 && numero <= 5) {
categoria <- "Metales ligeros"
} else if (numero >= 6 && numero <= 10) {
categoria <- "No metales del segundo período"
} else {
categoria <- "Otros elementos"
}
cat("El elemento con número atómico", numero, "es:", categoria, "\n")
#> El elemento con número atómico 8 es: No metales del segundo período
Escriba una estructura if/else múltiple que clasifique un valor de
pH: - pH < 3: “Muy ácido” - pH 3-6: “Ácido”
- pH 6-8: “Neutro” - pH 8-11: “Básico” - pH > 11: “Muy básico”
Pruebe con pH = 2.5, pH = 7.0, pH = 12.5
# ESCRIBA SU CÓDIGO AQUÍ:
# Respuesta:
clasificar_pH <- function(pH) {
if (pH < 3) {
return("Muy ácido")
} else if (pH >= 3 && pH < 6) {
return("Ácido")
} else if (pH >= 6 && pH <= 8) {
return("Neutro")
} else if (pH > 8 && pH <= 11) {
return("Básico")
} else {
return("Muy básico")
}
}
# Pruebas:
cat("pH 2.5:", clasificar_pH(2.5), "\n")
#> pH 2.5: Muy ácido
#> pH 7.0: Neutro
#> pH 12.5: Muy básico
La estructura básica de un bucle for es:
for (variable in lista) { código }
# Imprimir cada elemento de nuestra lista
for (elemento in elementos) {
cat("Elemento:", elemento, "\n")
}
#> Elemento: H
#> Elemento: He
#> Elemento: Li
#> Elemento: Be
#> Elemento: B
#> Elemento: C
#> Elemento: N
#> Elemento: O
#> Elemento: F
#> Elemento: Ne
Practique usted: Escriba un bucle for que imprima cada masa atómica con el texto “Masa atómica:”
# ESCRIBA SU CÓDIGO AQUÍ:
# Respuesta:
for (masa in masas_atomicas) {
cat("Masa atómica:", masa, "\n")
}
#> Masa atómica: 1.008
#> Masa atómica: 4.003
#> Masa atómica: 6.94
#> Masa atómica: 9.012
#> Masa atómica: 10.81
#> Masa atómica: 12.01
#> Masa atómica: 14.01
#> Masa atómica: 16
#> Masa atómica: 19
#> Masa atómica: 20.18
A veces necesitamos la posición del elemento:
# Mostrar elemento y su posición
for (i in 1:length(elementos)) {
cat("Posición", i, ":", elementos[i], "\n")
}
#> Posición 1 : H
#> Posición 2 : He
#> Posición 3 : Li
#> Posición 4 : Be
#> Posición 5 : B
#> Posición 6 : C
#> Posición 7 : N
#> Posición 8 : O
#> Posición 9 : F
#> Posición 10 : Ne
# Calcular masa molecular de moléculas simples H2, He2, Li2, etc.
cat("Masas moleculares de moléculas diatómicas:\n")
#> Masas moleculares de moléculas diatómicas:
for (i in 1:length(elementos)) {
masa_molecular <- masas_atomicas[i] * 2
cat(elementos[i], "2 =", masa_molecular, "g/mol\n")
}
#> H 2 = 2.016 g/mol
#> He 2 = 8.006 g/mol
#> Li 2 = 13.88 g/mol
#> Be 2 = 18.024 g/mol
#> B 2 = 21.62 g/mol
#> C 2 = 24.02 g/mol
#> N 2 = 28.02 g/mol
#> O 2 = 32 g/mol
#> F 2 = 38 g/mol
#> Ne 2 = 40.36 g/mol
Use un bucle for para clasificar cada elemento como “Metal” o “No metal” basándose en esta regla simple: - Elementos H, He, B, C, N, O, F, Ne son “No metales” - Los demás son “Metales”
Pista: use %in%
para verificar si un elemento está en
una lista.
# ESCRIBA SU CÓDIGO AQUÍ:
# Respuesta:
no_metales <- c("H", "He", "B", "C", "N", "O", "F", "Ne")
for (elemento in elementos) {
if (elemento %in% no_metales) {
cat(elemento, "es un no metal\n")
} else {
cat(elemento, "es un metal\n")
}
}
#> H es un no metal
#> He es un no metal
#> Li es un metal
#> Be es un metal
#> B es un no metal
#> C es un no metal
#> N es un no metal
#> O es un no metal
#> F es un no metal
#> Ne es un no metal
El bucle while
continúa ejecutándose mientras una
condición sea verdadera:
# Contar elementos hasta llegar al carbono
i <- 1
while (elementos[i] != "C") {
cat("Elemento", i, ":", elementos[i], "\n")
i <- i + 1
}
#> Elemento 1 : H
#> Elemento 2 : He
#> Elemento 3 : Li
#> Elemento 4 : Be
#> Elemento 5 : B
#> ¡Encontramos el carbono en la posición 6 !
Cuidado: Los bucles while pueden volverse infinitos si la condición nunca se vuelve falsa. Siempre asegúrese de que la variable de control cambie dentro del bucle.
# Buscar el primer elemento con masa atómica mayor a 15
i <- 1
encontrado <- FALSE
while (i <= length(masas_atomicas) && !encontrado) {
if (masas_atomicas[i] > 15) {
cat("Primer elemento con masa > 15:", elementos[i],
"con masa", masas_atomicas[i], "\n")
encontrado <- TRUE
}
i <- i + 1
}
#> Primer elemento con masa > 15: O con masa 16
#> Sumando masas atómicas:
while (suma_masas <= 50 && i <= length(masas_atomicas)) {
suma_masas <- suma_masas + masas_atomicas[i]
cat("Elemento", elementos[i], ":", masas_atomicas[i],
"- Suma total:", round(suma_masas, 2), "\n")
i <- i + 1
}
#> Elemento H : 1.008 - Suma total: 1.01
#> Elemento He : 4.003 - Suma total: 5.01
#> Elemento Li : 6.94 - Suma total: 11.95
#> Elemento Be : 9.012 - Suma total: 20.96
#> Elemento B : 10.81 - Suma total: 31.77
#> Elemento C : 12.01 - Suma total: 43.78
#> Elemento N : 14.01 - Suma total: 57.79
Simule una reacción química donde la concentración disminuye con el tiempo. - Concentración inicial: 100 mol/L - Cada “paso” de tiempo, la concentración se reduce en 15% - La reacción se detiene cuando la concentración es menor a 10 mol/L
Use un bucle while para mostrar la concentración en cada paso.
# ESCRIBA SU CÓDIGO AQUÍ:
# Respuesta:
concentracion <- 100
tiempo <- 0
cat("Simulación de reacción química:\n")
#> Simulación de reacción química:
while (concentracion >= 10) {
cat("Tiempo", tiempo, ": Concentración =", round(concentracion, 2), "mol/L\n")
concentracion <- concentracion * 0.85 # Reduce 15%
tiempo <- tiempo + 1
}
#> Tiempo 0 : Concentración = 100 mol/L
#> Tiempo 1 : Concentración = 85 mol/L
#> Tiempo 2 : Concentración = 72.25 mol/L
#> Tiempo 3 : Concentración = 61.41 mol/L
#> Tiempo 4 : Concentración = 52.2 mol/L
#> Tiempo 5 : Concentración = 44.37 mol/L
#> Tiempo 6 : Concentración = 37.71 mol/L
#> Tiempo 7 : Concentración = 32.06 mol/L
#> Tiempo 8 : Concentración = 27.25 mol/L
#> Tiempo 9 : Concentración = 23.16 mol/L
#> Tiempo 10 : Concentración = 19.69 mol/L
#> Tiempo 11 : Concentración = 16.73 mol/L
#> Tiempo 12 : Concentración = 14.22 mol/L
#> Tiempo 13 : Concentración = 12.09 mol/L
#> Tiempo 14 : Concentración = 10.28 mol/L
cat("Reacción terminada en el tiempo", tiempo,
"con concentración final:", round(concentracion, 2), "mol/L\n")
#> Reacción terminada en el tiempo 15 con concentración final: 8.74 mol/L
# Encontrar elementos ligeros (masa < 10) y pesados (masa >= 10)
elementos_ligeros <- 0
elementos_pesados <- 0
for (i in 1:length(elementos)) {
if (masas_atomicas[i] < 10) {
cat(elementos[i], "es ligero (", masas_atomicas[i], "g/mol)\n")
elementos_ligeros <- elementos_ligeros + 1
} else {
cat(elementos[i], "es pesado (", masas_atomicas[i], "g/mol)\n")
elementos_pesados <- elementos_pesados + 1
}
}
#> H es ligero ( 1.008 g/mol)
#> He es ligero ( 4.003 g/mol)
#> Li es ligero ( 6.94 g/mol)
#> Be es ligero ( 9.012 g/mol)
#> B es pesado ( 10.81 g/mol)
#> C es pesado ( 12.01 g/mol)
#> N es pesado ( 14.01 g/mol)
#> O es pesado ( 16 g/mol)
#> F es pesado ( 19 g/mol)
#> Ne es pesado ( 20.18 g/mol)
#>
#> Resumen:
#> Elementos ligeros: 4
#> Elementos pesados: 6
# Buscar grupos de elementos consecutivos con ciertas características
i <- 1
grupo_actual <- 1
cat("Analizando grupos de elementos:\n")
#> Analizando grupos de elementos:
while (i <= length(elementos)) {
if (masas_atomicas[i] < 5) {
cat("Grupo", grupo_actual, "- Elemento muy ligero:", elementos[i], "\n")
} else if (masas_atomicas[i] >= 5 && masas_atomicas[i] < 15) {
cat("Grupo", grupo_actual, "- Elemento medio:", elementos[i], "\n")
} else {
cat("Grupo", grupo_actual, "- Elemento pesado:", elementos[i], "\n")
}
i <- i + 1
if (i %% 3 == 1) { # Cada 3 elementos, nuevo grupo
grupo_actual <- grupo_actual + 1
}
}
#> Grupo 1 - Elemento muy ligero: H
#> Grupo 1 - Elemento muy ligero: He
#> Grupo 1 - Elemento medio: Li
#> Grupo 2 - Elemento medio: Be
#> Grupo 2 - Elemento medio: B
#> Grupo 2 - Elemento medio: C
#> Grupo 3 - Elemento medio: N
#> Grupo 3 - Elemento pesado: O
#> Grupo 3 - Elemento pesado: F
#> Grupo 4 - Elemento pesado: Ne
Simule un sistema de inventario de laboratorio:
# EJERCICIO FINAL CORREGIDO: Sistema de Inventario Químico
# 1. Crear inventario inicial
reactivos <- c("HCl", "NaOH", "H2SO4", "NaCl", "CaCl2")
cantidades <- c(25, 30, 20, 35, 15)
dia <- 1
cat("SISTEMA DE INVENTARIO QUÍMICO\n")
#> SISTEMA DE INVENTARIO QUÍMICO
#> =============================
#> Inventario inicial:
#> HCl : 25 unidades
#> NaOH : 30 unidades
#> H2SO4 : 20 unidades
#> NaCl : 35 unidades
#> CaCl2 : 15 unidades
# 2. Simulación diaria - CORREGIDA
while (max(cantidades) >= 2) {
cat("DÍA", dia, ":\n")
# Revisar cada reactivo
for (i in 1:length(reactivos)) {
if (cantidades[i] > 5) {
# Usar reactivo normalmente
uso <- sample(1:3, 1)
cantidades[i] <- cantidades[i] - uso
cat(" ", reactivos[i], "- Usado:", uso, "unidades, Restante:", cantidades[i], "\n")
} else if (cantidades[i] > 2 && cantidades[i] <= 5) {
# CORRECCIÓN: Reactivos con stock bajo aún se pueden usar pero menos
uso <- sample(1:2, 1) # Solo usar 1-2 unidades cuando está bajo
if (cantidades[i] >= uso) { # Verificar que no se use más de lo disponible
cantidades[i] <- cantidades[i] - uso
cat(" ", "¡ALERTA!", reactivos[i], "está bajo en stock, usado:", uso, "unidades, Restante:", cantidades[i], "\n")
} else {
cat(" ", "¡ALERTA!", reactivos[i], "está muy bajo en stock (", cantidades[i], "unidades), no se usa hoy\n")
}
} else if (cantidades[i] > 0) {
# Stock crítico - no usar pero reportar
cat(" ", "¡CRÍTICO!", reactivos[i], "stock crítico (", cantidades[i], "unidades)\n")
}
}
cat("\n")
dia <- dia + 1
# Evitar bucles infinitos - máximo 50 días
if (dia > 50) {
cat("Sistema detenido: límite de 50 días alcanzado\n")
break
}
}
#> DÍA 1 :
#> HCl - Usado: 1 unidades, Restante: 24
#> NaOH - Usado: 1 unidades, Restante: 29
#> H2SO4 - Usado: 2 unidades, Restante: 18
#> NaCl - Usado: 1 unidades, Restante: 34
#> CaCl2 - Usado: 1 unidades, Restante: 14
#>
#> DÍA 2 :
#> HCl - Usado: 1 unidades, Restante: 23
#> NaOH - Usado: 1 unidades, Restante: 28
#> H2SO4 - Usado: 2 unidades, Restante: 16
#> NaCl - Usado: 2 unidades, Restante: 32
#> CaCl2 - Usado: 3 unidades, Restante: 11
#>
#> DÍA 3 :
#> HCl - Usado: 1 unidades, Restante: 22
#> NaOH - Usado: 2 unidades, Restante: 26
#> H2SO4 - Usado: 1 unidades, Restante: 15
#> NaCl - Usado: 3 unidades, Restante: 29
#> CaCl2 - Usado: 1 unidades, Restante: 10
#>
#> DÍA 4 :
#> HCl - Usado: 3 unidades, Restante: 19
#> NaOH - Usado: 3 unidades, Restante: 23
#> H2SO4 - Usado: 3 unidades, Restante: 12
#> NaCl - Usado: 2 unidades, Restante: 27
#> CaCl2 - Usado: 2 unidades, Restante: 8
#>
#> DÍA 5 :
#> HCl - Usado: 2 unidades, Restante: 17
#> NaOH - Usado: 3 unidades, Restante: 20
#> H2SO4 - Usado: 2 unidades, Restante: 10
#> NaCl - Usado: 1 unidades, Restante: 26
#> CaCl2 - Usado: 1 unidades, Restante: 7
#>
#> DÍA 6 :
#> HCl - Usado: 2 unidades, Restante: 15
#> NaOH - Usado: 3 unidades, Restante: 17
#> H2SO4 - Usado: 3 unidades, Restante: 7
#> NaCl - Usado: 3 unidades, Restante: 23
#> CaCl2 - Usado: 1 unidades, Restante: 6
#>
#> DÍA 7 :
#> HCl - Usado: 3 unidades, Restante: 12
#> NaOH - Usado: 3 unidades, Restante: 14
#> H2SO4 - Usado: 3 unidades, Restante: 4
#> NaCl - Usado: 2 unidades, Restante: 21
#> CaCl2 - Usado: 2 unidades, Restante: 4
#>
#> DÍA 8 :
#> HCl - Usado: 2 unidades, Restante: 10
#> NaOH - Usado: 2 unidades, Restante: 12
#> ¡ALERTA! H2SO4 está bajo en stock, usado: 2 unidades, Restante: 2
#> NaCl - Usado: 3 unidades, Restante: 18
#> ¡ALERTA! CaCl2 está bajo en stock, usado: 1 unidades, Restante: 3
#>
#> DÍA 9 :
#> HCl - Usado: 1 unidades, Restante: 9
#> NaOH - Usado: 3 unidades, Restante: 9
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> NaCl - Usado: 3 unidades, Restante: 15
#> ¡ALERTA! CaCl2 está bajo en stock, usado: 2 unidades, Restante: 1
#>
#> DÍA 10 :
#> HCl - Usado: 3 unidades, Restante: 6
#> NaOH - Usado: 1 unidades, Restante: 8
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> NaCl - Usado: 1 unidades, Restante: 14
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 11 :
#> HCl - Usado: 1 unidades, Restante: 5
#> NaOH - Usado: 3 unidades, Restante: 5
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> NaCl - Usado: 3 unidades, Restante: 11
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 12 :
#> ¡ALERTA! HCl está bajo en stock, usado: 2 unidades, Restante: 3
#> ¡ALERTA! NaOH está bajo en stock, usado: 2 unidades, Restante: 3
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> NaCl - Usado: 1 unidades, Restante: 10
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 13 :
#> ¡ALERTA! HCl está bajo en stock, usado: 1 unidades, Restante: 2
#> ¡ALERTA! NaOH está bajo en stock, usado: 2 unidades, Restante: 1
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> NaCl - Usado: 3 unidades, Restante: 7
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 14 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> NaCl - Usado: 3 unidades, Restante: 4
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 15 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡ALERTA! NaCl está bajo en stock, usado: 2 unidades, Restante: 2
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 16 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 17 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 18 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 19 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 20 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 21 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 22 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 23 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 24 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 25 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 26 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 27 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 28 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 29 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 30 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 31 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 32 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 33 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 34 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 35 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 36 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 37 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 38 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 39 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 40 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 41 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 42 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 43 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 44 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 45 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 46 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 47 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 48 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 49 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> DÍA 50 :
#> ¡CRÍTICO! HCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaOH stock crítico ( 1 unidades)
#> ¡CRÍTICO! H2SO4 stock crítico ( 2 unidades)
#> ¡CRÍTICO! NaCl stock crítico ( 2 unidades)
#> ¡CRÍTICO! CaCl2 stock crítico ( 1 unidades)
#>
#> Sistema detenido: límite de 50 días alcanzado
#> REPORTE FINAL (Día 50 ):
#> ===========================
for (i in 1:length(reactivos)) {
estado <- if (cantidades[i] == 0) "AGOTADO"
else if (cantidades[i] <= 2) "CRÍTICO"
else if (cantidades[i] <= 5) "BAJO"
else "OK"
cat(reactivos[i], ":", cantidades[i], "unidades -", estado, "\n")
}
#> HCl : 2 unidades - CRÍTICO
#> NaOH : 1 unidades - CRÍTICO
#> H2SO4 : 2 unidades - CRÍTICO
#> NaCl : 2 unidades - CRÍTICO
#> CaCl2 : 1 unidades - CRÍTICO
#>
#> Simulación terminada después de 50 días
Guía de Decisión:
Problema: Encontrar todos los elementos con masa atómica entre 5 y 15.
# ENFOQUE 1: Solo if/else (para un elemento)
elemento_test <- "C"
masa_test <- 12.01
if (masa_test >= 5 && masa_test <= 15) {
cat("Enfoque 1 -", elemento_test, "está en el rango\n")
}
#> Enfoque 1 - C está en el rango
#>
#> Enfoque 2 - Usando for:
for (i in 1:length(elementos)) {
if (masas_atomicas[i] >= 5 && masas_atomicas[i] <= 15) {
cat(elementos[i], "está en el rango (", masas_atomicas[i], ")\n")
}
}
#> Li está en el rango ( 6.94 )
#> Be está en el rango ( 9.012 )
#> B está en el rango ( 10.81 )
#> C está en el rango ( 12.01 )
#> N está en el rango ( 14.01 )
# ENFOQUE 3: while (cuando buscamos hasta encontrar cierta cantidad)
cat("\nEnfoque 3 - Usando while (buscar primeros 3):\n")
#>
#> Enfoque 3 - Usando while (buscar primeros 3):
i <- 1
encontrados <- 0
while (i <= length(elementos) && encontrados < 3) {
if (masas_atomicas[i] >= 5 && masas_atomicas[i] <= 15) {
cat("Encontrado #", encontrados + 1, ":", elementos[i], "\n")
encontrados <- encontrados + 1
}
i <- i + 1
}
#> Encontrado # 1 : Li
#> Encontrado # 2 : Be
#> Encontrado # 3 : B
Errores Frecuentes:
i <= length(vector)
sin verificar límites=
en
lugar de ==
en comparaciones# ERROR COMÚN 1: Bucle infinito (NO EJECUTAR)
# i <- 1
# while (i <= 5) {
# cat("Número:", i, "\n")
# # ¡FALTA i <- i + 1!
# }
# CORRECCIÓN:
cat("Ejemplo correcto:\n")
#> Ejemplo correcto:
#> Número: 1
#> Número: 2
#> Número: 3
# ERROR COMÚN 2: Condición mal escrita
x <- 5
# if (x = 5) { # MAL: usa = en lugar de ==
if (x == 5) { # BIEN: usa == para comparar
cat("x es igual a 5\n")
}
#> x es igual a 5
Estructuras Básicas: - if/else
: Para
tomar decisiones - for
: Para repetir un número conocido de
veces
- while
: Para repetir hasta que se cumpla una condición
Conceptos Clave: - Variables de control en bucles -
Condiciones lógicas con ==
, !=
,
<
, >
, <=
,
>=
- Operadores lógicos &&
(y) y
||
(o) - Combinación de estructuras para casos
complejos
Aplicaciones en Química: - Clasificación de elementos y compuestos - Análisis de datos experimentales - Simulaciones de procesos químicos - Control de inventarios y sistemas
En la siguiente sesión aprenderemos sobre funciones en R, donde podremos: - Encapsular código repetitivo en funciones reutilizables - Crear nuestras propias “herramientas” para análisis químico - Organizar mejor nuestro código para proyectos grandes - Trabajar con parámetros y valores de retorno
Tarea Opcional: Practique creando un bucle que simule la dilución seriada de una solución (empezar con concentración 1000 ppm y diluir a la mitad 10 veces).