Подскажите пж-та (может кто-нибудь сталкивался) как нужно обрабатывать множество ветвлений в программе. Допустим банальное true и false. Они идут подрят и их огромное количество. Как лучше организовывать такие алгаритмы, чтобы можно было в любой момент времени (анализ вызывается циклически) вернутся к последней позиции (некий специальный счетчик, вроде как права доступа в unix).
Анализ в чужом коде или надо организовать в своем? Если первое, то были статьи Если второе, то есть индивидуальная продвинутая техника
Для начала "организовать в своем". Да и желательно чтобы было разъеснено, что, куда и почему. Спасибо за линки, но нужной мне информации там недостаточно.
> Подскажите пж-та (может кто-нибудь сталкивался) > как нужно обрабатывать множество ветвлений в программе. нужно избавляться от ветвлений существует множество способов, все зависит от конкретного алгоритма. практически все, что угодно можно реализовать без ветвлений... уточни задачу
Есть куча вопросов, на которые нужно ответить да\нет. От ответа зависит дальнейшая иерархия вопросов. Т.к. все происходит в консоли, то там я сделал цикл для обработки сообщений с клавы...
экспертная система? заноняем все вопросы в древовидную структуру и пишем простенький код, который по этому дереву проходит. плюсы: 1) очень просто программирируется 2) легко составить визуальный редактор дерева вопросов 3) легко контролировать корректность дерева вопросов ну и т.д. писать if - else - if - else это же умом поехать можно
прикладная теория цифровых автоматов отвечает на этот вопрос в виде графа конечного автомата (мили или мура если мне не изменяет память ) на практике решается сведением множественного выбора к множеству состояний и переходов между ними
зы в частности предложенное kaspersky дерево является частным случаем многосвязного списка(графа) и может рассматриваться как граф конечного автомата но только частным случаем, не всегда применимым
господа , прикладная теория цифровых автоматов рулит rtfm, господа , rtfm ... также можно на яндекс обратиться (в общем - то это приложение теории графов - дискретная математика , если я не ошибаюсь - основа вычислительной техники) а автоматы в частности , бывают аналоговые см.теория автоматического управления (это у меня была единственная двойка на экзамене) - классический пример - сливной бачак в унитазе (датчик - поплавок) если и есть над чем смеяться , так это над людьми игнорирующими базовые знания (IMHO)
rtfm successfully completed. http://is.ifmo.ru/projects/ http://www.softcraft.ru/auto.shtml <font size=1> P.S. Я лишь имею ввиду, что термин "цифровые автоматы" - это из "теории автоматического управления" воинов паяльника, разрабатывающих автоматические сливные бачки для унитазов. Для софтостроения более общепринятый термин - "конечные автоматы" (см. количество результатов на оба термина в яндексе)</font><!--size-->
captain cobalt дело в том , что конечный автомат есть частный случай цифрового автомата отличается он конечностью своих состояний , и как следствие реализуемостью в софтвере и хардвере. "воины паяльника" ( а скорее печатной платы и печатных кристалов, не знаю как там сейчас реализуются бис, сбис и другие микросхемы , процессоры и однокристалки )отличаются от программистов тем , что реализуют алгоритмы в железе. можно строго доказать , что любая программа может быть представлена в виде графа конечного автомата ( известного как граф-схемма алгоритма). можно лишь согласиться что в применении к софтверу цифровых процессоров , конечно же, возможен только цифровой автомат , соответственно можно его назвать просто автоматом.