三种编程范式与状态机

procedural programming

functional programming

object-oriented programming

高级 state machine 抽象

三种编程范式与状态机

例如:旋转栅门

三种编程范式与状态机

=cointurnnone输入 = {coin,turn,none}
=enterpay输出 = {enter,pay}
=lockedunlocked状态 = {locked,unlocked}

nextState(s,i)={unlocked,i=coinlocked,i=turns,otherwisenextState(s,i)=\begin{cases} unlocked, & i = coin \\ locked, & i = turn \\ s, & otherwise \end{cases}

output(s,i)={enter,if nextState(s,i)=unlockedpay,otherwiseoutput(s,i)=\begin{cases} enter, & if\ nextState(s,i) = unlocked\\ pay, & otherwise \end{cases}
三种编程范式与状态机

  • 结点表示状态
  • 弧线表示状态转换条件
time 0 1 2 3 4 5 6
state locked locked unlocked unlocked locked locked unlocked
input none coin none turn turn coin coin
output pay enter enter pay pay enter enter