DRAKON.SU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Вложенные циклы в языке Дракон
СообщениеДобавлено: Четверг, 24 Июнь, 2010 12:01 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
ОТВЕТ НА КРИТИКУ

Стас Тарасенко пишет:
Цитата:
Вообще мне не нравится система вложенных циклов в Драконе.
Возьмём самый элементарный вложенный цикл:

viewtopic.php?p=48849#p48849

Стас! Ты нарисовал "не самый элементарный" цикл.
Ты нарисовал ВЕТОЧНЫЙ цикл.
А веточный цикл нельзя считать самым элементарным.

Самыми элементарными являются циклы ДО и ПОКА.
К ним добавляется ВЕТОЧНЫЙ цикл.

Ниже я привожу примеры ВЛОЖЕННЫХ циклов.
Мои примеры расположены от простого к сложному
(примерно).

Пример 1
Детский пример

Вложение:
Комментарий к файлу: Цикл ДО внутри цикла ДО
Рис. 85, 86 Детский пример.png
Рис. 85, 86 Детский пример.png [ 70.1 КБ | Просмотров: 8783 ]


Пример 2
Последовательное построение вложенного цикла

Вложение:
Комментарий к файлу: Иллюстрация к построению
цикла в цикле

Рис. 88 Построение цикла в цикле.png
Рис. 88 Построение цикла в цикле.png [ 45.24 КБ | Просмотров: 8780 ]


Пример 3
Четыре варианта конструкции "цикл в цикле"
Вложение:
Комментарий к файлу: Четыре варианта разных
вложенных циклов

Рис_89_4_варианта.png
Рис_89_4_варианта.png [ 29.05 КБ | Просмотров: 8779 ]


Пример 4
Цепочка вложенных циклов ДО

Вложение:
Комментарий к файлу: Вложенные циклы:
Цикл ДО в цикле ДО в цикле ДО

Рис. 90 Цикл ДО в цикле ДО в цикле ДО.png
Рис. 90 Цикл ДО в цикле ДО в цикле ДО.png [ 26.8 КБ | Просмотров: 8779 ]


Пример 5
Цепочка вложенных циклов ПОКА
Вложение:
Комментарий к файлу: Вложенные циклы:
Цикл ПОКА в цикле ПОКА в цикле ПОКА

Рис. 91 Цикл ПОКА в цикле ПОКА в цикле ПОКА.png
Рис. 91 Цикл ПОКА в цикле ПОКА в цикле ПОКА.png [ 28.59 КБ | Просмотров: 8779 ]


Пример 6
Цикл ДО внутри веточного цикла
Вложение:
Комментарий к файлу: Вложенный цикл:
цикл ДО вложен
в веточный цикл

Рис. 96 Цикл ДО внутри веточного цикла.png
Рис. 96 Цикл ДО внутри веточного цикла.png [ 62.08 КБ | Просмотров: 8778 ]


Пример 7
Сложный вложенный цикл
Вложение:
Комментарий к файлу: Сложный вложенный цикл
с тремя досрочными выходами

Рис. 97 Сложный вложенный цикл.png
Рис. 97 Сложный вложенный цикл.png [ 71.3 КБ | Просмотров: 8758 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложенные циклы в языке Дракон
СообщениеДобавлено: Четверг, 24 Июнь, 2010 22:35 

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Владимир Данилович! Спасибо за добросовестный ответ. Я Вас понял.

В теме "Визуализация веточных циклов" (viewtopic.php?f=62&t=2674) Драконограф предлагает ввести индексы вложенных веточных циклов. Я же, на основе Вашей выкладки, теперь считаю, что ВЛОЖЕНИЕ ВЕТОЧНЫХ ЦИКЛОВ нужно запретить. Если нужно вложение в веточный цикл - рисовать обычный цикл, ДО или ПОКА. Тогда зрение улавливает отдельно веточный цикл и отдельно простой вложенный. А при вложении "ветки в ветке" глаза разбегаются по веткам, и границы цикла определить сложно, даже если снабдить их индексами вложенности.

Другое дело, что нужны индексы веток по порядку появления веток, и те же индексы веток - в фигурах "Адрес". Тогда легче представить, куда ведёт данный адрес. Но это к ВЦ уже не относится.

Ваши предожения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложенные циклы в языке Дракон
СообщениеДобавлено: Суббота, 26 Июнь, 2010 08:39 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Стас Тарасенко пишет:
Цитата:
Я ... считаю, что ВЛОЖЕНИЕ ВЕТОЧНЫХ ЦИКЛОВ нужно запретить.


Стас! Предлагаю твоему вниманию два примера с вложением веточных циклов.
Мне кажется, их запрещать не нужно.
Каково твое мнение?

Пример 1

Алгоритм "Поездка на автобусе" (В книге Как улучшить работу ума... см. стр. 88, рис. 6а)
Вложенные веточные циклы
Вложение:
Комментарий к файлу: Веточный цикл внутри веточного цикла
0Рис. 34.png
0Рис. 34.png [ 92.17 КБ | Просмотров: 8724 ]


Пример 2
Вложенные веточные циклы
Алгоритм "Покраска забора" (В книге Как улучшить работу ума... см. стр. 138, рис. 53)
Вложение:
Комментарий к файлу: Веточный цикл внутри веточного цикла
0Рис. 95.png
0Рис. 95.png [ 94.06 КБ | Просмотров: 8722 ]


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

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Владимир Паронджанов писал(а):
Стас Тарасенко пишет:
Цитата:
Я ... считаю, что ВЛОЖЕНИЕ ВЕТОЧНЫХ ЦИКЛОВ нужно запретить.


Стас! Предлагаю твоему вниманию два примера с вложением веточных циклов.
Мне кажется, их запрещать не нужно.


Рискну тоже высказаться :)
Уважаемый Станислав,
Мало-мальски сложные силуэты с ВЦ содержатся в графчасти этого примера; один из них (дракон-программа) с вложенными ВЦ. Немного попроще визуалы в Задаче 1.1.1 из этого приложения. Интересно будет узнать, насколько читабельны будут такие схемы без веточных циклов вообще и с ВЦ без индексов; также хотелось бы видеть Ваши предложения, как минимум не менее эргономичные, чем индексация начала/конца ВЦ.

Вообще что такое веточный цикл? Не что иное как обычный цикл в силуэте, протяжённый более чем на одну ветку. В этом случае техноязык накладывает ограничения структурной алгоритмизации шампур-методом - петля цикла может начинаться и заканчиваться только в местах деления шампура разрешёнными БП - и это не требует специальных операторов, т.к. петля цикла и образуется посредством БП назад, как и петля силуэта.
Если "примитивизируем" силуэт, как показано в иллюстрации этого примера, то это видно. Правда для понимания циклов нужно примитивизировать схему с ВЦ (допустим, обобщённый силуэт из этого подпункта) - в принципе такое преобразование можно нарисовать и включить как пример - но для лучшего понимания, м.б., Вам стоит сделать это самому.
Итак, фактически цикл, не влезающий в одну ветку, может начинаться/заканчиваться только в определённых точках (шапке/подвале силуэта) и под эти точки нужно подгонять его тело при сочинении силуэта. Для оптимальной компоновки, как тут говорили выше, м.б. удобно делать эргоподстановки в некоторые ветки, составляющие тело ВЦ.
Понятно, что запрещать тут сверх этого нечего - это всё равно как в дракон-примитиве потребовать, чтобы обычный цикл не мог начинаться/заканчиваться в определённых точках вертикали и не мог вкладываться в другой цикл.

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

P.S. Если хотите отработать свои предложения на примере задачи с датчиками, могу выложить исходники этих визуалов (в документе Draw 2.4) - конечно, если Вы уже работаете с OpenOffice.org. В Ты-среде и эти схемы пока не нарисовать полностью, а кто знает - может у Вас получится что-то заслуживающее внимания?

P.P.S. О предложениях Геннадия Николаевича по индексации ВЦ - вижу некоторую нелогичность, которая влияет и на восприятие схем с такими индексами. Хоть цикл - конструкция фундаментальная в алгоритмике, как об этом уже говорилось на конференции :), но она не одного порядка с веточной структурой силуэта. Ветки суть просто единицы линейного деления шампура для введения полноценного второго измерения размещения алгоструктуры на плоскости. Циклы - суть обратные связи этой алгоструктуры, не зависящие от того, как она размещена, но могущие образовывать иерархию-вложенность.
Предложенная точечная запись логически объединяет ветки и циклы в одной иерархии - а это разные рядоположения. Поэтому им и разные "пространства имён" - а значит, и разные пространства записи этих имён (поля икон).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вложенные циклы в языке Дракон
СообщениеДобавлено: Вторник, 13 Июль, 2010 21:40 

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

Владимир Данилович! Конечно, не нужно! А разве это вложенные циклы? Вход-то один! Значит, и цикл один, просто первый адрес "Ожидание посадки" - это слово "Continue", а второй - закрытие цикла. Я имел в виду настоящий цикл в цикле, с новым входом, как на рисунке download/file.php?id=1614


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

Зарегистрирован: Четверг, 04 Июнь, 2009 15:08
Сообщения: 100
Драконограф писал(а):
пример с контролем дискретных датчиков
Не нашёл рисунка силуэта по этой ссылке, один текст, а в текст вникаю с большим трудом.
Вложение простых циклов (не веточных) по другой ссылке нашёл, но опять не то.
Вообще я тут начал мало чего понимать. Трудно мне всё это. Схемы я кое-как понимаю, а вот мудрёные речи для меня - стена. Теоретик из меня паршивый. Программировать интереснее...


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

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


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

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


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

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