DRAKON.SU
https://forum.drakon.su/

Предложение для улучшения удобства восприятия границ For
https://forum.drakon.su/viewtopic.php?f=172&t=6174
Страница 1 из 2

Автор:  MaximGB [ Среда, 09 Ноябрь, 2011 15:23 ]
Заголовок сообщения:  Предложение для улучшения удобства восприятия границ For

Здравствуйте,

По работе, для общения с зарубежными коллегами я часто использую Дракон-диаграмы, так уж вышло что цикл For я в них практически не применял, а тут вот увидел ситуацию когда он как раз к месту, нарисовал и понял что цикла мои коллеги там не увидят, так как нет явного замыкания. Тогда я иконки конца и начала цикла For замкнул стрелкой с левой стороны, всё равно у нас диаграммы и "шампур" и ветки "силуета" растут вправо и вниз, так что слева место всегда есть. В общем замкнул и для себя понял что так воспринимать цикл гораздо удобнее, поэтому выношу предложение на обсуждение ;). Пример на картинке.

Вложения:
Комментарий к файлу: Пример
For Loop Improvement Proposal.png
For Loop Improvement Proposal.png [ 12.42 КБ | Просмотров: 20790 ]

Автор:  usr345 [ Четверг, 10 Ноябрь, 2011 01:19 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Мне понравилась идея. Гораздо лучше воспринимается.

Автор:  Ильченко Эдуард [ Четверг, 10 Ноябрь, 2011 01:47 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Да, в данном случае, выглядит лучше.
Но если слева будут присоединены иконы, то петля отодвинется и восприятие ухудшится. Причём чем больше выступ влево, тем хуже.
К тому же к иконам цикла слева нельзя будет добавить комментарий.
Вложение:
For1.png
For1.png [ 11.74 КБ | Просмотров: 20762 ]


А что делать вот с такой конструкцией?
Вложение:
For2.png
For2.png [ 10.92 КБ | Просмотров: 20762 ]


По сообщениям Владимира Паронджанова она часто применяется.

Автор:  Alexey_Donskoy [ Четверг, 10 Ноябрь, 2011 07:02 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Ильченко Эдуард писал(а):
А что делать вот с такой конструкцией? По сообщениям Владимира Паронджанова она часто применяется.
Правда? Мне не попадались, а то б давно возмутился таким нарушением! Потому что разрывы внутри цикла, и гарантии последовательного прохождения веток нет. Гораздо хуже, чем goto!
А уж про восприятие такого цикла и говорить не стоит...

Автор:  Владислав Жаринов [ Четверг, 10 Ноябрь, 2011 09:09 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Да всплывало это уже не раз... хотя бы здесь... или здесь... Хотя сам вводил "компромиссное" обозначение для цикла ДЛЯ (одноветочного) в этом примере - но считаю, что правильно выписывать итератор явно в обычном цикле (как Дмитрий_ВБ уточнял здесь, различного типа). Что и сделал здесь.

Автор:  Ильченко Эдуард [ Четверг, 10 Ноябрь, 2011 09:10 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Alexey_Donskoy писал(а):
Ильченко Эдуард писал(а):
А что делать вот с такой конструкцией? По сообщениям Владимира Паронджанова она часто применяется.
Правда? Мне не попадались, ...

Мне тоже не попадались : ), но

Владимир Паронджанов писал(а):
Драконограф писал(а):
Далее, Вы изложили решение - но не аргументацию, почему
считаете его [цикл for] нужным. Какова цель? Если сохранить совместимость
с ГОСТ на блок-схемы - то ведь шампур-метод идёт дальше ГОСТа...


Уважаемый Владислав Жаринов (Драконограф)!

Я опираюсь на следующие соображения.

:arrow: 1. Работники нашего Пилюгинского центра (непрограммисты, то есть
инженеры и комплексники) используют цикл ДЛЯ, в том числе занимающий
несколько веток.

Я не слышал от них никаких жалоб или замечаний по этому поводу.
Они все прекрасно понимают. Это для меня РЕШАЮЩИЙ аргумент.

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

Автор:  Владислав Жаринов [ Четверг, 10 Ноябрь, 2011 09:23 ]
Заголовок сообщения:  Об инженерной записи итераторов

Ильченко Эдуард писал(а):
Да, в данном случае, выглядит лучше.
Но если слева будут присоединены иконы, то петля отодвинется и восприятие ухудшится. Причём чем больше выступ влево, тем хуже.
К тому же к иконам цикла слева нельзя будет добавить комментарий.
Вложение:
For1.png


А что делать вот с такой конструкцией?
Вложение:
For2.png


По сообщениям Владимира Паронджанова она часто применяется.
А в дейкстрал (или ЦД внутри ветки) преобразовать у сочинителя никак не получится?.. ;) Даже если порассуждать, как работает?..

Автор:  Владимир Паронджанов [ Четверг, 10 Ноябрь, 2011 10:11 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Хочу пояснить.

1. Эдуард, в описанном случае "Начало цикла ДЛЯ" должно размещаться сразу после иконы "имя ветки".
А не в середине, как Вы нарисовали.

2. Зачем нужна конструкция "цикл ДЛЯ в нескольких ветках".
Предположим, что цикл длинный и не помещается в одной ветке.
Что делать?

        а) ввести процедуру (котрая позволит сделать цикл ДЛЯ короче и разместить его в одной ветке).
        б) использовать "цикл ДЛЯ в нескольких ветках".

3. Каждый выбирает по своему вкусу. Никто никому не навязывает "нелюбимые" конструкции.

Автор:  ==== [ Четверг, 10 Ноябрь, 2011 19:30 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Владимир Паронджанов писал(а):
Хочу пояснить.
2. Зачем нужна конструкция "цикл ДЛЯ в нескольких ветках".
Предположим, что цикл длинный и не помещается в одной ветке.
Что делать?
.....
б) использовать "цикл ДЛЯ в нескольких ветках".

3. Каждый выбирает по своему вкусу. Никто никому не навязывает "нелюбимые" конструкции.

Есть серьезное ограничение - нельзя лиану присоединять к другой ветке, что может потребоваться в пределах цикла ДЛЯ, в частности на конец цикла.

Автор:  Владимир Паронджанов [ Четверг, 10 Ноябрь, 2011 20:01 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Уважаемый Геннадий Николаевич!

Вы совершенно правы.
В этом случае придется отказаться от многоветочного цикла ДЛЯ и использовать другие способы, например, пункт а)

Автор:  ==== [ Пятница, 11 Ноябрь, 2011 03:41 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

При использовании цикла ДЛЯ в нескольких ветках, необходимо образование так же веточного цикла, что не является является необходимым для алгоритма. Использование лишней для алгоритма логической констукции, создает помеху в восприятии и значительно снижает наглядность дракон-схемы.

Эта тема обсуждалась на форуме ранее, начиная от http://forum.oberoncore.ru/viewtopic.php?p=36390#p36390
Цитата:
В.Д., у меня вопрос.

При цикле FOR в нескольких ветках, куда передается управление из иконы "Конец FOR" после завершения последней итерации?

Ведь за ней находится икона "Адрес" с передачей управления на ветку с иконой "Начало FOR", т.е. цикл FOR находится внутри веточного цикла.
Нужен ли цикл FOR, ведь работает веточный цикл?
Или цикл FOR нужен только для наличия переменной цикла?
Выход из цикла возможен только по иконе "Вопрос" через заземленную лианы на внешнею ветку и невозможен при завершению всех итераций.


Свободное и произволное толкование правил языка Дракон снижают его ценность до уровня блок-схем по ГОСТу. На форуме уже высказывалось мнение: http://forum.oberoncore.ru/viewtopic.php?p=67116#p67116
Цитата:
Бизнес-процессы очень важная и интересная тема в том числе и для меня. Но разве не в том преимущество ДРАКОНа, которое Вы замечательно показали в Ваших книгах, что он позволяет имеющимися средствами формализовать любые процессы самых разных отраслей - от медицины до экономики? Конечно, у всего есть своя специфика. Но это же не повод изобретать для каждой отрасли новые иконы языка ДРАКОН... ДРАКОН-бюджетный процесс, ДРАКОН-бизнес процесс, ДРАКОН-медицина и т. п. Получится сборная солянка.
т.е. хотят иметь внятный, строгий и стабильный язык Дракон.

Автор:  Ильченко Эдуард [ Пятница, 11 Ноябрь, 2011 11:12 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Геннадий Тышов писал(а):
При использовании цикла ДЛЯ в нескольких ветках, необходимо образование так же веточного цикла, что не является является необходимым для алгоритма. Использование лишней для алгоритма логической констукции, создает помеху в восприятии и значительно снижает наглядность дракон-схемы.

Этот момент Владимир Паронджанов поправил в той же теме:

http://forum.oberoncore.ru/viewtopic.php?p=55684#p55684

Владимир Паронджанов писал(а):
Ильченко Эдуард писал(а):
Владимир Паронджанов писал(а):
Правило 6 следует отменить.

Вы вообще отказались от использования цикла FOR, разнося его на разные ветки силуэта, или допускаете использование в каком-то другом варианте?


Считаю нужным использовать цикл FOR. В том числе разнося его на разные ветки силуэта.

Во избежание недоразумений изложу свою позицию подробно.

Красным написано то, что следует удалить.

6. Правило. Если цикл ДЛЯ занимает две или более веток, то цикл ДЛЯ
должен быть обрамлен веточным циклом.

6.1. Икона "Начало цикла ДЛЯ" размещается сразу под иконой
"имя ветки", обозначающей начало веточного цикла.
6.2. Икона "Конец цикла ДЛЯ" размещается перед иконой "адрес"
обозначающей конец веточного цикла.
6.3. В иконе "имя ветки",обозначающей начало веточного цикла, в данном
случае написано ДИАЛОГ.НАЧАЛО,
6.4. В иконе "адрес",обозначающей конец веточного цикла, в данном
случае написано ДИАЛОГ.КОНЕЦ,

7. Пояснение. Цикл ДЛЯ может быть длинным. Он может не поместиться
в одну ветку (и даже в две ветки). В этом случае иконы "Начало цикла
ДЛЯ" и "Конец цикла ДЛЯ" могут оказаться в разных ветках
(см. пункты 6.1 и 6.2).


Красный текст заменяется на следующий:

6. Правило. Цикл ДЛЯ может быть длинным. Он может не поместиться
в одной ветке (и даже в двух ветках). В этом случае иконы "Начало цикла
ДЛЯ" и "Конец цикла ДЛЯ" могут оказаться в разных ветках.

:6.1. Рекомендация. Если цикл ДЛЯ размещается в двух или более ветках,
рекомендуется икону "Начало цикла ДЛЯ" размещать сразу под иконой "имя ветки".
(чтобы ее можно было легко отыскать взглядом).

Автор:  Владимир Паронджанов [ Пятница, 11 Ноябрь, 2011 11:33 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Уважаемый Эдуард!

Большое спасибо за трудоемкий поиск в "архиве".

Подтверждаю, что моя позиция заключается в следующем
Цитата:
1. Цикл ДЛЯ может быть длинным. Он может не поместиться
в одной ветке (и даже в двух ветках). В этом случае иконы "Начало цикла
ДЛЯ" и "Конец цикла ДЛЯ" могут оказаться в разных ветках силуэта.

2. Если цикл ДЛЯ размещается в двух или более ветках,
рекомендуется икону "Начало цикла ДЛЯ" размещать сразу под иконой "имя ветки".
(чтобы ее можно было легко отыскать взглядом).

Автор:  MaximGB [ Пятница, 11 Ноябрь, 2011 22:18 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Ильченко Эдуард писал(а):
Да, в данном случае, выглядит лучше.
Но если слева будут присоединены иконы, то петля отодвинется и восприятие ухудшится. Причём чем больше выступ влево, тем хуже.
К тому же к иконам цикла слева нельзя будет добавить комментарий.
Вложение:
For1.png

Ну я бы не сказал что наглядность тут сильно пострадала, даже с коментарием.

Ильченко Эдуард писал(а):
А что делать вот с такой конструкцией?
Вложение:
For2.png

По сообщениям Владимира Паронджанова она часто применяется.

Тут у меня своё мнение, я такие конструкции не применяю. Межветочный цикл "Для" мегя пугает ;), где гарантия что все маршртуты из ветки с иконкой "Начало цикла Для" ведут в ветку с иконкой "Конец цикла Для", по-моему это обширное поле для сложно-находимых ошибок. Тут по меньшей мере надо наклдывать ограничение, что все ветки силуета должны иметь одну и только одну иконку "Адрес", да и то нет гарантии что пройдя по адресам мы, в конце концов, упрёмся в "Конец цикла Для". Вот у меня, например, как не крути все схемы вида "силует" имеют для большинства веток более одной иконки "Адрес".

"Силует" с правильным межветочным циклом "Для", по-моему, не сильно будет выигрывать перед обычным "шампуром".

Автор:  Владислав Жаринов [ Суббота, 12 Ноябрь, 2011 09:48 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Согласен. :) Даже и компромисс с разнесением по веткам, но недопущением вставки чего-либо между НЦ ДЛЯ и именем начальной ветки тела и равно между КЦ ДЛЯ и адресом конечной всё-таки не просто тянет обратно к примитиву, но даже и потяжелее воспринимается.
Вообще циклу ДЛЯ место в языке (визуальном в частности) в двух случаях:

* в спецификациях для представления итераторов (если читателям привычно :));

* в гибридах с языками, имеющими итератор (если опять же привычно не представлять через обычный цикл ;)).

То и другое, как я понимаю, может не упрощать и "мозговую проверку"... и эффективность реализации алгоритма. Достаточно опять же взглянуть на упомянутый пример - число величин при переводе сократилось... а логика прояснилась. Также у Острейковского есть замечание (ессно, это не чисто его личный опыт ;)) на с. 88 о развёртывании циклов...

Автор:  Владимир Паронджанов [ Суббота, 12 Ноябрь, 2011 10:59 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

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


Уважаемый MaximGB!

Я приветствую Ваши эксперименты. И желаю Вам успеха.
Сообщайте время от времени, как у Вас дела - прижилась левая стрелка или нет.

По Вашему предложению у меня два замечания.

1. Нужна ли сплошная линия? Может, лучше пунктир?

2. Сомневаюсь, что Вам нужна стрелка. Мне кажется, что Вам нужна не стрелка (которая показывает обратную связь цикла), а нечто иное.
Что именно?
Мне кажется, нужна всего лишь подсказка, что начало цикла и конец цикла имеют связь.

Если я прав, то вполне достаточно сплошной (а лучше пунктирной) линии.
Стрелка избыточна. А всякая избыточность затемняет.

___________________________________________

Не следует воспринимать мое мнение как нечто категорическое.
Наоборот, я считаю. что эксперименты полезны и приветствую их.

Автор:  ==== [ Суббота, 12 Ноябрь, 2011 18:16 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Цитата:
Цикл ДЛЯ может быть длинным. Он может не поместиться в одной ветке (и даже в двух ветках).
"Цикл ДЛЯ в N ветках" - в Драконе вероятно это дурной стиль алгоритмизации, адекватнее использовать веточный цикл.

Автор:  Владимир Паронджанов [ Воскресенье, 13 Ноябрь, 2011 11:43 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

Геннадий Тышов писал(а):
Цитата:
Цикл ДЛЯ может быть длинным. Он может не поместиться в одной ветке (и даже в двух ветках).
"Цикл ДЛЯ в N ветках" - в Драконе вероятно это дурной стиль алгоритмизации, адекватнее использовать веточный цикл.


Уважаемый Геннадий Николаевич!

Спасибо за критическое замечание. Я бы ответил так.

Цикл ДЛЯ используется как цикл с параметором.
В Википедии говорится о цикле со счетчиком. Вот цитата из Википедии
Цитата:
Цикл со счётчиком

Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве процедурных языков программирования реализуется оператором for, в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик. Например, в языке Оберон-2 такой цикл имеет вид:
FOR v := b TO e BY s DO
... тело цикла
END

(здесь v — счётчик, b — начальное значение счётчика, e — граничное значение счётчика, s — шаг).


Вопрос. В какой иконе писать
Цитата:
v := b TO e BY s


Я считаю, это надо писать в иконе "Начало цикла ДЛЯ".

Если принять Вашу точку зрения, это надо писать в иконе "имя ветки".

Таким образом, по-вашему получается, что в иконе "имя ветки" надо писать ДВЕ ВЕЩИ:

1. название ветки;

2. имя счётчика v, начальное значение счётчика b , граничное значение счётчика e и шаг s.

Я считаю, что две записи в одной иконе - это слишком много. Это слишком громоздко.
Это может вызвать путаницу и спровоцировать ошибку.

Кроме того. икона "имя ветки" предназначена для записи названия ветки.
Она не предназначена для записи дополнительных вещей.

Не следует перегружать икону "имя ветки" другими вещами.
И тем самым размывать и делать нечетким ее основное назначение.

Попытка записать в икону "имя ветки" посторонее содержание нарушает
принцип:
Цитата:
Форма иконы должна ясно указывать на ее функциональное назначение


Возникает вопрос. В какой иконе следует писать имя счётчика v, начальное значение счётчика b , граничное значение счётчика e и шаг s?

На этот вопроос есть четкий ответ. В иконе "Начало цикла ДЛЯ"

Автор:  ==== [ Воскресенье, 13 Ноябрь, 2011 14:52 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

На форуме давно критикуют использование цикла FOR.
Info21, Заголовок сообщения: Долой цикл FOR (?), Среда, 04 Март, 2009 12:34 - http://forum.oberoncore.ru/viewtopic.php?p=25129#p25129
Владимир Даниелович, нет проблем, посмотрите.

Автор:  Владислав Жаринов [ Понедельник, 14 Ноябрь, 2011 09:14 ]
Заголовок сообщения:  Re: Предложение для улучшения удобства восприятия границ For

А можно и так, как здесь: http://drakonografika.narod.ru/images/G ... r-DR_2.png
Веточный цикл - такой же ДЛЯ, но записанный обычным образом. Условие находится там, где и положено - в развилке цикла... ;)

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/