主要内容

使用简单语义建模自动售货机

这个例子展示了如何使用Mealy语义为自动售货机建模。粉状图只计算过渡的输出,而不是状态的输出。有关更多信息,请参见粉状图的设计考虑

米粉自动售货机的逻辑

在这个例子中,自动售货机出售一罐苏打水需要15美分。购买者可以投入一枚五分硬币或一枚一角硬币,一次一枚,购买苏打水。由于其输出,该图表的行为类似于Mealy机器苏打水取决于输入硬币和当前状态:

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自动售货机的设计规则

Mealy自动售货机的例子说明了Mealy的设计规则:

  • 该图表计算条件操作中的输出。

  • 没有状态操作或转换操作。

  • 输入的值硬币确定输出的值苏打水

相关的话题

Baidu
map