Реализация конечного автомата |
Здравствуйте, гость ( Вход | Регистрация )
Реализация конечного автомата |
sage |
12.11.2008, 18:07
Сообщение
#11
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 12.11.2008 Из: Украина, Киев Пользователь №: 418 Спасибо сказали: 0 раз(а) Репутация: 0 |
А я предложение дописал
но язык вобщем-то может быть любой. ДРАКОН задаёт лишь управляющие конструкции, а наполнение блоков может быть осуществлено на любом языке Таким образом, если нам необходима трансляция в С++, убираем из С++ все управляющие конструкции if, switch/case, while, и т.д. Их заменит графика! Если ещё и унифицировать синтаксис для наполнения блоков можно прийти к универсальному графическому представлению алгоритмов. Похожая идея была у авторов сайта alglib, но там использованны морально устаревшие блок-схемы. И что-бы не сложилось впечатление будто-бы это уход от темы ветки... Конечный автомат в полной мере реализуется схемой типа "силует" в ДРАКОНе |
|
|
AD |
13.11.2008, 9:30
Сообщение
#12
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Конечный автомат в полной мере реализуется схемой типа "силует" в ДРАКОНе Можно вопрос? А каким образом пользователь, особенно такой "дубовый", как я, поймет, что слово "силует"("силуэт" возможно ?????) подразумевает конечный автомат? Сообщение отредактировал AD - 13.11.2008, 9:30 |
|
|
sage |
13.11.2008, 10:57
Сообщение
#13
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 12.11.2008 Из: Украина, Киев Пользователь №: 418 Спасибо сказали: 0 раз(а) Репутация: 0 |
Можно вопрос? А каким образом пользователь, особенно такой "дубовый", как я, Да, точно "силуэт", Вы правы поймет, что слово "силует"("силуэт" возможно ?????) подразумевает конечный автомат? Насчёт "автоматности" "силуэта" шли жаркие дебаты. Но, на мой взгляд, тежело не увидеть очевидного... поскольку многие убедились на практике (в том числе и я), что "автоматные" задачи с помощью "силуэта" выражаются и успешно решаются. Что ещё нужно? |
|
|
AD |
13.11.2008, 11:08
Сообщение
#14
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Да, точно "силуэт", Вы правы Насчёт "автоматности" "силуэта" шли жаркие дебаты. Но, на мой взгляд, тежело не увидеть очевидного... поскольку многие убедились на практике (в том числе и я), что "автоматные" задачи с помощью "силуэта" выражаются и успешно решаются. Что ещё нужно? Вопрос не в том! просто где-то из программы, в которой есть этот элемент, не читая тонны документации, можно узнать что с помощью СИЛУЭТА можно описать конечный автомат? Как это сделать прочитав КРАТКУЮ справку, предположим где-то в инете, можно "чайнику" создать этот автомат? Или же перед этим требуется хорошо разобраться в программе? |
|
|
sage |
13.11.2008, 12:06
Сообщение
#15
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 12.11.2008 Из: Украина, Киев Пользователь №: 418 Спасибо сказали: 0 раз(а) Репутация: 0 |
не читая тонны документации Документации вобщем-то не тонны Есть книга В.Д. Паронджанова "Как улучшить работу ума? Алгоритмы без программистов -- это очень просто! М.: Дело, 2001. --360 стр" |
|
|
kwisp |
22.7.2009, 16:19
Сообщение
#16
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
меня коллега ткнул носом на следующий способ реализации конечного автомата когда мой swich/case вырос до громадных размеров
1. создаешь енум, где элементы состояния автомата. 2. создаешь где быто нибыло (в классе в основном) статический массив указателей на функции обработчики. 3. меняешь состояние тут же проверяешь если есть обработчик в массиве вызываешь его. и быстрее в общем случае чем switch/case и меньше места занимает и модульность и гибкость. можно обработчики менять и обнулять если надо. коллега сказал что подсмотрел в ядре линукса основную идею. если кому интересно выложу пример. П.С. кажется где то я уже это писал.... |
|
|
AD |
22.7.2009, 16:51
Сообщение
#17
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
меня коллега ткнул носом на следующий способ реализации конечного автомата когда мой swich/case вырос до громадных размеров 1. создаешь енум, где элементы состояния автомата. 2. создаешь где быто нибыло (в классе в основном) статический массив указателей на функции обработчики. 3. меняешь состояние тут же проверяешь если есть обработчик в массиве вызываешь его. и быстрее в общем случае чем switch/case и меньше места занимает и модульность и гибкость. можно обработчики менять и обнулять если надо. Может быть лучше с помощью паттерна Состояние/State? Не реализовывал, но, думаю, стоит попробовать. |
|
|
Текстовая версия | Сейчас: 27.11.2024, 8:26 |