DRAKON.SU https://forum.drakon.su/ |
|
Как правильно построить цикл? https://forum.drakon.su/viewtopic.php?f=172&t=3809 |
Страница 1 из 4 |
Автор: | Ильченко Эдуард [ Среда, 01 Февраль, 2012 11:20 ] |
Заголовок сообщения: | Как правильно построить цикл? |
Вопрос знатокам. Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B) Если нет, то каким правилом пользоваться? Вложение: C1.png [ 8.01 КБ | Просмотров: 21408 ] |
Автор: | Alexey_Donskoy [ Среда, 01 Февраль, 2012 12:37 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Ильченко Эдуард писал(а): Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B) Дополнительный вход не разрешён.Если нет, то каким правилом пользоваться? Но если очень хочется, то можно абсолютно всё - через силуэт |
Автор: | Ильченко Эдуард [ Среда, 01 Февраль, 2012 13:39 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Alexey_Donskoy писал(а): Ильченко Эдуард писал(а): Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B) Дополнительный вход не разрешён. Если нет, то каким правилом пользоваться? ... Осталось сформулировать правила, в какие точки можно пересаживать лиану, а в какие нет. И критерии для автоматического поиска таких точек : ) |
Автор: | Alexey_Donskoy [ Среда, 01 Февраль, 2012 14:45 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Ильченко Эдуард писал(а): сформулировать правила, в какие точки можно пересаживать лиану, а в какие нет. И критерии для автоматического поиска таких точек : ) Легко. Все участки графа от точек слияния до развилки с обратным ходом к точке слияния образуют тела циклов (маркируются, отображаются в соответствующих списках). Текущая развилка (от которой начинается пересадка), может находиться в нескольких телах вложенных циклов. Выбираем из них глубочайший уровень (пусть будет N). Тогда получается правило: точка пересадки должна находится в пределах участка графа N. Если политика допускает досрочный выход из цикла, то к разрешённой области добавляется тело цикла N-1, лежащее на прямом пути (то есть ниже) выхода из цикла N. |
Автор: | Степан Митькин [ Среда, 01 Февраль, 2012 15:04 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Ильченко Эдуард писал(а): Вопрос знатокам. Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B) Если нет, то каким правилом пользоваться? Вложение: C1.png Интересный вопрос. Есть следующие соображения: 1) Дополнительные входы в цикл ДЛЯ запрещены. Но здесь ведь не цикл ДЛЯ! 2) Цикла со стрелкой, в котором имеется вот такой боковой вход, нет в списке макроикон. Ну и что? Правила ДРАКОНа ведь не нарушаются. 3) То, что происходит на данной диаграмме, совершенно понятно. С другой стороны, паттерн "цикл со стрелкой" нарушен. Владимир Даниелович, как быть в данной ситуации? Запретить или разрешить? |
Автор: | Ильченко Эдуард [ Среда, 01 Февраль, 2012 15:09 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Alexey_Donskoy писал(а): Ильченко Эдуард писал(а): сформулировать правила, в какие точки можно пересаживать лиану, а в какие нет. И критерии для автоматического поиска таких точек : ) Легко.Спасибо. Буду думать : ) |
Автор: | Владислав Жаринов [ Среда, 01 Февраль, 2012 17:53 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Степан Митькин писал(а): Ильченко Эдуард писал(а): Вопрос знатокам. Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B) Если нет, то каким правилом пользоваться? Вложение: C1.png Интересный вопрос. Есть следующие соображения: 1) Дополнительные входы в цикл ДЛЯ запрещены. Но здесь ведь не цикл ДЛЯ! 2) Цикла со стрелкой, в котором имеется вот такой боковой вход, нет в списке макроикон. Ну и что? Правила ДРАКОНа ведь не нарушаются. 3) То, что происходит на данной диаграмме, совершенно понятно. С другой стороны, паттерн "цикл со стрелкой" нарушен. Владимир Даниелович, как быть в данной ситуации? Запретить или разрешить? 1-2) Более того, его вроде как нельзя вывести вводом атома. Только пересадкой лианы. А в Тезисе 28 - "запрещается образовывать второй вход в цикл". Шампур-метод же даёт "операционно-аксиоматическое" определение, "что есть правильная схема". Алексей уже объяснил и "денотационно" то же самое для данного случая... 3) Понятно-то понятно... а вот как-то только через вложения атомов структуру, в которой "происходит то же самое", вывести не получается?.. |
Автор: | Ильченко Эдуард [ Четверг, 02 Февраль, 2012 00:12 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Степан Митькин писал(а): 1) Дополнительные входы в цикл ДЛЯ запрещены. Но здесь ведь не цикл ДЛЯ! 2) Цикла со стрелкой, в котором имеется вот такой боковой вход, нет в списке макроикон. Ну и что? Правила ДРАКОНа ведь не нарушаются. "Терзают меня смутные сомнения" : ) Если к goto имеются серьёзные претензии, а в ДРАКОНе goto отсутствует как класс : ), то может и показанный на рисунке случай вполне себе нормальный вариант, не влекущий за собой никаких подводных камней? Тем более что всё равно Alexey_Donskoy писал(а): ... можно абсолютно всё - через силуэт
|
Автор: | Илья Ермаков [ Четверг, 02 Февраль, 2012 07:34 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Если рассматривать ДРАКОН-топологию как сводимый (аранжируемый, устремлённый) граф, то нельзя. Если говорить проще, то в правильной (сводимой) топологии, рассматривая любые две вершины, через которые пролегает некоторый путь в графе, мы можем сказать, какая из них "доминирует" над какой. Возьмём Вашу схему. Пронумерую знаки схемы сверху вниз, от 1 до 6. Смотрите, например, на 3 и 4 узел графа. Для некоторых путей в графе сначала встретится 3, а потом 4, а для некоторых - сначала 4, а потом 3. Т.е. нарушено отношение частичного порядка по доминированию, присущее сводимым графам. Всё это, как бы, "заумь", а к чему это ведёт на практике? Кроме того, что это признак непродуманной структуры, это ещё делает невозможным автоматическое рисование цикла редакторами (будущими). Представьте себя на месте редактора: как упорядочить схему, если нарушено однозначное отношение порядка на путях в ней? Если такое действительно вылезает, то это может быть автоматная логика, в которой вообще нет одного цикла. И тогда используется силуэт, с явным выделением веток под состояния. |
Автор: | Ильченко Эдуард [ Четверг, 02 Февраль, 2012 09:15 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Илья Ермаков писал(а): ... это ещё делает невозможным автоматическое рисование цикла редакторами (будущими). Поясните, пожалуйста, что Вы имеете ввиду. Невозможно графически нарисовать цикл? Или перевести граф-схему в текст, например, Python? Или из текста получить графику? |
Автор: | Ильченко Эдуард [ Четверг, 02 Февраль, 2012 11:10 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Ильченко Эдуард писал(а): Разрешено ли построение цикла как на рисунке ... C минусами как бы всё понятно : ) А вот могут ли в данном построении быть плюсы? Не для редактора, а для маршрутной логики. |
Автор: | Илья Ермаков [ Четверг, 02 Февраль, 2012 14:17 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Ильченко Эдуард писал(а): Илья Ермаков писал(а): ... это ещё делает невозможным автоматическое рисование цикла редакторами (будущими). Поясните, пожалуйста, что Вы имеете ввиду. Невозможно графически нарисовать цикл? Если мы говорим о полноценном редакторе, в котором Вы не выбираете размещение для элементов, а только строите структуру (перещёлкиваете связи как хотите, а редактор сам думает - разрешить или нет, и как перераскидать элементы на листе), то Вашу схему можно упорядочить разными вариантами. Взять в качестве начального для цикла не тот узел, который у Вас, а другой. |
Автор: | adva [ Пятница, 03 Февраль, 2012 08:29 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Илья Ермаков писал(а): Если мы говорим о полноценном редакторе... Скажите, пожалуйста, по прежнему планируете сделать редактор общедоступным? И если да, то когда ориентировочно его можно ожидать? |
Автор: | Илья Ермаков [ Пятница, 03 Февраль, 2012 10:53 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
У нас есть прототип, который может быть показан и обсуждён с любым заинтересованным лицом, желающим профинансировать завершение разработки. Скажем так С прототипом знаком, в частности, Владимир Даниелович. |
Автор: | adva [ Пятница, 03 Февраль, 2012 11:11 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
В итоге это будет общедоступно или как? И может быть в виде видео или описания покажете что уже есть? На чем сделано, на каком языке код генерится и т.п. Может быть найдется несколько желающих, которые соберутся вместе, и профинансируют завершение (одному частному лицу, а не организации это будет не под силу, я думаю) |
Автор: | Ильченко Эдуард [ Пятница, 03 Февраль, 2012 14:37 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Илья Ермаков писал(а): У нас есть прототип, который может быть показан и обсуждён с любым заинтересованным лицом, желающим профинансировать завершение разработки. adva писал(а): В итоге это будет общедоступно или как? Имхо, кто финансирует, тот общедоступность и танцует : ) |
Автор: | Владимир Паронджанов [ Суббота, 04 Февраль, 2012 10:31 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Ильченко Эдуард писал(а): Вопрос знатокам. Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B) Если нет, то каким правилом пользоваться? Вложение: C1.png Уважаемый Эдуард Ильченко! Благодарю Вас за то, что Вы открыли эту тему. Это научно-исследовательская тема. Исследовать ее и полезно, и очень важно. Необходимо различать два момента. 1). Необходимость проведения научно-исследовательских работ. Как я уже сказал, это очень важно. Будет очень хорошо, если Вы и другие специалисты будут делать на эту тему публикации. Готовить и защищать диссертации по языку Дракон. Для диссертантов это золотое дно, так как публикации практически отсутствуют. 2). Необходимость поддержания ТЕКУЩЕГО уровня языка Дракон. А также обоснования и защиты этого ТЕКУЩЕГО уровня. Эти два момента существенно отличаются по своим целям и задачам (хотя между ними, разумеется, есть связь). По второму пункту я собираюсь высказаться через несколько дней. Вместе с тем хочу уже сейчас пояснить свою позицию. В языке Дракон цикл (любой цикл) имеет только один вход. Вот цитата из моей книги, которая сейчас выходит: Цитата: §8. ПЕРЕСАДКА ЛИАНЫ Тезис 28. Пересадка лианы – преобразование дракон-схемы, выполняемое за четыре шага. Шаг 1. Производится отрыв конца лианы от точки присоединения (рис. 236, 237). Шаг 2. Конец лианы с помощью вертикальных и горизонтальных линий присоединяется к любой валентной точке, куда лиана может дотянуться без пересечения с другими линиями (рис. 236, 237). При этом запрещается: • формировать второй вход в ветку (ошибка «сиамские близнецы» – см. рис. 247); • образовывать новый цикл; • создавать второй вход в цикл. Однако разрешается строить новый путь из середины обычного цикла к единственному входу в этот цикл, создавая визуальный эквивалент оператора continue языка Си (см. рис. 167, пример 7, а также рис. 83). Шаг 3. Производится эквивалентное преобразование топологии дра- кон-схемы, чтобы • лиане не пришлось загибаться наверх (рис. 248); • соблюдались правила построения шампур-блока (рис. 249). Шаг 4. Устраняются неоправданные изломы линий (рис. 250). Примерно такие же формулировки были во всех предыдущих книгах. Иначе говоря, описание языка Дракон является стабильным и неизменным (мелкие отличия не в счет). |
Автор: | Ильченко Эдуард [ Воскресенье, 05 Февраль, 2012 14:01 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Alexey_Donskoy писал(а): Дополнительный вход не разрешён. Но если очень хочется, то можно абсолютно всё - через силуэт Владимир Паронджанов писал(а): В языке Дракон цикл (любой цикл) имеет только один вход. Т.е. доп вход как на рисунке ниже, тоже запрещён? Вложение:
|
Автор: | Alexey_Donskoy [ Воскресенье, 05 Февраль, 2012 19:58 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Ильченко Эдуард писал(а): Т.е. доп вход как на рисунке ниже, тоже запрещён? С чего бы? Разрешён.Это такая принципиальная особенность Дракона - он жёсткий в пределах ветки; в то время как силуэт - узаконенный способ нарушения жёстких правил. Оправдывается это тем, что все спорные с этой точки зрения моменты локализованы в одном месте, а не размазаны по всему алгоритму, как при обычном подходе. Что, якобы, уменьшает вероятность ошибок, даже при использовании неоднозначно оцениваемых алгоритмических конструкций. Собственно, именно этот узаконенный разрыв с возможностью таких построений мне и не нравится в Драконе |
Автор: | Ильченко Эдуард [ Воскресенье, 05 Февраль, 2012 21:07 ] |
Заголовок сообщения: | Re: Как правильно построить цикл? |
Alexey_Donskoy писал(а): С чего бы? Разрешён. Да вот Владимир Паронджанов вроде говорит, что в любой цикл разрешён только один вход ... |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |