Описание тега state-machines

Конечный автомат - это вычислительная модель, используемая для разработки как компьютерных программ, так и последовательных логических схем. Он определяет, что сущность в программе может находиться в одном из конечного числа состояний. Состояние, в котором оно находится в любой момент времени, называется текущим состоянием. Он может переходить из одного состояния в другое, когда инициируется инициирующим событием или условием; это называется переходом.

Конечный автомат - это абстрактная машина, которая обладает

  • Состояние (что делает система)
  • Переходы (какие входы вызывают, какие состояния происходят)
  • Действия при входе (что происходит при входе в состояние)
  • Выходные действия (аналог входных действий)

В результате система может динамически изменять свое поведение в зависимости от того, что она в данный момент делает и какой ввод получает - это позволяет конечным автоматам моделировать многие типы систем. (Знакомый пример - Regex - Perl, Python, Tcl, .NET, и большинство других реализаций используют конечный автомат внутренне).

Например, рассмотрим принтер, который может либо ожидать задания, либо распечатывать его (состояния), и может начать печать, когда задание получено, и начать ожидание, когда оно выполнено с текущим заданием (переходы). Уведомление об отправке - это выходное действие для состояния "Печать", чтобы уведомить очередь печати о том, что оно выполнено.

SDL описание принтера

(Вышеприведенная диаграмма в формате SDL - UML также популярен для представления диаграмм состояний).