crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 12.7.2025, 3:25