主要内容

使用Mealy语义型自动售货机

此示例显示了如何使用Mealy语义来建模自动售货机。

Mealy自动售货机的逻辑

在此示例中,自动售货机需要15美分才能释放一罐苏打水。购买者可以一次插入镍或一毛钱,以购买苏打水。该图表的行为就像是一台机器,因为其输出苏打取决于输入硬币和当前状态:

初始状态时got_0活跃。没有收到硬币或没有硬币。

  • 如果收到镍(硬币== 1), 输出苏打剩下0,但说明got_nickel变得活跃。

  • 如果收到一毛钱(硬币== 2), 输出苏打剩下0,但说明got_dime变得活跃。

  • 如果输入硬币不是一角钱或镍,则状态got_0保持活跃,没有苏打水(输出)苏打= 0)。

处于活跃状态got_nickel收到了镍。

  • 如果收到另一个镍(硬币== 1), 状态got_dime变得活跃,但没有罐头被释放(苏打保持在0)。

  • 如果收到一毛钱(硬币== 2)释放一个罐(苏打= 1),硬币是存放的,活跃状态变为got_0因为没有硬币。

  • 如果输入硬币不是一角钱或镍,则状态got_nickel保持活跃并且没有罐头(输出)苏打= 0)。

处于活跃状态got_dime收到一毛钱。

  • 如果收到镍(硬币== 1)释放一个罐(苏打= 1),硬币是存放的,活跃状态变为got_0因为没有硬币。

  • 如果收到一毛钱(硬币== 2)释放一个罐(苏打= 1),有15美分的存放物,活跃状态变为got_nickel因为剩下镍(更改)。

  • 如果输入硬币不是一角钱或镍,则状态got_dime保持活跃并且没有罐头(输出)苏打= 0)。

Mealy Vending Machine中的设计规则

这台Mealy Vending Machine的示例说明了以下淡淡的设计规则:

  • 该图在条件动作中计算输出。

  • 没有国家行动或过渡行动。

  • 图表定义图表输入(硬币)和输出(苏打)。

  • 输入的值硬币确定输出:是否释放苏打水。

相关话题