天天看点

状态机有限状态机四大概念两种状态机类型:简单示例

有限状态机

常说的状态机是有限状态机FSM(Finite State Machine)。FSM指的是有有限个状态(一般是一个状态变量的值),这个机器同时能够从外部接收信号和信息输入,机器在接收到外部输入的信号后会综合考虑当前自己的状态和用户输入的信息,然后机器做出动作:跳转到另一个状态。状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。

四大概念

两种状态机类型:

简单示例

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

typedef enum{
	STATE1=0, STATE2, STATE3
}STATE_CODE;

int main(){
	int curState = 0;
	STATE_CODE stateCode = STATE1;
	printf("state1\n");
	while (true){
		scanf("%d", &curState);
		switch(stateCode){
			case STATE1:
				if (curState == 1){
					stateCode = STATE2;
					printf("state2\n");
				}else{
					stateCode = STATE1;
					printf("state1\n");
				}
				break;
			case STATE2:
				if (curState == 2){
					stateCode = STATE3;
					printf("state3\n");
				}else{
					stateCode = STATE1;
					printf("state1\n");
				}
				break;
			case STATE3:
				if (curState == 3){
					printf("success\n");
					return 0;
				}else{
					stateCode = STATE1;
					printf("state1\n");
				}
		}
	}	
	return 0;
}