Содержание
Как уже говорилось, одной из ключевых идей, «изюминок» техноязыка является существование различных изображений структуры ГСА на плоскости, или символических диоформ визуалов — примитива и силуэта. Изначально даются их исходные формы – заготовки дракон-схем; одно из назначений заготовки – задавать границы шампура. Рассмотрим теперь каждую из диоформ в целом, опираясь на то, что мы узнали о подструктурах, составляющих содержание визуалов, т.е. входящих в шампуры.
Эта диоформа похожа на обычную блок-схему: заголовок и конец, между которыми помещается тело – шампур-блок содержания визуала (пока оно нас не интересует, поэтому замещено одним блоком).
Визуал формы примитива – общий вид и способ образования
Примитив произвольной структуры мы рассмотрим позже.
Суммируем основные свойства базовых конструкций для примитива, исходя из того, что мы о них узнали в предыдущем подразделе.
Следование изображается упорядочением икон в цепочку, соединённую звеньями. Формально при этом происходит естественный переход исполнителя алгоритма от текущей иконы к следующей в цепочке «по шампуру», т.е. по вертикали сверху вниз.
Формула маршрута следования – это слово, составленное из буквенных обозначений икон.
Горизонтальные линии в начале и конце любой побочной вертикали являются частью соответствующего звена (естественного перехода).
Ветвления изображаются посредством развилок – визуальных операторов, имеющих один вход и несколько выходов (плеч). Простейшая развилка строится на основе иконы И4, сложная – макроиконы 3. Формально при этом происходит условный переход на один из выходов в зависимости от результата проверки некоторого условия.
Если алгоритм содержит ветвления, то в его дракон-схеме можно выделить элементы:
главная вертикаль – проходящая от выхода иконы Заголовок ко входу иконы Конец, остальные вертикали считаются побочными.
лиана – соединительная линия или последовательность шампур-блоков, началом которой является выход иконы Вопрос или Вариант.
Проверка условия ветвления происходит в условном операторе, изображаемом иконой И4 или «шапкой» макроикон 3/11 или 5/13. В иконе Вопрос записывается т.н. да-нетный вопрос, т.е. такой, на который можно дать ответы «Да» или «Нет». Для переключателя составляется т.н. тематический вопрос, т.е. такой, на который можно дать ряд конкретных ответов (перечень из двух и более понятий – вариантов); предмет вопроса записывается в иконе Выбор, а каждый из вариантов – в своей иконе Вариант.
Циклы, вводимые на основе иконы И24, изменяют порядок исполнения; в петле цикла движение идет в направлении, обратном естественному – снизу вверх и справа налево, что отмечается стрелкой.
Формально цикл можно представить как возвращение на уже пройденную точку маршрута, но в иной ситуации (состоянии исполнителя), чем при предыдущем проходе.
Петля цикла может начинаться не сразу от выхода развилки, а после некоторого шампур-блока, нагружающего побочную вертикаль (такая структура называется цикл ДО); аналогично и между концом петли цикла и входом развилки м.б. не пустое звено, а шампур-блок (такая структура называется цикл ПОКА); если имеет место и то, и другое, имеем гибридный цикл.
При наличии ветвлений в визуале имеется два и более маршрутов, проходящих через разные вертикали и плечи развилок. В смысловом визуале (иконы которого заполнены конкретным текстом) один из маршрутов считается главным; он выбирается разработчиком схемы, обычно по значимости для целей алгоритма.
Формулы маршрутов разветвлённого визуала записываются с участием значений выходов ветвлений (ответов на вопросы); очевидно, каждому маршруту будет соответствовать уникальный набор ответов на все вопросы.
Все побочные вертикали и петли циклов упорядочиваются строго вправо от главной вертикали, из которой они исходят. Тем самым исполнение визуала соответствует естественному порядку чтения дракон-схемы – справа налево и сверху вниз (за исключением прослеживания циклов).
Исходя из визуального порядка вертикалей ветвления (цикла), определяется и положение горизонталей рёбер, ограничивающих побочную вертикаль - всегда справа от главной.
Теперь коснёмся структуры примитива в целом. Она м.б. линейной или нелинейной (содержащей ветвления и/или циклы).
Изначально нелинейная структура тела примитива образуется как матрёшка — вложение одних макроикон ветвления в другие. Из схем переключающего цикла видно, что матрёшки образуются и как комбинации ветвлений с циклами. Нам также знаком ещё один случай матрёшек – циклы в цикле.
Матрёшка в общем случае определяется как вложение нелинейных структур (ветвлений и/или циклов) друг в друга.
В примитиве реального времени употребляются иконы РВ, не являющиеся шампур-блоками. Такая икона Период может располагаться в петле цикла; кроме того, такие иконы Синхронизатор м.б. присоединены к некоторым шампур-иконам (макроиконам). Тем самым образуются макроиконы реального времени (по стандарту языка имеют номера 7…20).
Кроме обычных примитивов, возможны и произвольные.
Произвольным примитивом будем считать визуал с нелинейным телом, полученный из заготовки-примитива как вставкой макроикон и шампур-икон, так и преобразованием структуры связей в теле. Это общий случай данной диоформы визуалов.
Тело в произвольном примитиве состоит из макроструктурных блоков следующих видов:
структурные – организуются методом добавления к шампуру и/или побочным вертикалям икон (макроикон) между уже имеющимися;
лианные – образуются из дракон-схемы, содержащей ветвления, путём выполнения модификации, называемой пересадкой лианы.
Пересадка лианы – отрыв нижнего конца лианы и присоединение его в другой точке дракон-схемы при соблюдении определённых условий (см. /2, гл. 15, Тезис 28/).
Очевидно, что после пересадки изменится совокупность маршрутов визуала (и их формул). Пересадке лианы может сопутствовать переформулировка условных вопросов (и вариантов ответа).
В частном случае (если тело примитива начинается с ветвления и в нём определённым образом пересаживались лианы) лианным блоком становится всё тело.
В примитиве, кроме того, возможно «зацикливание» алгоритма операцией Удаление конца примитива; при этом образуется макроцикл — неявный (не заданный через макроикону) цикл по всему телу до верхней границы шампура. Этот макроцикл мы можем представить себе как явный цикл, вопрос которого д.б. риторическим, т.е. иметь в любой ситуации выполнения единственный верный ответ, приводящий на петлю (наиболее очевидная формулировка – Продолжать (или нет) выполнение визуала?); полученная схема показана слева на рисунке далее.
Варианты визуализации логики «зацикленного» примитива
Указанную схему можно считать корректной, но вообще-то ответ на риторический вопрос бессмыслен. Фактически при удалении конца условный переход на него превращается в безусловный переход назад (возврат управления) к началу алгоритма. Это можно изобразить, используя иконы Имя ветки и Адрес, визуализирующие безусловный переход в техноязыке (см. схему справа на рисунке выше). Эта схема может считаться лишь драконоподобной, поскольку БП назад в техноязыке запрещён.
Силуэт – форма алгоритма на диосцене, допускающая безусловные переходы с определёнными ограничениями (т.н. разрешённые БП). Их совокупность организована как специальная икона техноязыка Петля силуэта.
Данная диоформа считается наиболее общей для алгоритма.
Силуэт – форма сложного визуала, подразделяющая его на смысловые части – ветки и петлю силуэта – которые образуют метаструктуру деятельности.
Ветка – составной оператор языка ДРАКОН, состоящий из начала, тела и конца. Тело ветки имеет один вход и один или более выходов. Вход обязательно соединен с петлёй силуэта через икону Имя ветки, а выход – через икону Адрес.
Петля силуэта – икона, визуализирующая обобщённые безусловные переходы между выходами веток и их входами.
Понятие главного маршрута применительно к силуэту уточняется:
Главный маршрут силуэта – последовательность маршрутов поочерёдно работающих веток.
Замыкающая стрелка петли обозначает направление перехода – снизу вверх и слева направо (ср. с петлёй цикла), а также отмечает начальную точку исполнения визуала – со входа в крайнюю левую ветку. Горизонталь, лежащую в петле справа от этой стрелки, будем называть заглавной; вместе с иконой Заголовок и комплектом икон Имя ветки она образует т.н. шапку силуэта, которая позволяет оперативно уяснить метаструктуру описываемой деятельности (её название, число частей и имя каждой части). Нижнюю горизонталь петли называют «землей» силуэта; вместе с комплектом икон Имя ветки» она образует т.н. подвал силуэта.
Силуэт имеет две и более веток; в каждой иконе Адрес пишется имя одной из веток данного визуала. Мы можем обобщённо показать структуру дракон-схемы в этой форме (см. далее).
Как показано на схеме, крайняя правая ветка м.б. конечной; тело её представляет собой шампур, соединяемый не с петлёй, а с иконой Конец. Остальные ветки будем называть полными.
Тело полной ветки обычного силуэта образуется так же, как и шампур в обычном примитиве.
Шампур ветки – вертикаль, соединяющая икону Имя ветки с иконой Адрес той же ветки.
Рассмотрим отличия базовых алгоритмических конструкций в силуэте от примитива и сопутствующие ограничения.
В силуэте следование отображается, кроме соединения смежных икон звеньями вертикали, также через совпадение имён в иконах Имя ветки и Адрес разных веток. Тем самым происходит безусловный переход по петле силуэта от ветки к ветке, вплоть до конечной.
Ветвление возможно внутри ветки, т.е. побочные вертикали, начинающиеся в данной ветке, должны в ней и заканчиваться; кроме того, через заземлённые лианы возможен условный переход с побочных вертикалей на другие ветки. Передачи управления от выходов развилок напрямую на другие ветки, минуя петлю силуэта, запрещены.
Цикл также может иметь другую форму. В частном случае имя в иконе Адрес совпадает с именем, присвоенным данной ветке; тем самым образуется макроцикл, называемый веточным циклом.
Силуэт можно описать на текстовом языке; разумеется, в него следует ввести операторы, соответствующие иконам Имя ветки и Адрес. Пример описания силуэта на псевдокоде /1, с.91-92/.
В силуэте реального времени допускается употребление в телах веток рассмотренных для примитива шампур-икон и макроикон РВ. Кроме того, конечная ветка может отсутствовать; тогда силуэт является "зацикленным", т.е. выполняется бесконечно (практически – пока может работать исполнитель алгоритма). Общий вид данного силуэта представлен далее.
Исходной формой силуэта является заготовка-силуэт, имеющая только начальную и конечную ветки, тела которых замещены валентными точками. Заготовка-силуэт даётся в языке аксиоматически, как и заготовка-примитив; очевидно, что путём несложной редукции из первой получается вторая.
Визуал формы силуэта – обобщённые структуры для обычного вида
Смысл перехода от примитива к силуэту – визуальное структурирование деятельности (алгоритма, техпроцесса) таким образом, чтобы исключить пересечения соединительных линий независимо от сложности структуры. Устраняются и пересечения, неустранимые в примитиве, например, "заходы" петель циклов друг за друга и за побочные вертикали. При этом используется то, что замыкание петли силуэта одной-единственной линией означает всю совокупность переходов от ветки к ветке, которые логически разрешаются по совпадению значений икон Имя ветки и Адрес.
К произвольным будем относить силуэты с расширенными возможностями маршрутизации выполнения – множественностью выходов веток и/или входов в визуал.
К отдельным веткам, кроме главной, можно присоединить иконы Заголовок (макроиконы Заголовок с параметрами); тем самым образуются дополнительные входы (допвходы) через эти ветки. Допвход в веточный цикл возможен только через его начало.
Тело полной ветки произвольного силуэта, в отличие от шампура в примитиве, может иметь несколько выходов; в этом случае ветка называется многоадресной. Один из этих выходов, как и в шампуре, является концом главной вертикали ветки; остальные представляют собой т.н. заземлённые лианы.
Кроме структурных и лианных блоков, в макроструктуру ветки входит новый тип блока:
адресный – образуется из структурного блока за счет применения операции Заземление лианы и, возможно, Пересадка лианы.
Заземление лианы – отрыв конца лианы и присоединение его к "земле" силуэта через икону Адрес с соблюдением определённых условий (см. /1, Гл. 15, Тезис 29/).
Операция Заземление лианы делает ветку многоадресной. При наличии хотя бы одной многоадресной ветки силуэт является разветвлённым.
В разветвлённом силуэте (с многоадресными ветками) уточняются некоторые понятия, и прежде всего понятие главного маршрута, что подробно рассмотрено в /1, Гл.6/.
Шампур ветки – вертикаль, соединяющая икону Имя ветки с крайней левой из икон Адрес той же ветки.
Главный маршрут силуэта (разветвлённого) – последовательность маршрутов поочерёдно работающих веток, взятая для набора конкретных выходов каждой ветки.
В разветвлённом силуэте можно образовать веточный цикл . Он может проходить и через последовательность двух и более веток; тогда иконы с совпадающим именем относятся к разным веткам. Началом веточного цикла является начало (икона Имя ветки) крайней левой из входящих в него веток, а концом – икона Адрес крайней правой.
Как и обычные, веточные циклы м.б. вложены друг в друга (конечно, N-веточный цикл можно вложить в цикл с числом веток, также не меньшим N).
Иконы Имя ветки и Адрес, обозначающие начало и конец веточного цикла, принято помечать специальным образом (возможные варианты см. /2, рис. 51 и 105/). Мы принимаем второй вариант, что видно из используемого алфавита техноязыка.
Вообще говоря, ничто не мешает нам образовать веточный цикл в неразветвлённом силуэте; однако единственный эффект этого будет состоять в "зацикливании" части, на которую он распространяется, в пределе - всего алгоритма, кроме конечной ветки (а для этого более логично удалять её); т.о. нет логичных оснований пользоватьcя таким приёмом.
Также можно преобразовать обычный силуэт (в т.ч. разветвлённый) к бесконечному операцией техноязыка Удаление последней ветки; при этом автоматически ссылки на последнюю ветку в «подвале» изменяются на первую.
Визуал формы силуэта – обобщённые структуры для произвольного вида
Чтобы не загромождать рисунок, здесь не выделяются шапка и подвал; границы их аналогичны таковым для обычного силуэта, только шапка включает также допвходы.
В начало страницы | Оглавление | Главная | Версия для печати
Copyright © Жаринов В.Н.