Непейвода Н.Н. Программирование. Раздел 4

Непейвода Н.Н. Программирование. Страница 450

Есть еще один вопрос, который требуется решить при таком подходе, — выбор типа результата функцийсостояний и способа возвращения результа­та. Естественный результат такой функции — это новое состояние, в которое попадает автомат при переходе. Он может быть представлен, например, гло­бальной переменной (такой как Stateв программе 10.2.2, которой присваива­ется новое значение при выполнении функциисостояния). Но элегантнее не

трогать Stateв каждой из функций, а предоставить задачу фактического из­менения состояния общему их контексту. Наиболее правильной реализацией состояний при таком подходе являются функции, которые вырабатывают в качестве результата значение типа, перечисляющего все состояния.

Следующая программа 10.2.3 почти буквально реализует данную идею. В отличие от программы 10.2.2, тип Statesсодержит три значения: St1, St2 и Exit. Последнему из них не соответствует ни одна функция изза триви­альности переходов и действий в данном состоянии.

Вариант 3: использовать тип Stateв качестве типа результата функций состояний.

Следует обратить внимание на то, что в данной программе явный цикл об­работки потока исчез. Но стоит ли изза этого считать вариант 3 ухудшени­ем предыдущего? Конечно, нет. Программа наглядна, строго соответствует таблице автомата. Можно сказать, что граф автомата определяет распреде­ленную по состояниям схему потоковой обработки. И это нисколько не хуже схем с явными циклами.

Проанализировав граф автомата или таблицу, можно заметить, что в дан­ном примере, наряду с циклом потоковой обработки, имеется еще один цикл: передачи управления между состояниями. Это причина, изза которой в двух предыдущих вариантах появились присваивание переменной Stateзначения и выбор выполняемого фрагмента по этому значению.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама