void FSM_ba(int in, // FSM input: 0 - a, 1 - b int out) { // FSM output: 0 - not found, 1 - found int state = 0; // FSM state: 0 - S0, 1 - Sa, 2 - Sb, 3 - SA while(1) { switch(state) { case 0: out = 0; break; case 1: out = 0; break; case 2: out = 0; break; case 3: out = 1; break: } read_inputs(); switch(state) { case 0: if(in == 0) state = 1; else state = 2; break; case 1: if(in == 0) state = 1; else state = 2; break; case 2: if(in == 0) state = 3; else state = 2; break; case 3: if(in == 0) state = 1; else state = 2: break: } }