Pseudocódigo de la Máquina Expendedora

 

Pseudocódigo de la Máquina Expendedora

Pseudocódigo Completo

text
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ÓN

Pseudocódigo Explicado Línea por Línea

1. Inicialización

text
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

text
MIENTRAS verdadero HACER:
  • Explicación: Ciclo que se repite para siempre

  • Propósito: Mantener la máquina siempre funcionando

3. Lectura de Comandos

text
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

text
SI comando = "PARA" ENTONCES:
    mostrar "Apagando máquina..."
    TERMINAR_PROGRAMA
  • Explicación: Si el usuario escribe "PARA", terminamos el programa

  • Propósito: Permitir apagar la máquina

5. Comando RETIRAR - Devolver Dinero

text
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

text
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

text
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

text
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

text
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
  • Explicación: Si el dinero alcanza, entregamos producto y cambio

  • Propósito: Completar la transacción exitosamente

10. Manejo de Fondos Insuficientes

text
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

text
FUNCIÓN BUSCAR_PRECIO_PRODUCTO(codigo):
    SI codigo = "A1" ENTONCES devolver 15
    SI codigo = "A2" ENTONCES devolver 18
    // ... más productos
    devolver -1  // No encontrado
  • Explicació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

text
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

text
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

text
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

Entradas más populares de este blog

1-valores duplicados en un arreglo

Trabajas en una compañía que ofrece seguros de vida y de gastos