Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
q = q0; //начальное состояние
while (q != qe) { //пока текущее состояние q не равно конечному состоянию qe
switch(q) {
case q0:
//что-нибудь делаем, если надо - меняем q на какое-нибудь q1 или q2, или qe
break;
case q1:
//что-нибудь делаем
break;
case q2:
//что-нибудь делаем
break;
}
}
state = 'INIT'
while state != 'QUIT':
symbol = read_input()
if state == 'INIT':
if symbol == '*':
doIntroduce()
state = 'INIT'
elif symbol == 'LOGIN':
doLogin()
state = 'SESSION'
elif symbol == 'EXIT':
doQuit()
state = 'QUIT'
elif state == 'STORE':
if symbol == '*':
doRemember()
state = 'STORE'
elif symbol == 'EXIT':
state = 'SESSION'
elif state == 'SESSION':
if symbol == 'SAY':
doSay()
state = 'SESSION'
elif symbol == '*':
state = 'SESSION'
elif state == 'MEMORIZE':
state = 'STORE'
elif state == 'EXIT':
state = 'INIT'
my $current_state = $self->{STATES}->{$state};
Конечные автоматы. Пишем ДКА