Pseudocódigo de la Máquina Expendedora
Pseudocódigo de la Máquina Expendedora
Pseudocódigo Completo
INICIAR_PROGRAMA:
total_dinero ← 0 // Variable para acumular el dinero
MIENTRAS verdadero HACER:
mostrar "Máquina expendedora lista. Comandos: [moneda], [código producto], RETIRAR, PARA"
comando ← leer entrada del usuario
SI comando = "PARA" ENTONCES:
mostrar "Apagando máquina..."
TERMINAR_PROGRAMA
SINO SI comando = "RETIRAR" ENTONCES:
SI total_dinero > 0 ENTONCES:
mostrar "Devolviendo " + total_dinero + " pesos"
total_dinero ← 0
SINO:
mostrar "No hay dinero para devolver"
FIN SI
SINO SI comando es un número ENTONCES:
valor_moneda ← convertir comando a número
SI valor_moneda está en [1, 2, 5, 10, 20] ENTONCES:
total_dinero ← total_dinero + valor_moneda
mostrar "Moneda aceptada. Total acumulado: " + total_dinero + " pesos"
SINO:
mostrar "Moneda de " + valor_moneda + " pesos no aceptada"
FIN SI
SINO SI comando tiene formato de código producto (Letra + Número) ENTONCES:
precio ← BUSCAR_PRECIO_PRODUCTO(comando)
SI precio = -1 ENTONCES:
mostrar "Producto " + comando + " no existe"
SINO SI total_dinero >= precio ENTONCES:
cambio ← total_dinero - precio
mostrar "Dispensando producto " + comando
SI cambio > 0 ENTONCES:
mostrar "Entregando cambio: " + cambio + " pesos"
FIN SI
total_dinero ← 0 // Reiniciar para siguiente cliente
SINO:
faltante ← precio - total_dinero
mostrar "Fondos insuficientes para " + comando
mostrar "Precio: " + precio + " pesos. Faltan: " + faltante + " pesos"
FIN SI
SINO:
mostrar "Comando no válido: " + comando
FIN SI
FIN MIENTRAS
FIN INICIAR_PROGRAMA
FUNCIÓN BUSCAR_PRECIO_PRODUCTO(codigo):
// Base de datos de productos y precios
SI codigo = "A1" ENTONCES devolver 15
SI codigo = "A2" ENTONCES devolver 18
SI codigo = "A3" ENTONCES devolver 20
SI codigo = "B1" ENTONCES devolver 12
SI codigo = "B2" ENTONCES devolver 25
SI codigo = "B3" ENTONCES devolver 30
SI codigo = "C1" ENTONCES devolver 8
SI codigo = "C2" ENTONCES devolver 10
SI codigo = "C3" ENTONCES devolver 12
SI codigo = "D1" ENTONCES devolver 22
SI codigo = "D2" ENTONCES devolver 28
SI codigo = "D3" ENTONCES devolver 35
devolver -1 // Código no encontrado
FIN FUNCIÓNPseudocódigo Explicado Línea por Línea
1. Inicialización
total_dinero ← 0
Explicación: Creamos una variable para llevar la cuenta del dinero insertado
Propósito: Recordar cuánto ha pagado el usuario actual
2. Ciclo Principal Infinito
MIENTRAS verdadero HACER:
Explicación: Ciclo que se repite para siempre
Propósito: Mantener la máquina siempre funcionando
3. Lectura de Comandos
comando ← leer entrada del usuario
Explicación: Esperamos a que el usuario escriba algo
Propósito: Obtener la acción que quiere realizar
4. Comando PARA - Salir del Programa
SI comando = "PARA" ENTONCES:
mostrar "Apagando máquina..."
TERMINAR_PROGRAMAExplicación: Si el usuario escribe "PARA", terminamos el programa
Propósito: Permitir apagar la máquina
5. Comando RETIRAR - Devolver Dinero
SI comando = "RETIRAR" ENTONCES:
SI total_dinero > 0 ENTONCES:
mostrar "Devolviendo " + total_dinero + " pesos"
total_dinero ← 0
SINO:
mostrar "No hay dinero para devolver"Explicación: Si el usuario quiere cancelar, le devolvemos su dinero
Propósito: Permitir que el usuario se arrepienta
6. Procesamiento de Monedas
SINO SI comando es un número ENTONCES:
valor_moneda ← convertir comando a número
SI valor_moneda está en [1, 2, 5, 10, 20] ENTONCES:
total_dinero ← total_dinero + valor_moneda
mostrar "Moneda aceptada. Total: " + total_dinero
SINO:
mostrar "Moneda no aceptada"Explicación: Si el usuario ingresa un número, es una moneda
Propósito: Validar y acumular dinero válido
7. Procesamiento de Productos
SINO SI comando tiene formato de código producto ENTONCES:
precio ← BUSCAR_PRECIO_PRODUCTO(comando)Explicación: Si el comando es tipo "A1", "B2", etc., es un producto
Propósito: Identificar qué producto quiere comprar
8. Validación de Producto Existente
SI precio = -1 ENTONCES:
mostrar "Producto no existe"Explicación: Verificamos si el código del producto es válido
Propósito: Evitar errores con productos que no existen
9. Verificación de Fondos Suficientes
SINO SI total_dinero >= precio ENTONCES:
cambio ← total_dinero - precio
mostrar "Dispensando producto " + comando
SI cambio > 0 ENTONCES:
mostrar "Entregando cambio: " + cambio + " pesos"
FIN SI
total_dinero ← 0Explicación: Si el dinero alcanza, entregamos producto y cambio
Propósito: Completar la transacción exitosamente
10. Manejo de Fondos Insuficientes
SINO:
faltante ← precio - total_dinero
mostrar "Fondos insuficientes. Faltan: " + faltante + " pesos"Explicación: Si no alcanza el dinero, informamos cuánto falta
Propósito: Guiar al usuario para que ingrese más dinero
11. Función de Búsqueda de Precios
FUNCIÓN BUSCAR_PRECIO_PRODUCTO(codigo):
SI codigo = "A1" ENTONCES devolver 15
SI codigo = "A2" ENTONCES devolver 18
// ... más productos
devolver -1 // No encontradoExplicación: Función que devuelve el precio de cada producto
Propósito: Centralizar la información de precios
Ejemplo de Ejecución en Pseudocódigo
Caso: Compra Exitosa con Cambio
Usuario escribe: "5" → Es número → moneda válida → total_dinero = 5 → Muestra: "Moneda aceptada. Total acumulado: 5 pesos" Usuario escribe: "10" → Es número → moneda válida → total_dinero = 15 → Muestra: "Moneda aceptada. Total acumulado: 15 pesos" Usuario escribe: "A1" → Es código producto → precio = 12 → 15 >= 12? SÍ → cambio = 3 → Muestra: "Dispensando producto A1" → Muestra: "Entregando cambio: 3 pesos" → total_dinero = 0 (reinicia)
Caso: Producto No Existente
Usuario escribe: "Z9"
→ Es código producto → BUSCAR_PRECIO_PRODUCTO("Z9") = -1
→ Muestra: "Producto Z9 no existe"
→ total_dinero no cambia (sigue acumulando)Caso: Moneda No Válida
Usuario escribe: "50" → Es número → ¿50 en [1,2,5,10,20]? NO → Muestra: "Moneda de 50 pesos no aceptada" → total_dinero no cambia
Este pseudocódigo representa
Comentarios
Publicar un comentario