使用简单语义建模自动售货机
这个例子展示了如何使用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的设计规则:
该图表计算条件操作中的输出。
没有状态操作或转换操作。
输入的值
硬币
确定输出的值苏打水
.