В этом примере показано, как использовать Мучнистую семантику, чтобы смоделировать торговый автомат.
В этом примере торговый автомат требует, чтобы 15 центов выпустили банку содовой. Покупатель может вставить никель или десять центов, по одному, чтобы купить содовую. График ведет себя как Мучнистая машина потому что ее выход soda
зависит и от входной монеты и от текущего состояния:
Когда начальное состояние got_0
активно. Никакая монета не была получена, или никакие монеты не оставляют.
Если никель получен (coin == 1
), выход soda
остается 0, но got_nickel
состояния становится активным.
Если десять центов получены (coin == 2
), выход soda
остается 0, но got_dime
состояния становится активным.
Если введенная монета не является десятью центов или никелем, got_0
состояния остается активен и никакая содовая не выпущена (выход
soda = 0
).
В активном got_nickel
состояния. Никель был получен.
Если другой никель получен (coin == 1
), got_dime
состояния становится активным, но никакая банка не выпущена (
soda
остается в 0).
Если десять центов получены (coin == 2
), банка выпущена (soda = 1
), монеты окружаются валом, и активное состояние становится got_0
потому что никакие монеты не оставляют.
Если введенная монета не является десятью центов или никелем, got_nickel
состояния остается активен и никакая банка не выпущена (выход
soda = 0
).
В активном got_dime
состояния. Десять центов были получены.
Если никель получен (coin == 1
), банка выпущена (soda = 1
), монеты окружаются валом, и активное состояние становится got_0
потому что никакие монеты не оставляют.
Если десять центов получены (coin == 2
), банка выпущена (soda = 1
), 15 центов окружаются валом, и активное состояние становится got_nickel
потому что никель (изменение) оставляют.
Если введенная монета не является десятью центов или никелем, got_dime
состояния остается активен и никакая банка не выпущена (выход
soda = 0
).
Этот пример Мучнистого торгового автомата иллюстрирует эти Мучнистые правила проектирования:
График вычисляет выходные параметры в действиях условия.
Нет никаких состояний активности или действий перехода.
График задает входные параметры графика (coin
) и выходные параметры (soda
).
Значение входа coin
определяет выход: выпущена ли содовая.