← JavaScript: el lenguaje

Sesión 6 · Semana 2

Taller · programas con reglas

Hoy · Hoja de ruta

  1. 1. Aprende: Cómo se descompone un enunciado en datos, reglas y salida antes de escribir código.
  2. 2. Haz: Resuelve cuatro problemas completos combinando lo de la semana.
  3. 3. Comprueba: Cada programa se prueba con casos normales, límite y absurdos.

Antes de empezar · 5 minutos, sin apuntes

  1. Ante un enunciado nuevo, ¿qué es lo primero que escribes?
  2. ¿Qué tres tipos de caso hay que probar siempre?
  3. ¿Qué diferencia hay entre «no da error» y «está bien»?

Antes de escribir código

Cómo se ataca un enunciado
  1. ¿Qué datos entran, y de qué tipo son?
  2. ¿Qué reglas se aplican, y en qué orden?
  3. ¿Qué sale, y en qué formato?
  4. ¿Qué casos raros existen: vacío, cero, negativo, texto?

Escribir esas cuatro respuestas cuesta dos minutos y ahorra media hora. Es exactamente el mismo hábito de la UD1, cuando antes de marcar una página decidías qué era cada cosa.

Un ejemplo resuelto

Enunciado. Dado un carrito con nombres, precios y unidades, calcula el subtotal, aplica un 10 % de descuento si supera 100 €, suma 4,95 € de envío salvo que el subtotal con descuento llegue a 50 €, y muestra el desglose.

Datos: tres listas paralelas de texto y número. Reglas: tres, y el orden importa —el descuento se aplica antes de decidir el envío—. Salida: cuatro líneas con dos decimales. Casos raros: carrito vacío, unidades cero, precio negativo.

const nombres = ["Teclado", "Ratón", "Alfombrilla"];
const precios = [89.9, 24.5, 12.75];
const unidades = [1, 2, 1];

let subtotal = 0;
for (let i = 0; i < precios.length; i++) {
  subtotal += precios[i] * unidades[i];
}

const descuento = subtotal > 100 ? subtotal * 0.1 : 0;
const conDescuento = subtotal - descuento;
const envio = conDescuento >= 50 ? 0 : 4.95;
const total = conDescuento + envio;

console.log(`Subtotal:  ${subtotal.toFixed(2)}`);
console.log(`Descuento: ${descuento.toFixed(2)}`);
console.log(`Envío:     ${envio.toFixed(2)}`);
console.log(`Total:     ${total.toFixed(2)}`);

Fíjate en que el código se lee casi como el enunciado. Eso no es casualidad: es consecuencia de haberlo descompuesto antes.

Tarea 6 · Cuatro problemas

Resuelve estos cuatro. Para cada uno, escribe primero las cuatro respuestas de la descomposición:

  1. Escalonado. Un descuento por unidades: hasta 3, nada; de 4 a 9, un 5 %; de 10 en adelante, un 12 %. Comprueba 3, 4, 9 y 10.
  2. Validador. Dada una entrada de texto, decide si es un precio válido: número, positivo, con dos decimales como mucho.
  3. Resumen. Dado un catálogo con precios y stock, calcula el valor total del almacén, cuántos productos están agotados y cuál es el más caro disponible.
  4. Etiquetado. Genera para cada producto una etiqueta de texto que combine su estado de stock y su franja de precio.
Objetivo mínimoLos dos primeros resueltos y probados con sus límites.
Si lo tienesLos cuatro, con el caso de catálogo vacío tratado.
RetoIntercambia el enunciado 4 con un compañero y resuelve el suyo sin preguntar nada.

Cierre de la semana 2

  • Traduces reglas de negocio a condicionales, con sus límites comprobados.
  • Recorres colecciones con el bucle adecuado.
  • Descompones un enunciado antes de escribir la primera línea.
  • Pruebas con casos normales, límite y absurdos.

Microprueba semanal 2 · 5–10 minutos

Individual, sin IA y sin apuntes.

  1. Traduce a una condición: «el envío es gratis a partir de 50 €». Di qué ocurre con 50 exactos.
  2. Escribe el bucle que suma una lista de precios, y di qué devuelve con la lista vacía.
  3. Un while no termina nunca: nombra la causa más probable y cómo la comprobarías.
---