crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Реализация конечного автомата
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
AD Дата 22.7.2009, 16:51
 
Цитата(kwisp @ 22.7.2009, 17:19) *
меня коллега ткнул носом на следующий способ реализации конечного автомата когда мой swich/case вырос до громадных размеров
1. создаешь енум, где элементы состояния автомата.
2. создаешь где быто нибыло (в классе в основном) статический массив указателей на функции обработчики.
3. меняешь состояние тут же проверяешь если есть обработчик в массиве вызываешь его. и быстрее в общем случае чем switch/case и меньше места занимает и модульность и гибкость. можно обработчики менять и обнулять если надо.

Может быть лучше с помощью паттерна Состояние/State? Не реализовывал, но, думаю, стоит попробовать.
kwisp Дата 22.7.2009, 16:19
  меня коллега ткнул носом на следующий способ реализации конечного автомата когда мой swich/case вырос до громадных размеров
1. создаешь енум, где элементы состояния автомата.
2. создаешь где быто нибыло (в классе в основном) статический массив указателей на функции обработчики.
3. меняешь состояние тут же проверяешь если есть обработчик в массиве вызываешь его. и быстрее в общем случае чем switch/case и меньше места занимает и модульность и гибкость. можно обработчики менять и обнулять если надо.

коллега сказал что подсмотрел в ядре линукса основную идею.

если кому интересно выложу пример.

П.С.
кажется где то я уже это писал:)....
sage Дата 13.11.2008, 12:06
 
Цитата(AD @ 13.11.2008, 10:08) *
не читая тонны документации
Документации вобщем-то не тонны :)
Есть книга В.Д. Паронджанова "Как улучшить работу ума? Алгоритмы без программистов -- это очень просто! М.: Дело, 2001. --360 стр"
AD Дата 13.11.2008, 11:08
 
Цитата(sage @ 13.11.2008, 10:57) *
Да, точно "силуэт", Вы правы :)
Насчёт "автоматности" "силуэта" шли жаркие дебаты. Но, на мой взгляд, тежело не увидеть очевидного... поскольку многие убедились на практике (в том числе и я), что "автоматные" задачи с помощью "силуэта" выражаются и успешно решаются. Что ещё нужно? ;)

Вопрос не в том! просто где-то из программы, в которой есть этот элемент, не читая тонны документации, можно узнать что с помощью СИЛУЭТА можно описать конечный автомат? Как это сделать прочитав КРАТКУЮ справку, предположим где-то в инете, можно "чайнику" создать этот автомат? Или же перед этим требуется хорошо разобраться в программе? :)
sage Дата 13.11.2008, 10:57
 
Цитата(AD @ 13.11.2008, 8:30) *
Можно вопрос? А каким образом пользователь, особенно такой "дубовый", как я,
поймет, что слово "силует"("силуэт" возможно ?????) подразумевает конечный автомат?
Да, точно "силуэт", Вы правы :)
Насчёт "автоматности" "силуэта" шли жаркие дебаты. Но, на мой взгляд, тежело не увидеть очевидного... поскольку многие убедились на практике (в том числе и я), что "автоматные" задачи с помощью "силуэта" выражаются и успешно решаются. Что ещё нужно? ;)
AD Дата 13.11.2008, 9:30
 
Цитата(sage @ 12.11.2008, 18:07) *
Конечный автомат в полной мере реализуется схемой типа "силует" в ДРАКОНе :rolleyes:

Можно вопрос? А каким образом пользователь, особенно такой "дубовый", как я,
поймет, что слово "силует"("силуэт" возможно ?????) подразумевает конечный автомат? :blink:
sage Дата 12.11.2008, 18:07
  А я предложение дописал
Цитата(sage @ 12.11.2008, 15:36) *
но язык вобщем-то может быть любой.
:)
ДРАКОН задаёт лишь управляющие конструкции, а наполнение блоков может быть осуществлено на любом языке :)
Таким образом, если нам необходима трансляция в С++, убираем из С++ все управляющие конструкции if, switch/case, while, и т.д. Их заменит графика! ;)
Если ещё и унифицировать синтаксис для наполнения блоков можно прийти к универсальному графическому представлению алгоритмов.
Похожая идея была у авторов сайта alglib, но там использованны морально устаревшие блок-схемы.
И что-бы не сложилось впечатление будто-бы это уход от темы ветки... Конечный автомат в полной мере реализуется схемой типа "силует" в ДРАКОНе :rolleyes:
Litkevich Yuriy Дата 12.11.2008, 17:29
 
Цитата(Litkevich Yuriy @ 12.11.2008, 19:40) *
Тем более, что в этой теме обсуждались проблемы реализации
что-то я не дописал предложение до конца :)
"... на С++"
sage Дата 12.11.2008, 17:00
 
Цитата(ViGOur @ 12.11.2008, 15:56) *
присоединяйся к Free DevStudio++. ;)
Нееет... уж лучше Вы к нам :)
ViGOur Дата 12.11.2008, 16:56
 
Цитата(sage @ 12.11.2008, 16:52) *
Новый редактор есть в планах писать :)
присоединяйся к Free DevStudio++. ;)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 12:09