Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конечный автомат 
:(
    Опции темы
semibug
Дата 1.9.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет




Реализация основана на хранении состояния в переменных различного типа в private, и выборки необходимых действия через условия if, switch
При увеличении количества состояний код становится тяжелее в сопровождении.
Работаю с медленным устройством, использующим сложный протокол обмена, выносить код для работы с ним в отдельный поток нет возможности.
Отлаживать такого монстра против линейного исполнения кода сложнее.

Вопрос - опишите, пожалуйста, свои подходы к построению алгоритмов,  требующих выполнения различных действий в зависимости от внешних воздействий и предыдущего состояния.





PM   Вверх
17dufa
Дата 1.9.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 3
Всего: 5



semibug, создай таблицу переходов. по столбцам события, по строкам состояния ну или наоборот в ячейках новые состояния. по приходу события вычисляешь новое состояние используя код текущего состояния и код события как индексы в этой таблице
PM MAIL   Вверх
Леопольд
Дата 2.9.2009, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(semibug @  1.9.2009,  13:38 Найти цитируемый пост)
Вопрос - опишите, пожалуйста, свои подходы к построению алгоритмов,  требующих выполнения различных действий в зависимости от внешних воздействий и предыдущего состояния.
Не совсем понял что имеется ввиду. "Конечный автомат" - несколько иное... Для него вполне подойдёт паттерн "Состояние".

Это сообщение отредактировал(а) Леопольд - 2.9.2009, 07:30


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
17dufa
Дата 2.9.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 3
Всего: 5



Леопольд, почему несколько иное? именно так: в зависимости от текущего состояния и входного символа переместиться в новое состояние, если я математику не забыл окончательно smile 
PM MAIL   Вверх
Леопольд
Дата 2.9.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(17dufa @  2.9.2009,  11:57 Найти цитируемый пост)
почему несколько иное? именно так: в зависимости от текущего состояния


Цитата(semibug @  1.9.2009,  13:38 Найти цитируемый пост)
в зависимости от внешних воздействий и предыдущего состояния


Добавлено @ 14:05
Слышал краем уха что в бусте есть либа стэйт машины, но нашёл только конвертер (если не ошибся) из UML в С++ и обратно.
http://www.boost.org/doc/libs/1_40_0/libs/.../doc/index.html

Это сообщение отредактировал(а) Леопольд - 2.9.2009, 14:06


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
17dufa
Дата 2.9.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 3
Всего: 5



Леопольд, упс. Ты безусловно внимательнее меня. я эту фразу понял так, что "предыдущее" это по отношению к тому новому, которое еще не вычислено, то есть фактически "текущее". Дождемся автора пусть он нас рассудит.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0867 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.