Main Content

Modelar una máquina expendedora utilizando la semántica de Mealy

Este ejemplo muestra cómo utilizar la semántica de Mealy para modelar una máquina expendedora. Los diagramas de Mealy calculan las salidas solo en las transiciones, no en los estados. Para obtener más información, consulte Design Considerations for Mealy Charts.

Lógica de la máquina expendedora de Mealy

En este ejemplo, la máquina expendedora solicita 15 centavos para dispensar una lata de refresco. El comprador puede introducir una moneda de 5 centavos o una de 10 centavos, una a la vez, para comprar el refresco. El gráfico se comporta como una máquina de Mealy porque su salida soda depende tanto de la entrada de moneda como del estado actual:

got_0: no se ha recibido ninguna moneda o no se requieren más monedas.

  • Si se recibe una moneda de 5 centavos (coin == 1), la salida soda permanece en 0, pero el estado got_nickel se convierte en activo.

  • Si se recibe una moneda de 10 centavos (coin == 2), la salida soda permanece en 0, pero el estado got_dime se convierte en activo.

  • Si la entrada de moneda no es una moneda de 10 centavos o 5 centavos, el estado got_0 permanece activo y no se dispensa ningún refresco (salida soda = 0).

got_nickel: se ha recibido una moneda de 5 centavos.

  • Si se recibe otra moneda de 5 centavos (coin == 1), el estado got_dime se convierte en activo, pero no se dispensa una lata (soda permanece en 0).

  • Si se recibe una moneda de 10 centavos (coin == 2), se dispensa una lata (soda = 1), las monedas se depositan y el estado activo se convierte en got_0 porque no se requieren más monedas.

  • Si la entrada de moneda no es una moneda de 10 centavos o 5 centavos, el estado got_nickel permanece activo y no se dispensa una lata (salida soda = 0).

got_dime: se ha recibido una moneda de 10 centavos.

  • Si se recibe una moneda de 5 centavos (coin == 1), se dispensa una lata (soda = 1), las monedas se depositan y el estado activo se convierte en got_0 porque no se requieren más monedas.

  • Si se recibe una moneda de 10 centavos (coin == 2), se dispensa una lata (soda = 1), se depositan 15 centavos y el estado activo se convierte en got_nickel porque se requiere una moneda de 5 centavos (cambio).

  • Si la entrada de moneda no es una moneda de 10 centavos o 5 centavos, el estado got_dime permanece activo y no se dispensa una lata (salida soda = 0).

Reglas de diseño en una máquina expendedora de Mealy

Este ejemplo de una máquina expendedora de Mealy ilustra las siguientes reglas de diseño de Mealy:

  • El gráfico calcula las salidas en las acciones de condición.

  • No hay acciones de estado o acciones de transición.

  • El valor de entrada coin determina el valor de salida soda.

Temas relacionados