<aside>
🗂️
Orden pedagógico (menos → más complejo), alineado con las secciones del curso: Nivel 1 = Sec. 1 (secuencia y vectores, sin bucles) → Nivel 2 = Sec. 2.1 (if/elif) → Nivel 3 = Sec. 2.2 (for + acumuladores + booleanos) → Nivel 4 = banco escalonado (while, break, continue, try/except) → Nivel 5 = integrador con vectores (puente a la Sec. 3). Todos los enunciados están transcritos como viñetas anidadas dentro de esta misma página (sin imágenes ni subpáginas). Duplicados ya fusionados: los antiguos Problemas 1, 2 y 3 son los ejercicios 1, 4 y 10 del Nivel 4; «Fila 2» quedó integrada en el ejercicio integrador del Nivel 5, con sus entregables y las lecciones de su corrección. Los ejercicios de los Niveles 1–3 fueron transcritos desde sus imágenes originales (la versión anterior de esta página conserva esas imágenes en el historial).
</aside>
Nivel 1 — Sec. 1 · Algoritmo secuencial y vectores (sin bucles)
- Ejercicio — Auditoría de Tensión en Cables de Izaje (Equilibrio 2D) · Sec. 1: secuencia pura, descomposición vectorial
- Contexto: Antes de autorizar una maniobra de izaje se audita el gancho del que cuelga la carga mediante dos cables con ángulos distintos: el sistema está en equilibrio estático y ningún cable puede superar su tensión admisible.
- Datos: peso de la carga $W$; ángulo del cable 1 respecto a la horizontal $\theta_1$; ángulo del cable 2 respecto a la horizontal $\theta_2$; tensión admisible de cada cable $T_{adm}$. (Valores numéricos según la imagen original del enunciado — confirmar contra el historial de versiones de esta página.)
- Se pide:
- a) Plantear el diagrama de cuerpo libre del gancho y las ecuaciones de equilibrio: $\sum F_x = 0$, $\sum F_y = 0$.
- b) Resolver el sistema $2 \times 2$ para las tensiones $T_1$ y $T_2$ (descomposición vectorial, como en la práctica patrón-oro 1.4 del curso).
- c) Comparar cada tensión contra $T_{adm}$ y emitir el veredicto de la maniobra: "Cable OK" o "Sobrecarga — rediseñar la maniobra".
Nivel 2 — Sec. 2.1 · Decisión con if/elif (condicional simple)
- Ejercicio — Riesgo de Deslizamiento en Taludes (Fricción Estática) · Sec. 2.1: una decisión
if/elif/else contra un límite
- Contexto: Una cuña de suelo de un talud de corte puede deslizar sobre un plano inclinado; el riesgo se evalúa por fricción estática comparando la fuerza que empuja contra la que la fricción puede resistir.
- Datos: peso de la cuña $W$; ángulo del plano de deslizamiento $\beta$; coeficiente de fricción estática $\mu$ (o ángulo de fricción interna $\varphi$). (Valores numéricos según la imagen original del enunciado — confirmar contra el historial de versiones de esta página.)
- Se pide:
- a) Descomponer el peso en componente normal $N = W \cos\beta$ y componente motriz $T = W \sin\beta$.
- b) Calcular el factor de seguridad: $FS = \frac{\mu \cdot N}{T}$.
- c) Con
if/elif/else, clasificar el talud: $FS \geq 1.5$ → Estable; $1.0 \leq FS < 1.5$ → Riesgo condicionado (monitorear); $FS < 1.0$ → Deslizamiento inminente.
- d) Activar un booleano
requiereEstabilizacion = True cuando $FS < 1.5$ y reportar la recomendación.
Nivel 3 — Sec. 2.2 · Bucle for + acumuladores + booleanos
- Ejercicio — Optimización de Eje Neutro (Centroide de Sección Compuesta) · Sec. 2.2:
for + acumuladores + booleano (mismo patrón de la práctica 2.4 del curso: centroide con Steiner)
- Contexto: Una viga de sección compuesta por varios rectángulos necesita ubicar su eje neutro para el diseño a flexión; se comparan configuraciones y se verifica si la posición resultante es aceptable.
- Datos: para cada rectángulo $i$: base $b_i$, altura $h_i$ y cota $y_i$ de su centroide local. (Valores numéricos según la imagen original del enunciado — confirmar contra el historial de versiones de esta página.)
- Se pide:
- a) Recorrer los rectángulos con un
for, acumulando el área total $\sum A_i$ y el momento estático $\sum A_i \cdot y_i$.
- b) Calcular la posición del eje neutro: $\bar{y} = \frac{\sum A_i \cdot y_i}{\sum A_i}$.
- c) Con un
if, verificar si $\bar{y}$ cae dentro de la zona admisible exigida y activar el booleano correspondiente (ejeNeutroAceptable = True/False).
- d) Reportar $\bar{y}$, la verificación y, si la configuración no es aceptable, la recomendación de ajustar las dimensiones de la sección.
Nivel 4 — Banco escalonado SMath (Sec. 2.1 → 2.2.2): for, if/elif, while, break, continue, try/except
- Ejercicio 1 — Clasificación de Suelos Finos (Carta de Plasticidad de Casagrande) ·
for + if/elif/else + booleanos + acumuladores
- Situación: el laboratorio entrega 8 muestras de suelo fino y cada una debe clasificarse según la Carta de Plasticidad de Casagrande (SUCS), dejando la decisión trazable para el informe geotécnico.
- Datos (Muestra: LL %, IP %): M1 (42, 18) · M2 (65, 32) · M3 (28, 8) · M4 (55, 15) · M5 (70, 45) · M6 (38, 22) · M7 (48, 12) · M8 (60, 28).
- Criterio SUCS: Línea A: $IP = 0.73 \cdot (LL - 20)$ · Línea U: $IP = 0.90 \cdot (LL - 8)$.
- Clasificación: $IP$ sobre Línea A y $LL \geq 50$ → CH (arcilla de alta plasticidad) · sobre Línea A y $LL < 50$ → CL (arcilla de baja plasticidad) · bajo Línea A y $LL \geq 50$ → MH (limo de alta plasticidad) · bajo Línea A y $LL < 50$ → ML (limo de baja plasticidad).
- Se pide: a) recorrer las 8 muestras con
for, calculando la Línea A y clasificando cada una; b) booleano esArcilla = True si CH o CL, False si MH o ML; c) contar arcillas y limos; d) si una muestra cae sobre la Línea A (tolerancia ±0.5) → sobreLineaA = True y reportar "Muestra X está sobre la Línea A — clasificación ambigua"; e) tabla final: muestra, LL, IP, clasificación SUCS, tipo (arcilla/limo).
- Ejercicio 2 — Centro de Gravedad de un Sistema de Cargas ·
for + acumuladores + booleano de control
- Situación: antes de aceptar una losa de cimentación, revisar si las cargas de las columnas están razonablemente centradas; un centro de gravedad desplazado se paga luego en suelo, acero y dimensiones.
- Datos (Columna: x m, y m, P kN): C1 (1.5, 2.0, 450) · C2 (5.0, 2.0, 520) · C3 (8.5, 2.0, 380) · C4 (1.5, 6.0, 500) · C5 (5.0, 6.0, 600) · C6 (8.5, 6.0, 420).
- Se pide: a) con
for: $P_{total} = \sum P_i$, $M_x = \sum (P_i \cdot x_i)$, $M_y = \sum (P_i \cdot y_i)$; b) centro de gravedad: $X_{CG} = M_x / P_{total}$, $Y_{CG} = M_y / P_{total}$; c) verificar contra el centro geométrico de la losa (5.0, 4.0) con tolerancia ±0.5 m → booleano excentricidadAceptable; d) si es False → "Excentricidad excesiva — redistribuir cargas o redimensionar losa".
- Ejercicio 3 — Ensayo SPT: Simulación de Penetración ·
while + break + clasificación final
- Situación: el ensayo SPT no espera a que se complete la tabla: si el suelo rechaza, el ensayo se detiene; programar esa lógica de campo.
- Datos: probabilidad de penetrar 1 cm por golpe: $p_{avance} = 0.80 - 0.012 \cdot \text{profundidad (m)}$; inicio en profundidad = 1.0 m (primer tramo).
- Se pide: a)
while por tramo de 15 cm (3 tramos): inicializar golpes = 0, penetracion = 0; mientras penetracion < 15 cm: golpes + 1; si golpes > 50 → break y "RECHAZO — golpes > 50 sin penetrar 15 cm"; penetracion += p_avance; b) N SPT = golpes_tramo2 + golpes_tramo3; c) rechazo en el primer tramo → N SPT = ">50 (rechazo)" y no continuar; d) reportar golpes por tramo, N SPT final y clasificación: 0–4 muy suelto/blando · 5–10 suelto/blando · 11–30 medio · 31–50 denso/firme · >50 rechazo.
- Ejercicio 4 — Verificación de Perfiles de Acero ·
for + if/elif + booleano + continue
- Situación: revisar si los perfiles propuestos pueden izarse con la grúa disponible (capacidad 1200 kg por pieza) y estimar el peso total de acero antes de enviar el pedido a fabricación.
- Datos (Perfil: designación, kg/m, longitud m): P1 W10×33 (49, 6.0) · P2 W12×50 (74, 5.5) · P3 W14×90 (134, 8.0) · P4 W8×24 (36, 4.0) · P5 W18×130 (193, 7.5) · P6 W10×45 (67, 6.0) · P7 W21×147 (219, 6.5) · P8 W8×18 (27, 3.5) · P9 W16×100 (149, 9.0) · P10 W12×65 (97, 5.0).
- Se pide: a)
for sobre los 10 perfiles: $W_{pieza} = \text{peso/m} \times \text{longitud}$; si $W_{pieza} > 1200$ kg → excedeCapacidad = True + alerta; clasificar: <200 Liviano · 200 a <800 Mediano · ≥800 Pesado; b) acumular $W_{total} = \sum W_{pieza}$; c) si excedeCapacidad → reportar cuántas piezas exceden y sugerir "grúa de mayor capacidad o dividir las piezas"; d) si hay piezas "Pesado" → booleano requiereGruaMayor + recomendación.
- Ejercicio 5 — Matriz de Distancias entre Puntos Topográficos ·
for anidado + continue + búsqueda de mínimos
- Situación: comparar cada punto contra todos los demás ("todos contra todos"), como revisando proximidades o conexiones de una poligonal.
- Datos (Vértice: X m, Y m): V1 (100.0, 200.0) · V2 (185.0, 230.0) · V3 (250.0, 180.0) · V4 (310.0, 260.0) · V5 (220.0, 340.0) · V6 (140.0, 310.0).
- Se pide: a)
for anidado: para cada $i$ recorrer todos los $j$; si $i = j$ → continue; $d_{ij} = \sqrt{(X_j - X_i)^2 + (Y_j - Y_i)^2}$; b) para cada vértice, distancia mínima e índice del vecino más cercano; c) almacenar en el vector vecinoMasCercano; d) verificar pares recíprocos (el vecino de $i$ es $j$ Y el de $j$ es $i$) → booleano parReciproco; e) tabla: vértice, vecino más cercano, distancia, recíproco.
- Ejercicio 6 — Asentamiento por Consolidación ·
while + try/except + continue + break
- Situación: los datos reales llegan imperfectos: procesar lo válido, omitir lo corrupto y detenerse en el estrato rocoso, sin forzar cálculos sin sentido físico.
- Datos (15 capas, algunas corruptas): $H_i$ = [1.0, 1.0, 1.0, 1.0, 1.0, "N/D", 1.0, 1.0, 1.0, 1.0, 1.0, -999, 1.0, 1.0, 1.0] m · $e_0$ = [0.85, 0.92, 0.78, "ERR", 0.88, 0.95, 0.72, 1.05, 0.80, 0.90, 0.76, 0, 0.82, 0.79, 0.91] · $C_c$ = [0.32, 0.28, 0.35, 0.30, "FALLA", 0.25, 0.33, 0.29, 0.31, 0.27, 0.34, 0, 0.26, 0.30, 0.28] · $\sigma'_0$ = [50, 65, 80, 95, 110, 125, 140, 155, 170, 185, 200, 0, 215, 230, 245] kPa · $\Delta\sigma$ = 75 kPa constante.
- Se pide: a)
while con lectura try/except: celda no numérica → "Capa X: datos corruptos — omitida" + continue; $H_i = -999$ → "Estrato rocoso encontrado en capa X" + break; asentamiento de la capa $S_i = \frac{C_c \cdot H_i}{1 + e_0} \cdot \log_{10}\left(\frac{\sigma'_0 + \Delta\sigma}{\sigma'_0}\right)$; $\sigma'_0 \leq 0$ → "Esfuerzo inicial no físico en capa X — omitida" + continue; acumular asentamientoTotal; b) reportar capas procesadas, capas omitidas, capa del estrato rocoso y asentamiento total en cm.
- Ejercicio 7 — Verificación de Flechas en Vigas ·
for + if + booleanos + continue
- Situación: una viga puede resistir y aun así funcionar mal por deformación; preauditoría de flechas, omitiendo las vigas sin carga.
- Datos (Viga: L m, w kN/m, E GPa, I cm⁴): V1 (5.0, 18, 200, 8350) · V2 (6.5, 22, 200, 12400) · V3 (4.0, 0, 200, 5400) · V4 (7.0, 15, 200, 15000) · V5 (3.5, 25, 200, 4200) · V6 (5.5, 0, 200, 9800) · V7 (8.0, 20, 200, 21000) · V8 (4.5, 12, 200, 6300).
- Fórmula (carga uniforme, simplemente apoyada): $\Delta_{max} = \frac{5 \cdot w \cdot L^4}{384 \cdot E \cdot I}$ (con $w$ en N/m, $L$ en m, $E$ en Pa, $I$ en m⁴ → $\Delta$ en m; convertir a mm).
- Se pide: a)
for: $w = 0$ → "Viga X sin carga — omitida del análisis" + continue; calcular $\Delta_{max}$ en mm y $\Delta_{adm} = L_{mm}/360$; booleano cumple; b) contar cuántas cumplen y cuántas no; c) identificar la viga más crítica (mayor relación $\Delta_{max}/\Delta_{adm}$); d) si alguna no cumple → requiereRedisenio = True + reporte; e) tabla: viga, luz, $\Delta_{max}$, $\Delta_{adm}$, veredicto (CUMPLE / NO CUMPLE / NO ANALIZADA).
- Ejercicio 8 — Dosificación de Mezcla de Concreto ·
while + for interno + if + break
- Situación: diseñar una mezcla es ajustar hasta cumplir resistencia sin caer en valores imprácticos, con intentos sucesivos y probetas virtuales (cocina técnica: cada cambio de receta se justifica).
- Datos: a/c inicial = 0.65 · paso de ajuste 0.02 · modelo de Abrams simplificado $f'_c = 95/12^{a/c}$ MPa · dispersión aleatoria ±8% · límite 20 iteraciones.
- Se pide: a)
while iteracion < 20: calcular $f'{c,estimada}$; for interno de 3 probetas con variación aleatoria ±8%; promedio $f'{c,prom}$; si ≥ 28 MPa → break y "Dosificación encontrada"; si no, $a/c = a/c - 0.02$; si $a/c \leq 0.35$ → break (límite práctico); b) si se agotan 20 iteraciones → "No se encontró dosificación viable en 20 iteraciones"; c) reportar a/c final, $f'_{c,prom}$, iteraciones, viabilidad ($a/c > 0.35$) y booleano dosificacionExitosa.
- Ejercicio 9 — Dimensionamiento de Armadura de Refuerzo ·
for + while anidado + break + booleanos
- Situación: cumplir el área de acero no basta: las barras deben caber en la viga respetando recubrimiento y separación (pensar como en plano de armado).
- Datos (Diámetro: designación, área): 12 mm #4 (1.13 cm²) · 16 mm #5 (2.01 cm²) · 20 mm #6 (3.14 cm²) · 25 mm #8 (4.91 cm²).
- Se pide: a)
for externo por diámetro, while interno: numBarras = 0, $A_{s,acum} = 0$; mientras $A_{s,acum} < A_s$: numBarras + 1 y $A_{s,acum} = numBarras \cdot A_{barra}$; verificar cabida: ancho disponible = $b - 2 \cdot \text{recubrimiento}$, ancho ocupado = $n \cdot \phi + (n-1) \cdot \text{separación mínima}$; booleano caben; b) entre las opciones que caben, seleccionar la de menor número de barras (empate → menor diámetro); c) si ninguna cabe → seccionInsuficiente = True y "aumentar ancho de viga o usar paquetes de barras"; d) tabla: diámetro, número de barras, $A_s$ real, ¿caben?, y la configuración óptima.
- Ejercicio 10 — Simulador de Avance de Excavación ·
while + for + try/except + continue + break + booleanos (el más complejo del banco)
- Situación: una excavación con 2 frentes simultáneos avanza día a día con producción variable por clima y maquinaria, hasta completar el volumen objetivo o agotar 90 días.
- Datos: F1: $V_{objetivo}$ = 3200 m³, producción base 85 m³/día · F2: 2800 m³, 70 m³/día · Eventos diarios (aleatorio 0–100): ≤15 → Lluvia (producción 0 en ambos frentes) · 16–22 → Falla mecánica (0 solo en un frente) · 85–95 → Rendimiento extra (+30% en un frente) · resto → día normal.
- Se pide: a) inicializar
frenteActivo = [True, True], $V_{acum} = [0, 0]$, contadores dia/diasLluvia/diasFalla/diasExtra; b) while global (dia < 90 Y algún frente activo): dia + 1; generar aleatorio con try/except (falla → "Error en generación aleatoria" + continue); lluvia → diasLluvia + 1, "Día X: LLUVIA — sin producción" + continue; for sobre los 2 frentes: frente inactivo → continue; calcular producción del día según evento; acumular $V_{acum}[i]$; si $V_{acum}[i] \geq V_{objetivo}[i]$ → frenteActivo[i] = False y diaFin[i] = dia; c) ambos frentes terminan → break y "Excavación completada en X días"; d) al salir del while con algún frente activo → obraIncompleta = True + volumen faltante; e) resumen final: días totales, volúmenes por frente y total, días de lluvia/falla/extra, frente crítico y booleano obraExitosa (True solo si ambos completaron dentro de los 90 días).
- Reglas de entrega del banco:
- Resolver cada ejercicio de forma individual en SMath Studio; un archivo
.sm por ejercicio: Ejercicio_N_Apellido.sm.
- Iniciar cada archivo con un comentario breve: qué constructos usa y por qué los eligió.
- Organizar las regiones de programa como si otra persona fuera a revisar la lógica mañana.
- No entregar solo resultados numéricos: el resultado sin proceso es como una radiografía sin diagnóstico.
- Cerrar cada ejercicio con una validación ingenieril: ¿el resultado tiene sentido físico? ¿qué cambiaría si variara un parámetro clave?
Nivel 5 — Integrador con vectores (Sec. 2 → 3): vectores + for + while + break/continue + reporte