Инфологическое обеспечение | Когнитивное | Графит-букварь
Стр. 1 2 3 4 5 6 7 8 9 10 11 12
Содержание
Объявления и директивы. Вершины Полка, Формальные параметры, Заголовок, Имя ветки
Объявления и директивы. Вершины Полка, Формальные параметры, Заголовок, Имя ветки
В алгоритме нужно указать состав и формальные свойства объектов формализуемого процесса (алгоритмических величин и частей визуала). Для этого служат особые псевдооператоры объявления. На уровне командной модели псевдооператоры заменяются реальными действиями по отведению памяти исполнителя под величины.
В техноязыке для этих целей употребляют особые иконы дракон-алфавита. Все они введены заново; в стандарте блок-схем нет хотя бы приблизительно похожих по смыслу операторов.
Основное назначение данной вершины в техноязыке – объявлять величины данного алгоритма; оно описано в дракон-азбуке. В то же время оно м.б. расширено.
Вершина Полка употребляется также как виоп — для визуального присвоения значений логических переменных. Очевидно, можно использовать его шире – для присвоения значений любого типа – при этом на верхнем «этаже» вместо приказов «Установить» или «Сбросить» нужно записать присваиваемое значение, а на нижнем – перечень имён переменных (соответствующего типа), которым оно присваивается (в алфавите мы дали его в этом качестве как «полка присваивания»).
При объявлении величины указывается её имя и тип; значение предполагается установленным по умолчанию. Само объявление сводится к получению адреса памяти исполнителя, с которого будет располагаться величина; если определено значение по умолчанию, то после этого оно загружается в память с полученного адреса.
В частном случае значение по умолчанию отсутствует; тогда начальным значением будет содержимое области памяти, отведённой под значение. Это надо иметь в виду при дракон-программировании.
Обычно объекты делят на входные (аргументы) и выходные (результаты); иногда также выделяют промежуточные величины. Это можно отразить при объявлении, поместив в одной полке только величины одной из указанных групп и соответственно назвав полку.
Можно использовать полку для объявления также и функций, напр. следующим образом. На верхнем этаже записывается вызов функции (её имя и перечень аргументов); формат как в текстовых прогязыках. На нижнем этаже записываются действия по вычислению значения, возвращаемого функцией; для него, как в алгонотации, можно ввести служебную переменную Знач; разумеется, присвоение значения этой переменной завершает цепочку действий.
Функция м.б. и библиотечной, т.е. заранее определённой вне данного алгоритма (обычно в среде программирования). В этом случае можно дать простое объявление, напр. на нижнем этаже писать «библиотечная».
В каком-то смысле это описание служит альтернативой составлению визуала-вставки для функции; понятно, что при нелинейной структуре вставки этот способ неэффективен. В то же время сочетание простого объявления в начале визуала с визуализацией вставки удобно и повторяет структуру программы во многих текстовых прогязыках.
Паронджанов также использует полку как специфическое действие ДРАКОН-2 по выдаче сигналов управления реальными объектами (команд). Представляется, что для этого правильнее пользоваться иконой Вывод со специфическим текстом верхнего этажа (скажем, таким же: «выдать команду»).
Текст верхнего этажа полки в любом случае можно трактовать как некое родовое имя, а текст нижнего – как видовые случаи, относящиеся к этому роду.
Графика виопа Полка является оригинальной. При записи величин рекомендуется использовать формат прогязыков, что отражено в РБНФ-определении текста нижнего этажа в дракон-азбуке.
Значение вершины – директива объявления передачи величин в данный визуал из вышележащего – понятно из дракон-азбуки, мы лишь ввели возможность присваивания начальных значений. В принципе это можно делать и после заголовка с параметрами в вершине Полка, но такая запись и экономичней, и эргономичнее; в ряде случаев (когда д.б. установлены не только начальные значения) проще разбираться, где начальные значения, а где прочие определения. Разумеется, присваивание выполняется только если при вызове не передано фактическое значение, т.е. подразумевается оператор вида (в алгонотации):
ЕСЛИ передан ФактПарм[i] ТО ФормПарм[i] := ФактПарм[i] ИНАЧЕ ФормПарм[i] := <НЗ>
По сути данный виоп есть объявление величин, входных для алгоритма-вставки, явным образом. Кроме того, неявно доступны для алгоритма также величины, глобальные в вызывающем алгоритме.
Объявляет метку разрешённого БП по петле силуэта; содержимое метки есть имя самостоятельной части визуала-силуэта (уникальное в пределах дракон-модели). По сути смысл вершины – указание транслятору дракон-схемы «вычислить адрес следующей за мной вершины и записать его как параметр в каждую вершину Адрес с идентичным текстом». Эта следующая вершина будет первым исполняемым оператором в ветке; сама же метка (вершина Имя ветки) в командном представлении визуала не присутствует. Фактически как результат её исполнения среди служебных величин появляется вычисленный адрес под именем ветки; если код визуала перемещаемый в памяти исполнителя, то значение адреса может меняться и обычно задано как относительное от начального адреса кода (указываемого иконой Заголовок).
Данная вершина есть по сути объявление метки для БП-вызова озаглавленного визуала; командой БП-вызова служит каждый виоп Вставка с одинаковым именем в любом другом визуале. Если в нашей модели не определён ни один такой вызов, его можно подразумевать (хотя бы в виде операций исполнителя, запускающих озаглавленный визуал), так что в любом случае визуализируемый процесс трактуется как вставка в некий вышележащий процесс.
Заголовок также имеет смысл директивы определения адреса следующего виопа, т.е. первого исполняемого оператора визуала. Можно говорить, что в части объявления имени виоп эквивалентен виопу Имя ветки; однако сверх того при исполнении заголовка устанавливается состояние процесса, представляемого озаглавленным визуалом (в т.ч. могут передаваться фактические параметры, если определены формальные).
В графит-методе схеме также присущи некоторые атрибуты; логично сопоставить атрибуты схемы её заголовку. Важнейшие среди них — язык схемы и статус её сочинения.
У знакомых с техноязыком в определении его создателя (будем называть его «классическим») может возникнуть вопрос — зачем указывать язык схемы, ведь он один — ДРАКОН? Но, во-первых, им как импер-шампур-языком потребности визуализации не исчерпываются — необходимо визуализировать и другие частные виды знания о деятельности, а также обобщённое знание; подробнее об этом в п. 2.5.1. Во-вторых, любой язык представления конкретного знания может не быть (и не обязан быть) монолитным; в нём м.б. выделены «диалекты», расширения. Так, в графит-редакции введено расширение техноязыка для лиоформирования (выкладки шампур-схем в линейный порядок) — лио-ДРАКОН (см. п. 3.5.5 Приложения 2). Кстати, и «классический» техноязык подразделён на версии (1 и 2).
Язык схемы есть статический атрибут; конкретная схема всегда создана на одном и том же графит-языке.
В графит-методе атрибут рассматривается как код-префикс, производимый от названия языка. Префикс в «макетных» схемах включается в текст заголовка перед названием схемы; в приложении редактирования м.б. выбран другой вариант.
Статус сочинения схемы предполагается одним из следующих:
эскизная (draft) – не подлежит трансляции в исходный текст;
рабочая (exec) – подлежит трансляции (самостоятельно или совместно с другими необходимыми схемами) в исходный текст на гибридном языке схемы/схем (как правило, на прогязыке);
автоматическая (auto) – производная от других схем, строится в зависимости от их содержания;
Если схема по роду используется для визуализации алгоритмов и программ (дракон-схема или иная), то её трансляция может подразумевать дальнейшее получение по тексту исполнимого кода программы; иначе исхтекст читается человеком.
Атрибут статуса ситуативен и потому в «макетной» визуализации будет указываться в особом поле, стыкуемом с контуром вершины.
Графика первых двух вершин оригинальная; Формальные параметры в структуре схемы являются вершиной-боковиком (находясь вне маршрута):
При записи величин в тексте виопа Полка рекомендуется использовать формат прогязыков, что отражено в РБНФ-определении текста нижнего этажа в дракон-азбуке.
Графика вершины Имя ветки построена на основе соединителя маршрутов блок-схем по ГОСТ 19.701-90.
Графика заголовка соответствует ГОСТ 19.701-90; текст должен включать имя визуала.
Удобно показать синтаксис рассмотренных объявлений и директив на примере подстановки. Ниже приведена графит-схема подстановки в диоформе и в лиоформе для сравнения. Текстовый синтаксис соответствует компонентному прогязыку с процедурами, связанными с типом Оберон-2 (с некоторыми дополнениями ЛД-языка).
Объявления и директивы на примере графит-подстановки
Для упрощения атрибуты языка и статуса схемы не показаны; мы будем употреблять их в реальных графит-схемах, прежде всего в Каталоге примеров.
Видно, что в лиоформе вызову и возврату соответствуют особые типы БП, связанные со сменой контекста алгопроцесса. Кроме того, над величинами, участвующими в контекстах, производятся вспомогательные операции в связи со сменой. В зависимости от репертуара исполнителя эти м.б. реализованы как часть операторов перехода или требовать отдельного сочинения.
В начало страницы | Оглавление | Версия для печати
Copyright © Жаринов В.Н.