Sobes.tech
Back to questions
Junior — Middle
57

Можете объяснить, что означает конечный автомат (FSM) в контексте программирования и системного дизайна?

Answer from AI

sobes.tech AI

Конечный автомат (Finite State Machine, FSM) — это модель вычислений, которая описывает систему через конечное число состояний и переходы между ними в ответ на события или входные данные. В программировании и системном дизайне FSM часто используется для управления поведением программы, где в каждый момент времени система находится в одном из состояний, и переходы между состояниями происходят по определённым правилам.

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

Пример на Python:

class TrafficLightFSM:
    def __init__(self):
        self.state = 'RED'

    def on_event(self, event):
        if self.state == 'RED' and event == 'timer':
            self.state = 'GREEN'
        elif self.state == 'GREEN' and event == 'timer':
            self.state = 'YELLOW'
        elif self.state == 'YELLOW' and event == 'timer':
            self.state = 'RED'

traffic_light = TrafficLightFSM()
print(traffic_light.state)  # RED
traffic_light.on_event('timer')
print(traffic_light.state)  # GREEN