使用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的示例说明了以下淡淡的设计规则:
该图在条件动作中计算输出。
没有国家行动或过渡行动。
图表定义图表输入(
硬币
)和输出(苏打
)。输入的值
硬币
确定输出:是否释放苏打水。