DRAKON.SU

Текущее время: Пятница, 29 Март, 2024 10:18

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 10 Июнь, 2010 19:44 

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


Раньше я нарушал это правило
Пример 1. См.. Как улушить работу ума стр.129, рис. 41
Пример 2. См.. Как улушить работу ума стр.179, рис. 90 (продолжение)
Пример 3. См. Занимательная информатика Росмэн 2000. Рис.74 Стр.76.
Пример 4. http://oberoncore.ru/wiki/drakon/%D0%B2 ... 0%B8%D1%81
В конце этого текста см. рис.41

Поразмыслив, я пришел к выводу, что такой прием следует запретить,
так как он является ничем не оправданным усложнением схемы.

Правильное изображение данного случая показано ниже
Вложение:
Комментарий к файлу: Надо рисовать две стрелки
и не объединять их в одну

Рис._226.png
Рис._226.png [ 81.76 КБ | Просмотров: 12133 ]
:

В книге "Дружелюбные алгоритмы..." я исправил этот недостаток. См. стр. 137, рис. 71


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Июнь, 2010 09:43 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
А по-моему, как раз разделение усложняет схему.

1) Появились лишние полосы, по которым надо дважды пройти глазами, чтобы убедиться, что идут они в одну точку.

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

3) Мы привыкли к ВЕРТИКАЛЬНОМУ ОБЪЕДИНЕНИЮ, поэтому ждём его и от такой конструкции. А оказывается, всего лишь если лианы направлены ВВЕРХ, а не вниз, то объединение запрещается. Это скользковатое исключение запомнится не сразу.

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

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

НО !!!

В большой схеме, если не видно верхней стрелки, можно случайно пойти взглядом вниз, чтобы упереться в нижний вопрос и вернуться наверх. Чтобы этого не происходило, нужно всего лишь снабдить стрелками каждый вход. Например, вот так:
Вложение:
лиана.png
лиана.png [ 2.53 КБ | Просмотров: 12104 ]



Или так:


Вложения:
лиана1.png
лиана1.png [ 2.58 КБ | Просмотров: 12101 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Июнь, 2010 10:33 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Представьте, что перед внутренним циклом появилось какое-то действие. Объединение уже невозможно. Зачем городить огород для частного случая?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Июнь, 2010 10:49 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
С.Тарасенко писал(а):
..нужно всего лишь снабдить стрелками каждый вход..

Существуют "законные" средства устранения проблемы:
Вложение:
loop.png
loop.png [ 10.38 КБ | Просмотров: 12094 ]


Впрочем, где-то на форуме было предложено(вне правил Дракона) достаточно непротиворечивое решение - рисовать петлю цикла другим типом линии. Например, слегка утолщённой штриховой линией. По крайней мере, такой подход явно указывает, что идём "против шерсти":
Вложение:
loop2.png
loop2.png [ 8.46 КБ | Просмотров: 12091 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Июнь, 2010 22:19 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
С. Тарасенко писал(а):
А по-моему, как раз разделение усложняет схему.

1) Появились лишние полосы, по которым надо дважды пройти глазами, чтобы убедиться, что идут они в одну точку.

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



Объединения - неформальные операции, потому по-прежнему считаю, что Владимир Даниелович и Илья правы - и касается это не только циклов. Уже предлагал компромиссное решение в этом сообщении - автоматически петли циклов рисуются разделёнными, а объединение реализуется пересадками лиан.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Июнь, 2010 10:35 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Илья Ермаков писал(а):
Представьте, что перед внутренним циклом появилось какое-то действие. Объединение уже невозможно. Зачем городить огород для частного случая?

Так и дело-то всё в том, что если между циклами действие, то включается совершенно другое восприятие! Наподобие GOTO или LOOP (в конце цикла).
Если же действия нет, то каждый новый вход в петлю цикла рассматривается как CONTINUE, которое может повторяться много раз за цикл и не несёт в себе окончания цикла.

По-моему, это разные вещи, и зрительно их нужно разделить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Июнь, 2010 10:52 
Модератор
Аватара пользователя

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

Я бы вообще запретил вложенные циклы. Выносить в отдельный алгоритм и ставить "вставку".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Июнь, 2010 12:13 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Илья Ермаков писал(а):
..Выносить в отдельный алгоритм и ставить "вставку".
Это возможно только для тривиальных вложений.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Июнь, 2010 14:16 
Модератор
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Июнь, 2010 15:28 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Так можно вообще в капусту всё покрошить.. иерархически.. до линейной текстовой модели. В драконе-то кое-что и на плоскости оставить можно. Тогда и веточные циклы - в самый раз.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Июнь, 2010 19:22 
Модератор
Аватара пользователя

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

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


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

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Точно. Это касается конструкций, в которых вложенный цикл не является "шампур-блоком".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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