DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 12:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 67 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Как правильно построить цикл?
СообщениеДобавлено: Среда, 01 Февраль, 2012 11:20 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Вопрос знатокам.

Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B)
Если нет, то каким правилом пользоваться?
Вложение:
C1.png
C1.png [ 8.01 КБ | Просмотров: 21033 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Среда, 01 Февраль, 2012 12:37 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Ильченко Эдуард писал(а):
Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B)
Если нет, то каким правилом пользоваться?
Дополнительный вход не разрешён.
Но если очень хочется, то можно абсолютно всё - через силуэт :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Среда, 01 Февраль, 2012 13:39 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Ильченко Эдуард писал(а):
Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B)
Если нет, то каким правилом пользоваться?
Дополнительный вход не разрешён.
...

Осталось сформулировать правила, в какие точки можно пересаживать лиану, а в какие нет. И критерии для автоматического поиска таких точек : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Среда, 01 Февраль, 2012 14:45 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Ильченко Эдуард писал(а):
сформулировать правила, в какие точки можно пересаживать лиану, а в какие нет. И критерии для автоматического поиска таких точек : )
Легко.

Все участки графа от точек слияния до развилки с обратным ходом к точке слияния образуют тела циклов (маркируются, отображаются в соответствующих списках).
Текущая развилка (от которой начинается пересадка), может находиться в нескольких телах вложенных циклов. Выбираем из них глубочайший уровень (пусть будет N).
Тогда получается правило: точка пересадки должна находится в пределах участка графа N.

Если политика допускает досрочный выход из цикла, то к разрешённой области добавляется тело цикла N-1, лежащее на прямом пути (то есть ниже) выхода из цикла N.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Среда, 01 Февраль, 2012 15:04 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Ильченко Эдуард писал(а):
Вопрос знатокам.

Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B)
Если нет, то каким правилом пользоваться?
Вложение:
C1.png

Интересный вопрос. Есть следующие соображения:
1) Дополнительные входы в цикл ДЛЯ запрещены. Но здесь ведь не цикл ДЛЯ!
2) Цикла со стрелкой, в котором имеется вот такой боковой вход, нет в списке макроикон. Ну и что? Правила ДРАКОНа ведь не нарушаются.
3) То, что происходит на данной диаграмме, совершенно понятно. С другой стороны, паттерн "цикл со стрелкой" нарушен.
Владимир Даниелович, как быть в данной ситуации? Запретить или разрешить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Среда, 01 Февраль, 2012 15:09 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Ильченко Эдуард писал(а):
сформулировать правила, в какие точки можно пересаживать лиану, а в какие нет. И критерии для автоматического поиска таких точек : )
Легко.

Спасибо. Буду думать : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Среда, 01 Февраль, 2012 17:53 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Степан Митькин писал(а):
Ильченко Эдуард писал(а):
Вопрос знатокам.

Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B)
Если нет, то каким правилом пользоваться?
Вложение:
C1.png

Интересный вопрос. Есть следующие соображения:
1) Дополнительные входы в цикл ДЛЯ запрещены. Но здесь ведь не цикл ДЛЯ!
2) Цикла со стрелкой, в котором имеется вот такой боковой вход, нет в списке макроикон. Ну и что? Правила ДРАКОНа ведь не нарушаются.
3) То, что происходит на данной диаграмме, совершенно понятно. С другой стороны, паттерн "цикл со стрелкой" нарушен.
Владимир Даниелович, как быть в данной ситуации? Запретить или разрешить?
Такие мысли:
1-2) Более того, его вроде как нельзя вывести вводом атома. Только пересадкой лианы. А в Тезисе 28 - "запрещается образовывать второй вход в цикл".
Шампур-метод же даёт "операционно-аксиоматическое" определение, "что есть правильная схема". Алексей уже объяснил и "денотационно" то же самое для данного случая... :)
3) Понятно-то понятно... а вот как-то только через вложения атомов структуру, в которой "происходит то же самое", вывести не получается?..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Четверг, 02 Февраль, 2012 00:12 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Степан Митькин писал(а):
1) Дополнительные входы в цикл ДЛЯ запрещены. Но здесь ведь не цикл ДЛЯ!
2) Цикла со стрелкой, в котором имеется вот такой боковой вход, нет в списке макроикон. Ну и что? Правила ДРАКОНа ведь не нарушаются.

"Терзают меня смутные сомнения" : )
Если к goto имеются серьёзные претензии, а в ДРАКОНе goto отсутствует как класс : ),
то может и показанный на рисунке случай вполне себе нормальный вариант, не влекущий за собой никаких подводных камней?

Тем более что всё равно
Alexey_Donskoy писал(а):
... можно абсолютно всё - через силуэт :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Четверг, 02 Февраль, 2012 07:34 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Если рассматривать ДРАКОН-топологию как сводимый (аранжируемый, устремлённый) граф, то нельзя.

Если говорить проще, то в правильной (сводимой) топологии, рассматривая любые две вершины, через которые пролегает некоторый путь в графе, мы можем сказать, какая из них "доминирует" над какой.

Возьмём Вашу схему. Пронумерую знаки схемы сверху вниз, от 1 до 6. Смотрите, например, на 3 и 4 узел графа. Для некоторых путей в графе сначала встретится 3, а потом 4, а для некоторых - сначала 4, а потом 3. Т.е. нарушено отношение частичного порядка по доминированию, присущее сводимым графам.

Всё это, как бы, "заумь", а к чему это ведёт на практике? Кроме того, что это признак непродуманной структуры, это ещё делает невозможным автоматическое рисование цикла редакторами (будущими). Представьте себя на месте редактора: как упорядочить схему, если нарушено однозначное отношение порядка на путях в ней?

Если такое действительно вылезает, то это может быть автоматная логика, в которой вообще нет одного цикла. И тогда используется силуэт, с явным выделением веток под состояния.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Четверг, 02 Февраль, 2012 09:15 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Илья Ермаков писал(а):
... это ещё делает невозможным автоматическое рисование цикла редакторами (будущими).

Поясните, пожалуйста, что Вы имеете ввиду.

Невозможно графически нарисовать цикл?
Или перевести граф-схему в текст, например, Python?
Или из текста получить графику?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Четверг, 02 Февраль, 2012 11:10 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Ильченко Эдуард писал(а):
Разрешено ли построение цикла как на рисунке ...

C минусами как бы всё понятно : )
А вот могут ли в данном построении быть плюсы?
Не для редактора, а для маршрутной логики.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Четверг, 02 Февраль, 2012 14:17 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Ильченко Эдуард писал(а):
Илья Ермаков писал(а):
... это ещё делает невозможным автоматическое рисование цикла редакторами (будущими).

Поясните, пожалуйста, что Вы имеете ввиду.
Невозможно графически нарисовать цикл?


Если мы говорим о полноценном редакторе, в котором Вы не выбираете размещение для элементов, а только строите структуру (перещёлкиваете связи как хотите, а редактор сам думает - разрешить или нет, и как перераскидать элементы на листе), то Вашу схему можно упорядочить разными вариантами. Взять в качестве начального для цикла не тот узел, который у Вас, а другой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Пятница, 03 Февраль, 2012 08:29 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
Илья Ермаков писал(а):
Если мы говорим о полноценном редакторе...

Скажите, пожалуйста, по прежнему планируете сделать редактор общедоступным? И если да, то когда ориентировочно его можно ожидать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Пятница, 03 Февраль, 2012 10:53 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
У нас есть прототип, который может быть показан и обсуждён с любым заинтересованным лицом, желающим профинансировать завершение разработки. Скажем так :)

С прототипом знаком, в частности, Владимир Даниелович.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Пятница, 03 Февраль, 2012 11:11 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
В итоге это будет общедоступно или как? И может быть в виде видео или описания покажете что уже есть? На чем сделано, на каком языке код генерится и т.п.
Может быть найдется несколько желающих, которые соберутся вместе, и профинансируют завершение (одному частному лицу, а не организации это будет не под силу, я думаю)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Пятница, 03 Февраль, 2012 14:37 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Илья Ермаков писал(а):
У нас есть прототип, который может быть показан и обсуждён с любым заинтересованным лицом, желающим профинансировать завершение разработки.

adva писал(а):
В итоге это будет общедоступно или как?

Имхо, кто финансирует, тот общедоступность и танцует : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Суббота, 04 Февраль, 2012 10:31 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Ильченко Эдуард писал(а):
Вопрос знатокам.

Разрешено ли построение цикла как на рисунке внизу? (доп. вход в цикл через точки А, B)
Если нет, то каким правилом пользоваться?
Вложение:
C1.png


Уважаемый Эдуард Ильченко!

Благодарю Вас за то, что Вы открыли эту тему.
Это научно-исследовательская тема. Исследовать ее и полезно, и очень важно.

Необходимо различать два момента.

1). Необходимость проведения научно-исследовательских работ.
Как я уже сказал, это очень важно. Будет очень хорошо,
если Вы и другие специалисты будут делать на эту тему публикации. Готовить и защищать диссертации по языку Дракон. Для диссертантов это золотое дно, так как публикации практически отсутствуют.

2). Необходимость поддержания ТЕКУЩЕГО уровня языка Дракон. А также обоснования и защиты этого ТЕКУЩЕГО уровня.

Эти два момента существенно отличаются по своим целям и задачам (хотя между ними, разумеется, есть связь).

По второму пункту я собираюсь высказаться через несколько дней.

Вместе с тем хочу уже сейчас пояснить свою позицию.
В языке Дракон цикл (любой цикл) имеет только один вход.

Вот цитата из моей книги, которая сейчас выходит:

Цитата:
§8. ПЕРЕСАДКА ЛИАНЫ

Тезис 28. Пересадка лианы – преобразование дракон-схемы, выполняемое за четыре шага.

Шаг 1. Производится отрыв конца лианы от точки присоединения
(рис. 236, 237).

Шаг 2. Конец лианы с помощью вертикальных и горизонтальных линий присоединяется к любой валентной точке, куда лиана может
дотянуться без пересечения с другими линиями (рис. 236, 237).

При этом запрещается:

• формировать второй вход в ветку (ошибка «сиамские близнецы» – см. рис. 247);

• образовывать новый цикл;

• создавать второй вход в цикл.

Однако разрешается строить новый путь из середины обычного цикла
к единственному входу в этот цикл, создавая визуальный эквивалент оператора continue языка Си (см. рис. 167, пример 7, а также рис. 83).

Шаг 3. Производится эквивалентное преобразование топологии дра-
кон-схемы, чтобы

• лиане не пришлось загибаться наверх (рис. 248);

• соблюдались правила построения шампур-блока (рис. 249).

Шаг 4. Устраняются неоправданные изломы линий (рис. 250).


Примерно такие же формулировки были во всех предыдущих книгах.
Иначе говоря, описание языка Дракон является стабильным и неизменным
(мелкие отличия не в счет).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Воскресенье, 05 Февраль, 2012 14:01 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Дополнительный вход не разрешён.
Но если очень хочется, то можно абсолютно всё - через силуэт :wink:

Владимир Паронджанов писал(а):
В языке Дракон цикл (любой цикл) имеет только один вход.

Т.е. доп вход как на рисунке ниже, тоже запрещён?
Вложение:
С2.png
С2.png [ 12.32 КБ | Просмотров: 20777 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Воскресенье, 05 Февраль, 2012 19:58 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Ильченко Эдуард писал(а):
Т.е. доп вход как на рисунке ниже, тоже запрещён?
С чего бы? Разрешён.
Это такая принципиальная особенность Дракона - он жёсткий в пределах ветки; в то время как силуэт - узаконенный способ нарушения жёстких правил.
Оправдывается это тем, что все спорные с этой точки зрения моменты локализованы в одном месте, а не размазаны по всему алгоритму, как при обычном подходе. Что, якобы, уменьшает вероятность ошибок, даже при использовании неоднозначно оцениваемых алгоритмических конструкций.

Собственно, именно этот узаконенный разрыв с возможностью таких построений мне и не нравится в Драконе :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно построить цикл?
СообщениеДобавлено: Воскресенье, 05 Февраль, 2012 21:07 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
С чего бы? Разрешён.

Да вот Владимир Паронджанов вроде говорит, что в любой цикл разрешён только один вход ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 67 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB