![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
Реализация основана на хранении состояния в переменных различного типа в private, и выборки необходимых действия через условия if, switch При увеличении количества состояний код становится тяжелее в сопровождении. Работаю с медленным устройством, использующим сложный протокол обмена, выносить код для работы с ним в отдельный поток нет возможности. Отлаживать такого монстра против линейного исполнения кода сложнее. Вопрос - опишите, пожалуйста, свои подходы к построению алгоритмов, требующих выполнения различных действий в зависимости от внешних воздействий и предыдущего состояния. |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
semibug, создай таблицу переходов. по столбцам события, по строкам состояния ну или наоборот в ячейках новые состояния. по приходу события вычисляешь новое состояние используя код текущего состояния и код события как индексы в этой таблице
|
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Не совсем понял что имеется ввиду. "Конечный автомат" - несколько иное... Для него вполне подойдёт паттерн "Состояние". Это сообщение отредактировал(а) Леопольд - 2.9.2009, 07:30 -------------------- вопросов больше чем ответов |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
Леопольд, почему несколько иное? именно так: в зависимости от текущего состояния и входного символа переместиться в новое состояние, если я математику не забыл окончательно
|
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Добавлено @ 14:05 Слышал краем уха что в бусте есть либа стэйт машины, но нашёл только конвертер (если не ошибся) из UML в С++ и обратно. http://www.boost.org/doc/libs/1_40_0/libs/.../doc/index.html Это сообщение отредактировал(а) Леопольд - 2.9.2009, 14:06 -------------------- вопросов больше чем ответов |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
Леопольд, упс. Ты безусловно внимательнее меня. я эту фразу понял так, что "предыдущее" это по отношению к тому новому, которое еще не вычислено, то есть фактически "текущее". Дождемся автора пусть он нас рассудит.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |