⑴ C語言作業C/C++數學詞法分析器。最好是用狀態機做的,沒有也沒關系,我給出狀態機的圖,和分析器的線路圖
我記得有個神奇的東西叫做bison&flex
嘛……只是這么一說你可以自己慢慢研究……
用來做作業好像不太道德啊=w=
⑵ C語言狀態機 swtich 按鍵切換問題。連鍵
如果想它停止繼續判斷,在要停止的語句後面加一個break就行了
⑶ 在stateflow中由一個狀態機調到另外幾個狀態機,先判定哪個條件
最近一直在考慮軟體開發的事,想起來matlab的招聘好像有一條是有simulink或stateflow軟體開發經驗。
貧道沒有試過用simulink生成exe,只是做GUI的時候,最終生成exe給別的電腦用,但是還要把接近400M的MCR安裝包一起發給別的電腦,沒裝matlab的電腦。
這里貧道就說說stateflow的一些知識,就是有限狀態機(FSM)在matlab里的應用。
也算是圖形化編程的一種,通過有方向箭頭的曲線連接狀態或者節點,再加上邏輯表基本上就能完成簡單的由事件驅動的模型了。
一開始貧道就是想用它來建立模型,然後自動生成c代碼,mathworks也是這么宣傳的。
單片機的編程其實就是事件觸發,輸入口變化之後開始內部處理,然後在輸出口反應結果,很符合有限狀態機的有限狀態。
在書店和圖書館里沒找到stateflow的書,一本也沒有,於是貧道只好下載了一本,好像也是唯一一本介紹stateflow的書的PDF版,樂呵呵的去列印店列印了。
書裡面前幾章詳細的介紹了stateflow的控制項(這里盜用vb的概念),後來舉了幾個復雜的例子講解stateflow的用法,那些例子貧道現在還是沒有能夠徹底的理解掌握。
有一個是汽車車窗的控制,貧道還記得的主要是駕駛員有絕對控制權,乘客的控制權要低於駕駛員。
還有汽車音樂播放器的例子,下一曲,上一曲,暫停,播放,停止,開機後記憶播放,關機等等這些播放器該有的功能,全都在一個直觀的,用箭頭流向表示的狀態圖里編程。
邏輯表就好像是數字電路的真值表,前面給出各種需要的事件組合,最後給出響應的狀態。
定義類似函數名稱之後就可以在狀態圖里調用了。
⑷ 怎麼用c語言寫狀態機呀請舉例說明
c語言寫狀態機之前:
1、確定一共有多少種狀態,這里的狀態有開和關,細分還有say thankyou 和警告
2、確定狀態之間的遷移條件
如果按照四種狀態:開、關、說謝謝、警告,那麼這四種狀態之前的遷移條件很明顯了
分兩個函數:
1、檢查是否需要遷移狀態;
2、遷移狀態.
遍歷各種狀態檢查是否有狀態需要發生遷移.一般用一個switch將各種狀態列出,然後在各種狀態裡面用if檢查是否需要遷移狀態,如果需要遷移,做好標記.
再次遍歷各種狀態,檢查哪些狀態做了標記,遷移到新狀態,並做相應的操作,比如進入關的時候,做關門動作。
典型的狀態機結構:
enum { state_A, state_B, state_C } state = state_A;
while(1)
{
switch ( state )
{
case state_A:
if ( event_A ) // 這里也可以用switch
{
action_1(); // 在某狀態下發生某事件執行某個動作,並轉入下個狀態
state = state_B;
}
else if ( event_B )
{
}
else
{
}
break;
case state_B:
... ...
}
}
⑸ 求一本c,c++或者c#的關於狀態機的書,多謝
狀態機是一種設計模式!
你要看設計模式的書!
這個東西確實很巧妙很好玩!
⑹ 怎樣把C語言代碼轉化成有限狀態機(圖)
不懂你的問題?
⑺ C語言中如何控制時間高手進!
1.肯定不能用scanf()函數,沒有時間限制設定。
2.方法1:同步邏輯方式:循環檢測1s超時,判斷之內有無鍵盤輸入。
3.方法2:非同步邏輯方式:採用有限狀態機編程,1s超時作為一個事件輸入。
一般情況下,都會採用方法2進行軟體設計。
⑻ C語言 狀態機代碼 怎麼寫
剛好前段時間寫了一個簡單協議的狀態機,代碼就不寫了,說一下大概吧
1、確定一共有多少種狀態,這里的狀態有開和關,細分還有say thankyou 和警告
2、確定狀態之間的遷移條件
如果按照四種狀態:開、關、說謝謝、警告,那麼這四種狀態之前的遷移條件很明顯了
分兩個函數:1、檢查是否需要遷移狀態;2、遷移狀態。
遍歷各種狀態檢查是否有狀態需要發生遷移。一般用一個switch將各種狀態列出,然後在各種狀態裡面用if檢查是否需要遷移狀態,如果需要遷移,做好標記。
再次遍歷各種狀態,檢查哪些狀態做了標記,遷移到新狀態,並做相應的操作,比如進入關的時候,做關門動作
剛才忘記說了,還有一個運轉狀態機函數,main函數在被觸發的情況下調用運轉函數,觸發條件有:投幣,人進入。
⑼ 用單片機C語言怎麼寫用狀態機實現按鍵控制LED燈閃爍這個程序
#include<STC12C52.H>
#defineucharunsignedchar
#defineuintunsignedint
sbitkey=P1^2;
sbitp1_6=P1^6;
voiddelay(uchardelay_time)
{
ucharn;
uintm;
for(n=0;n<delay_time;n++)
{
for(m=0;m<10000;m++);
}
}
voidkeyscan()
{
if(key==0)
{
delay(5);
if(key==0)
while(!key)
{
p1_6=0;
delay(20);
p1_6=1;
delay(20);
}
}
}
voidmain()
{
WDT_CONTR=0x3C;
while(1)
{
keyscan();
WDT_CONTR=0x3C;
}
}
這個功能可以用中斷來實現,當然,現在我寫的這個也可以實現。由於你用的晶振頻率不知道,所以你自己修改一下延時時間,再把頭文件改一下,就可以了,我試驗了,可以實現改功能。
