#include "stdafx.h"
/*基於state_mode_******1
**上的 示例2:
有乙個燈,按下開按鈕,就會開燈,按下關按鈕就會關燈。
和一般等不同的是,兩次開之間的燈的明暗不一樣。
也就是說,第一次開的時候,是高亮,關燈後,再開是低亮,下次再開是高亮,迴圈往復。
這就是乙個很典型的簡單的有限狀態機。
簡單的描述有3個狀態,關燈[state_off],
高亮[state_high_light],低亮[state_low_light]。
大型一點的專案,比如複雜協議的實現,
乙個狀態轉移到下乙個狀態的情況是比較複雜的,
無法用當前狀態和事件簡單確定,所以一般需要函式。
*/#define state_depend 4
#define state_off 0
#define state_high_light 1
#define state_low_light 2
#define state_max 3
#define event_btn_off 0
#define event_btn_on 1
#define event_max 2
int last_state = state_low_light;
int last_light_state = state_low_light;
int lfsm_ignore(int cur_stat, int event);
int lfsm_btn_on(int cur_stat, int event);
int lfsm_btn_off(int cur_stat, int event);
struct light_fsm[state_max][event_max] =
, /*evetn_btn_off*/
, /*evetn_btn_on*/
}, //state_high_light
, /*evetn_btn_off*/
, /*evetn_btn_on*/
}, //state_low_light
, /*evetn_btn_off*/
, /*evetn_btn_on*/
},};
int lfsm_ignore(int cur_stat, int event)
int lfsm_btn_on(int cur_stat, int event)
else if (last_light_state == state_low_light)
else }
int lfsm_btn_off(int cur_stat, int event)
int light_change_state(int cur_stat, int next_state, int event)
else if (next_state == state_low_light)
//other state change related handlings, maybe use curent state and next
//next state,or event type
last_state = cur_stat;
cur_stat = next_state;
return 0;
} //other event type related handlings
return 0;
}int ******2_light_fsm_event(int cur_stat, int event)
if (light_fsm[cur_stat][event].next_state == state_depend)
else
light_change_state(cur_stat, next_state, event);
return 0;
}int main()
C語言程式設計實踐 C語言應用實踐
閱讀2 下面的鏈結中,是銀行系統的原始碼,請閱讀並執行 需要的檔案請自行建立 銀行系統 第一版 原始碼 第10周實踐 請完成下面的專案,併發部落格作為解題報告 專案1 編寫選擇結構程式,輸入個人月收入總額,計算出他本月應繳稅款和稅後收入 計算辦法見附 關於個人所得稅的有關背景知識 可以在下面程式的基...
設計模式 策略模式的實踐和應用(下)
工欲善其事必先利其器,如果還不了解策略設計模式的,可以先學習一下策略設計模式 設計模式 策略模式的實踐和應用 上 在生活中,我們也常常會遇到類似的情況,實現某乙個功能有多種方法,每種方法對應一種演算法,此時我們可以使用一種設計模式來實現不同的解決方案,同時也利於後期擴充套件,這就是今天要介紹的策略設...
C語言設計模式
專案的成功是偶然的,但是專案的失敗卻有很多原因,管理混亂 需求混亂 設計低劣 質量差 測試不到位等等。就軟體企業而言,沒有比優秀的文化和出色的企業人才更重要的了。從軟體設計層面來說,一般來說主要包括三個方面 1 軟體的設計受眾,是小孩子 老人 女性,還是專業人士等等 2 軟體的基本設計原則,以人為本...