三种编程范式与状态机

procedural programming

functional programming

object-oriented programming

高级 state machine 抽象

三种编程范式与状态机_第1张图片

例如:旋转栅门

三种编程范式与状态机_第2张图片

输 入 = c o i n , t u r n , n o n e 输入 = {coin,turn,none} =cointurnnone
输 出 = e n t e r , p a y 输出 = {enter,pay} =enterpay
状 态 = l o c k e d , u n l o c k e d 状态 = {locked,unlocked} =lockedunlocked

n e x t S t a t e ( s , i ) = { u n l o c k e d , i = c o i n l o c k e d , i = t u r n s , o t h e r w i s e nextState(s,i)=\begin{cases} unlocked, & i = coin \\ locked, & i = turn \\ s, & otherwise \end{cases} nextState(s,i)=unlocked,locked,s,i=coini=turnotherwise

o u t p u t ( s , i ) = { e n t e r , i f   n e x t S t a t e ( s , i ) = u n l o c k e d p a y , o t h e r w i s e output(s,i)=\begin{cases} enter, & if\ nextState(s,i) = unlocked\\ pay, & otherwise \end{cases} output(s,i)={enter,pay,if nextState(s,i)=unlockedotherwise
三种编程范式与状态机_第3张图片

  • 结点表示状态
  • 弧线表示状态转换条件
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

你可能感兴趣的:(三种编程范式与状态机)