DRAKON.SU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Суббота, 04 Август, 2012 08:28 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 04 Август, 2012 12:34 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Это да... не зря и Мейер, и Лавров напоминают, что инвариантов м.б. более одного... :) Впрочем, из той же формулировки моделирования/формализации по Леонтьеву-Грековой-Фридланду можно видеть то же самое - на каждой следующей стадии исполнитель всё более формализован, и для него надо писать всё более определённо... :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 04 Август, 2012 12:48 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Alexey_Donskoy писал(а):
...
Интереснее было бы добавить метаинформации (семантические сущности - инвариант, например).
Семантика с алгоритмикой, в общем случае, не обязаны совпадать.
...
Кстати, насчёт добавлять. Как Вам решения, обсуждающиеся здесь: viewtopic.php?p=73726#p73726 ?..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 16:46 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
В важном сообщении viewtopic.php?p=74653#p74653 usr345 писал(а):
То есть вот такого быть не должно:

Согласен. Это схема содержит ошибку.
Чтобы устранить ошибку, надо ввести
Цитата:
ПРАВИЛО

В силуэте можно использовать:

— один веточный цикл;

— несколько независимых веточных циклов. Веточный цикл является независимым, если он не имеет общих участков с другими веточными циклами;

— вложенный веточный цикл, то есть веточный цикл, внутри которого находится другой веточный цикл;

— несколько вложенных веточных циклов.

ВЛОЖЕННЫЙ ВЕТОЧНЫЙ ЦИКЛ

Веточный цикл называется вложенным, если:

— икона «имя ветки» веточного цикла 1 находится левее иконы «имя ветки» веточного цикла 2;

— все иконы «адрес» веточного цикла 1 находятся правее икон «адрес» веточного цикла 2.

При описанных условиях веточный цикл 2 является вложенным в веточный цикл 1.

Можно сказать по-другому. Веточный цикл 1 является внешним, а веточный цикл 2 — внутренним.
Прошу критиковать.


Последний раз редактировалось Владимир Паронджанов Среда, 12 Сентябрь, 2012 17:19, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 16:53 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 17:09 

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


Уважаемый Алексей Николаевич!

Я бы хотел Вам возразить не с точки зрения структрности, а с точки зрения проблемы пересечений.

Мой тезис такой: Силуэт НЕ обязан превращаться в примитив (без пересечений). Получится — хорошо, не получится, тоже хорошо. Это не суть важно.

А ЧТО ВАЖНО?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 17:19 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
Позвольте на 1 сек встрять. А зачем вообще нужно вводить понятие "веточный цикл" и особые иконки для него. По силуэту мы вправе переходить на любой адрес и всё, а получаются при этом циклы или нет, и пересекаются они или нет - какая разница. (IMHO)
PS.
Может быть такое мнение уже было озвучено, тогда просто присоединяюсь к нему.
Ведь если взять конечный автомат, то там же состояния чередуются как угодно.
Единственно, может быть, следует как то отметить ветки, на которые допустимы повторные входы.


Последний раз редактировалось albobin Среда, 12 Сентябрь, 2012 17:39, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 17:35 

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

По силуэту мы вправе переходить на любой адрес и всё, а получаются при этом циклы или нет - какая разница. (IMHO)


Уважаемый albobin!

Спасибо за вопрос.

Да, Вы совершенно правы.

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

Но! Обозначения эти нужны ДЛЯ ЧЕЛОВЕКА (а не для процессора) из эргономических соображений.
То есть для удобства зрительного восприятия.
У процессора нет зрительного восприятия, ему все равно.

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

Это хорошо видно вот на этом рисунке. Уберите границы веточного цикла — будет очень трудно ориентироваться в этой схеме.
download/file.php?id=3457&mode=view

viewtopic.php?p=74653#p74653


Последний раз редактировалось Владимир Паронджанов Среда, 12 Сентябрь, 2012 17:44, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 17:42 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
Получилось так, что дополнил своё сообщение позже Вашего ответа.
Повторюсь
Единственно, может быть, следует как то отметить ветки, на которые допустимы повторные входы.

Но вводить ограничения может быть всё-таки излишне. Остаются только просто пометки, но никаких понятий "веточный цикл" со всеми вытекающими...


Последний раз редактировалось albobin Среда, 12 Сентябрь, 2012 17:50, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 17:48 
Аватара пользователя

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

Цитата:
Примитив с любым числом пересечений можно преобразовать в эквивалентный ему силуэт (путем введения дополнительных переменных)
А вот это как раз совсем не важно.
Более того, даже очевидно. :wink:
И практического смысла в этой теореме тоже нет. Важнее анализ с точки зрения эргономики: помогает такое разрезание или, напротив, мешает.
Моё мнение - помогает в редких частных случаях.
В общем случае - скорее мешает, потому что провоцирует (а правил, озвученных выше, никто пока соблюдать не собирается, увы).

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

Гораздо правильнее было бы просто поддерживать нормальный фолдинг.
Но фолдинг - это динамика, а Владимир Даниелович до сих пор держится за твёрдую бумажную копию.

Мне кажется, что возникает противоречие между потребностями и представлениями о них.
Для коллегиального обсуждения ответственных (но не особо больших) алгоритмов хороша твёрдая копия.
Но для индивидуальной работы над большим и очень большим проектом - только динамическая компьютерная поддержка. Иначе - труба.

Цитата:
По силуэту мы вправе переходить на любой адрес и всё, а получаются при этом циклы или нет, и пересекаются они или нет - какая разница.
Вот в том-то и дело, что без специальных ограничительных правил - как угодно. И тут вылезут все прелести, от которых тщетно призывал избавиться Дейкстра...

Цитата:
Ведь если взять конечный автомат, то там же состояния чередуются как угодно.
Да, именно.
Но, согласитесь, конечный автомат - весьма частный случай. И, хотя для него "силуэт" без ограничений идеален, для всех прочих применений он плох.
Поэтому я бы предложил чётко разделить эти классы алгоритмов, в том числе по способу их визуального отображения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 17:53 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Конечно, состояния КА потенциально чередуются как угодно. И для автоматного графа также справедливо понятие цикла (контура)... :)
Т.к. мы рассматриваем силуэт как форму записи алгоритмического процесса, могущего реализовать, в частности, и КА, то, полагаю, правильно не исключать такую базовую алгоритмическую структуру, как цикл. "Примитив" и "силуэт" - это просто обозначения способов размещения одной и той же маршрутной структуры на плоскости...

Другое дело - что цикл есть цикл, а ВМЦ - также просто артефакт укладки в силуэт. Если так понимать allbobin - то согласен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 17:56 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 105
Откуда: Псков
Alexey_Donskoy писал(а):
Но, согласитесь, конечный автомат - весьма частный случай. И, хотя для него "силуэт" без ограничений идеален, для всех прочих применений он плох.
Поэтому я бы предложил чётко разделить эти классы алгоритмов, в том числе по способу их визуального отображения.


Чем плох силуэт, когда нет повторного входа ни в одну из веток? Никаких нарушений структурности.
А, если есть (повторный вход) - тогда это уже с полным основанием можно считать КА, и силуэт для него весьма неплох.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 18:01 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
В смысле - нет второго и более входа хотя бы в одну ветку (по разным маршрутам)?
Так это не все необходимые условия для соблюдения структурности. Другое условие - как раз что контуры не должны пересекаться. И В.Д. только что сформулировал условия этого для 2-х контуров (как частный случай этого - в предположении корректности в общем)...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 18:14 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
albobin писал(а):
... зачем вообще нужно вводить понятие "веточный цикл" и особые иконки для него. По силуэту мы вправе переходить на любой адрес и всё, а получаются при этом циклы или нет, и пересекаются они или нет - какая разница.


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

Если я не ошибся, то это серьезный дефект. В чем причина дефекта? Специалисты настаивают, что причиной является негарантоспособная конструкция — пересекающиеся циклы. Поскольку других мнений не было, я решил, что лучше ввести ограничения и запретить пересекающиеся циклы. Тем более, Алексей Николаевич увязал этот вопрос с вопросом о доверии к силуэту.
Мне хотелось снять столь серьезные обвинения. и я решил, что проще всего согласиться с мнением большинства.

albobin писал(а):
Ведь если взять конечный автомат, то там же состояния чередуются как угодно.


albobin писал(а):
Единственно, может быть, следует как то отметить ветки, на которые допустимы повторные входы.


albobin писал(а):
Но вводить ограничения может быть всё-таки излишне.


Уважаемый albobin!

Вы поставили очень серьезные и важные вопросы. Спасибо Вам за это.

Дать окончательные ответы на Ваши вопросы прямо сейчас, по-видимому, было бы поспешным решением.

Давайте послушаем, что по этому поводу думают специалисты.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 19:08 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Ну, ограничение структурности - это же для записи императивной части структурных программ... И рационально так и включать в исчисление...
Ведь мы же по-прежнему хотим применять его как нотацию и для неструктурных алгоритмов/потоков управления программ... или как?.. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 12 Сентябрь, 2012 19:12 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 396
Я не специалист, но в ряде случаев "силуэтный беспредел" - это изюминка ДРАКОНа, к примеру, когда нужен алгоритм для человека уровня "про рыбилку", и нет потребности на выхлопе иметь код "поструктурнее". В таких случаях выделять веточные циклы даже вредно (т.е. лишний раз "загрузить" читателя), особенно, подчёркивая их возможную вложенность. При необходимости можно как-то обозначить, что, возможно, по этому месту мы пройдёмся не один раз:

Вложение:
multi_adr.PNG
multi_adr.PNG [ 15.02 КБ | Просмотров: 13724 ]


3 и 4 иконы - вместо стрелочки с закрашенным треугольником, что означает именно "много проходов" (последние три - для "мульти-шампура", чтобы явно их группировать, перед ними - стрелка для "внешних" веток, это для "областей" или тому подобное).

Т.е. однозначного решения по силуэту нет. Есть другой вопрос, нужна ли некая "жёсткость" ДРАКОНу, если у него всё-равно нет алгебры над структурами уровня тех же Р-схем ?

P.S. Сообщение писал до того, как увидел пред. пост.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 13 Сентябрь, 2012 10:09 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Дополнительно к своему предыдущему сообщению albobin писал(а):
Достижимость выхода по идее должна проверять среда разработки, я имею структурно достижимую - должна быть цепочка переходов по силуэту от входа к выходу.

Но если есть хоть один "веточный цикл" - то гарантий уже дать нельзя , это уже вопрос корректности алгоритма, который должен гарантировать "выходимость" из "веточных циклов".

Но ограничения на наличие ВЦ всё же думаю не нужны.

Может быть нужны предупреждения среды разработки ?
Я получил этот текст в личном сообщении. И, с разрешения albobin, публикую его.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Апрель, 2018 20:39 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Владимир Паронджанов писал(а):
Уважаемый Эдуард!

Вы задали вопрос про цикл в примитиве здесь.
http://forum.oberoncore.ru/viewtopic.php?p=70268#p70268

Цитата:
Вопрос знатокам.

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


Мой ответ таков.

1. Язык ДРАКОН определен через графический синтаксис. Текстовый синтаксис не определен и может быть любым.

2. Как определен графический синтаксис? Он определен ДВОЯКО.
Во-первых, он определен через формальное описание (37 тезисов, изложенных в главе «Графический синтаксис языка ДРАКОН»). В последней книге это Глава 33, стр. 416—424.
Во-вторых, что очень важно, графический синтаксис определен через мое описание дракон-редактора. В последней книге это «Глава 32. Конструктор алгоритмов (помощник человека)», стр. 395—415.
http://drakon.su/_media/biblioteka/chas ... isanie.pdf

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

4. Отсюда вытекает, что правильно построенный дракон-редактор является инструментом не только для конструирования правильных дракон-схем, но и инструментом ДЛЯ ПРОВЕРКИ готовой дракон-схемы, относительно которой есть сомнения, что она правильная. Это именно Ваш случай, Эдуард.

5. Отсюда следует порядок действий. Глядя на Вашу схему, следует провести мысленный эксперимент (а лучше эксперимент с помощью карандаша и бумаги). Попробуйте преобразовать заготовку-примитив в Вашу схему, с помощью конечного числа шагов идеального дракон-редактора, соответствующего моему описанию.
Если получится, значит, Ваша схема правильная. И наоборот.

6. Описанная проверка (через действия редактора) не заменяет проверку на соответствие формальному описанию, а дополняет ее. Хотя по сути эти проверки тождественны. Преимущество проверки через действия редактора состоит в том, что она более наглядна. В том смысле, что «метод через построение» позволяет пощупать построение руками (на каждом шаге построения).

ВЫВОДЫ

В1. Графический синтаксис языка ДРАКОН определен двумя разными методами: декларативным и процедурным, каждый из которых является математически строгим.

В2. Декларативный метод представляет собой формальное описание графического синтаксиса с помощью 37 тезисов.

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

В4. Все сказанное выше про примитив относится и к силуэту.

==============================================

Повторю главную мысль. Графический синтаксис языка ДРАКОН описан не одним, а двумя разными способами. Это улучшает надежность описания и упрощает возможность его проверки.
http://drakon.su/_media/biblioteka/chas ... isanie.pdf

В частности, отсюда вытекают два правила построения "цикла со стрелкой".

1. Цикл со стрелкой строится с помощью соответствующей макроиконы.

2. Запрещается строить цикл со стрелкой с помощью макроиконы Развилка.

Насколько я знаю, существующие ДРАКОН-конструкторы не поддерживают эти правила.


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

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


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

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


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

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