Моделируйте торговый автомат с помощью семантики Мили

В этом примере показано, как использовать семантику Мили для моделирования торгового автомата.

Логика торгового автомата Мили

В этом примере торговый автомат требует 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 определяет выход: освобождена ли сода.

Похожие темы