Владимир Паронджанов писал(а):
Стас Тарасенко пишет:
Цитата:
Я ... считаю, что ВЛОЖЕНИЕ ВЕТОЧНЫХ ЦИКЛОВ нужно запретить.
Стас! Предлагаю твоему вниманию два примера с вложением веточных циклов.
Мне кажется, их запрещать не нужно.
Рискну тоже высказаться
Уважаемый Станислав,
Мало-мальски сложные силуэты с ВЦ содержатся
в графчасти этого примера; один из них (дракон-программа) с вложенными ВЦ. Немного попроще визуалы
в Задаче 1.1.1 из этого приложения. Интересно будет узнать, насколько читабельны будут такие схемы без веточных циклов вообще и с ВЦ без индексов; также хотелось бы видеть Ваши предложения, как минимум не менее эргономичные, чем индексация начала/конца ВЦ.
Вообще что такое веточный цикл? Не что иное как обычный цикл в силуэте, протяжённый более чем на одну ветку. В этом случае техноязык накладывает ограничения структурной алгоритмизации шампур-методом - петля цикла может начинаться и заканчиваться только в местах деления шампура разрешёнными БП - и это не требует специальных операторов, т.к. петля цикла и образуется посредством БП назад, как и петля силуэта.
Если "примитивизируем" силуэт, как показано
в иллюстрации этого примера, то это видно. Правда для понимания циклов нужно примитивизировать схему с ВЦ (допустим, обобщённый силуэт
из этого подпункта) - в принципе такое преобразование можно нарисовать и включить как пример - но для лучшего понимания, м.б., Вам стоит сделать это самому.
Итак, фактически цикл, не влезающий в одну ветку, может начинаться/заканчиваться только в определённых точках (шапке/подвале силуэта) и под эти точки нужно подгонять его тело при сочинении силуэта. Для оптимальной компоновки, как тут говорили выше, м.б. удобно делать эргоподстановки в некоторые ветки, составляющие тело ВЦ.
Понятно, что запрещать тут сверх этого нечего - это всё равно как в дракон-примитиве потребовать, чтобы обычный цикл не мог начинаться/заканчиваться в определённых точках вертикали и не мог вкладываться в другой цикл.
Ограничения начала/конца петли в силуэте распространяются и на цикл ДЛЯ - но его петля условна, начинается и заканчивается на иконах-границах ДЛЯ - и потому разрыв тела цикла между ветками означает, что мы нарушили правило "переходы между ветками возможны только по петле силуэта" (тоже, наверное, стоит нарисовать такой пример, чтобы понять, ориентируясь на
схему цикла ДЛЯ из этого пункта). Вот почему,
IMHO, не стоит так делать (см. опять же пример с контролем дискретных датчиков).
P.S. Если хотите отработать свои предложения на примере задачи с датчиками, могу выложить исходники этих визуалов (в документе Draw 2.4) - конечно, если Вы уже работаете с OpenOffice.org. В Ты-среде и эти схемы пока не нарисовать полностью, а кто знает - может у Вас получится что-то заслуживающее внимания?
P.P.S. О предложениях Геннадия Николаевича по индексации ВЦ - вижу некоторую нелогичность, которая влияет и на восприятие схем с такими индексами. Хоть цикл - конструкция фундаментальная в алгоритмике, как об этом уже говорилось на конференции
, но она не одного порядка с веточной структурой силуэта. Ветки суть просто единицы линейного деления шампура для введения полноценного второго измерения размещения алгоструктуры на плоскости. Циклы - суть обратные связи этой алгоструктуры, не зависящие от того, как она размещена, но могущие образовывать иерархию-вложенность.
Предложенная точечная запись логически объединяет ветки и циклы в одной иерархии - а это разные рядоположения. Поэтому им и разные "пространства имён" - а значит, и разные пространства записи этих имён (поля икон).