Contexto
Un supermercado quiere implementar un sistema básico en JavaScript que registre las compras de los clientes en una terminal de autoservicio. El sistema debe almacenar información del cliente y los productos que va añadiendo al carrito, calcular el total, aplicar descuentos si se superan ciertos montos, y validar condiciones como carritos vacíos o valores inválidos. El objetivo es que el equipo diseñe la lógica utilizando variables correctamente y domine los operadores, tipos de datos y control de flujo
Actividad
Trabajen en equipo para desarrollar una solución en JavaScript que cubra los siguientes aspectos:
- Nombre del cliente.
- Lista de productos (usar un arreglo de objetos con nombre, cantidad y precio).
- Total de compra.
- Descuento aplicado (si corresponde).
- CASO A. Si el carrito está vacío.
- CASO B. Si el monto total supera un cierto límite.
- CASO C. Si algún precio o cantidad ingresada es inválida.
- Producto con cantidad 0. CASO C
- Total de compra en 0. Tanto 1 como 3 provocan este.
- Lista de productos vacía. CASO A
- Precio negativo. CASO C
- Apliquen nombres significativos a todas las variables del sistema.
- Utilicen constantes para definir límites como monto mínimo para aplicar descuento o máximo de productos permitidos.
- Manipulen tipos simples (string, number, boolean) y complejos (arreglos y objetos) según corresponda.
- Controlen el scope de las variables según el diseño modular del programa (funciones).
- Usen operadores aritméticos para calcular subtotales y totales.
- Consideren la precedencia de operadores al aplicar fórmulas (como descuento o impuestos).
- Simulen acciones del cliente como añadir productos, quitar productos y finalizar compra.
- Usen if y else para mostrar diferentes mensajes según el total (por ejemplo: “gracias por tu compra”, “tu carrito está vacío”, “aplicaste un descuento”).
- Implementen un diagrama de flujo simple que explique la lógica principal del sistema y represente visualmente cómo se toman decisiones.
- ¿Cómo evitaron errores por mal uso de variables?
- ¿Qué beneficios vieron en el uso de objetos para representar productos?
- ¿Cómo manejaron una lógica clara y eficiente con if/else?
- ¿Qué condiciones de borde encontraron más retadoras?