DRAKON.SU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Среда, 09 Ноябрь, 2011 15:23 

Зарегистрирован: Вторник, 20 Ноябрь, 2007 10:45
Сообщения: 31
Здравствуйте,

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


Вложения:
Комментарий к файлу: Пример
For Loop Improvement Proposal.png
For Loop Improvement Proposal.png [ 12.42 КБ | Просмотров: 17218 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2011 01:19 

Зарегистрирован: Понедельник, 09 Август, 2010 22:28
Сообщения: 128
Мне понравилась идея. Гораздо лучше воспринимается.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2011 01:47 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Да, в данном случае, выглядит лучше.
Но если слева будут присоединены иконы, то петля отодвинется и восприятие ухудшится. Причём чем больше выступ влево, тем хуже.
К тому же к иконам цикла слева нельзя будет добавить комментарий.
Вложение:
For1.png
For1.png [ 11.74 КБ | Просмотров: 17190 ]


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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2011 07:02 
Аватара пользователя

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


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

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


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

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

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

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


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

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Об инженерной записи итераторов
СообщениеДобавлено: Четверг, 10 Ноябрь, 2011 09:23 

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


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


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


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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2011 19:30 

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

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

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


Последний раз редактировалось ==== Пятница, 11 Ноябрь, 2011 01:43, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2011 20:01 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Ноябрь, 2011 03:41 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
При использовании цикла ДЛЯ в нескольких ветках, необходимо образование так же веточного цикла, что не является является необходимым для алгоритма. Использование лишней для алгоритма логической констукции, создает помеху в восприятии и значительно снижает наглядность дракон-схемы.

Эта тема обсуждалась на форуме ранее, начиная от 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 

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

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

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 

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Ноябрь, 2011 22:18 

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

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

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

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

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

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


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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Ноябрь, 2011 10:59 

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


Уважаемый MaximGB!

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

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

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

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

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

___________________________________________

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


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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 13 Ноябрь, 2011 11:43 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Геннадий Тышов писал(а):
Цитата:
Цикл ДЛЯ может быть длинным. Он может не поместиться в одной ветке (и даже в двух ветках).
"Цикл ДЛЯ в 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 

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


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

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


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

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


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

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


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

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