Algoritmo para Calcular Descuentos por Monto en PSeInt (Guía 2026)
Aplicar promociones y descuentos es una lógica fundamental en cualquier sistema de punto de venta (POS) o e-commerce. En este tutorial de Lógica de Programación, aprenderás a diseñar un algoritmo en PSeInt que recompensa a los clientes según cuánto gastan: a mayor compra, mayor descuento. Este ejercicio es perfecto para dominar las Estructuras Condicionales Anidadas (Si-SiNo-Si), ya que evaluaremos rangos de precios (por ejemplo, compras mayores a $1000 vs. compras menores) para decidir qué porcentaje aplicar. Es la introducción ideal a la «lógica de negocios».
Conceptos Clave: Rangos y Porcentajes
Para que la «caja registradora» funcione, necesitamos entender cómo la computadora toma decisiones basadas en números:
Cuando hay más de dos opciones (ej: sin descuento, 10% y 20%), un simple Si-Entonces no basta. Necesitamos colocar un Si dentro de otro para crear una «escalera» de decisiones que verifique los montos de mayor a menor.
Recuerda: En programación no restamos «20» a 100. Multiplicamos por el factor decimal.
• Descuento = Monto * 0.20
• Total = Monto - Descuento
Análisis del Algoritmo
Supongamos la siguiente política de la tienda:
- Compra menor a $500: 0% de descuento.
- Compra entre $500 y $1000: 10% de descuento.
- Compra mayor a $1000: 20% de descuento.
-
ENTRADA
El monto total de la compra (Subtotal). Variable:
montoCompra(Real). -
PROCESO
Evaluar el monto en orden descendente para aplicar el porcentaje correcto.
1. ¿Es > 1000? -> Desc = 20%
2. ¿Es > 500? -> Desc = 10%
3. Si no -> Desc = 0% - SALIDA Imprimir una «factura» detallando: Subtotal, Descuento aplicado (monto) y Total Neto a Pagar.
Código Fuente (Solución Estándar)
Archivo: DescuentoTienda.pscDiagrama de Flujo
⚠️ Errores Frecuentes en Rangos Numéricos
La lógica de rangos es traicionera. Evita estos errores:
Si preguntas primero Si compra > 500, una compra de $2000 entrará en esa condición (porque 2000 es mayor que 500) y recibirá solo el 10% en lugar del 20%. Siempre evalúa del mayor al menor (o usa rangos con operador Y).
El código básico acepta «-100» como monto. En un sistema real, esto podría generar un «crédito» incorrecto. Siempre debemos validar que monto > 0.
Reto: Código Seguro (Validación)
Mejoremos el algoritmo para que no acepte números negativos y redondee los centavos para evitar problemas de visualización.
Preguntas Frecuentes (FAQ)
¿Puedo usar la estructura 'Segun'?
Segun (Switch) funciona mejor para valores discretos y exactos (Opciones de menú 1, 2, 3). Para rangos de dinero, Si-Entonces es la herramienta correcta.¿Cómo agrego un cupón de descuento extra?
¿Tiene cupón? (S/N). Si la respuesta es S, restas un valor adicional al totalPagar calculado previamente.¿Por qué me da el resultado con muchos decimales?
redon(variable) o formatea la salida si tu versión de PSeInt lo permite.¿Cómo cambio la moneda?
$ en los comandos Escribir por €, S/, o el que necesites.¿Listo para el siguiente nivel?
Domina la lógica de programación con nuestra colección completa.
Ver Más Ejercicios Resueltos