Г Р А Ф И Т — б а з и с

Инфологическое обеспечение | Когнитивное | Графит-букварь

Стр. 1 2 3 4 5 6 7 8 9 10 11 12


Содержание

Несепулька-виопы ветвления: Вопрос, Выбор и Вариант. Развилка и переключатель. Пересечения маршрутов

Для чего это нужно?

Что это значит?

Как это пишется?

Несепулька-виопы ветвления: Вопрос, Выбор и Вариант. Развилка и переключатель. Пересечения маршрутов

Для чего это нужно?

На базе данных виопов, как уже говорилось, визуализируют ветвления – дихотомические (развилки) и множественные. Практически целесообразная деятельность не обязательно должна иметь единственный порядок действий (маршрут); часто требуется многообразие маршрутов, из которых выбирается нужный по ситуации.

Далее, в процессе визуализации многообразия маршрутов возможны нарушения топологических запретов. Их можно преодолевать одним из двух способов:

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

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

Временное разрешение оправданно ввести для следующих запретов техноязыка:

Изломы обсуждались ранее (см. п/п 2.1.3.1).

Очевидно, для записи нужно ввести особые типы вершин.

Как и операторы сохранения и извлечения, все эти вершины предлагается ввести в алфавит техноязыка для визуализации любых процессов, в т.ч. практических. Т.к. пока это подлежит обсуждению, то и операции с участием вершин определим здесь, а не в ТФЗ.

В начало страницы

Что это значит?

Для неформального описания развилки можно поставить вопрос «Имеют ли место заданные условия?», на который возможны ответы «да» либо «нет». Исполнитель проверяет условия и выбирает маршрут, соответствующий ответу.

Формально условие развилки записывается как логическое выражение (логвыр) – совокупность арвыров, связанных операциями отношения. Результат вычисления логвыра – значение, указывающее, выполнились отношения при заданных значениях величин, входящих в арвыры, или нет.

Вообще говоря, в качестве величин условия мы можем записать любые арифметические выражения, но они будут вычислены только для целей сравнения (не сохранятся, т.к. не выполнено присваивание); членами выражения м.б. различные функции языка (среди которых м.б. и ввод). Это практикуется в прогязыках.

Практикуется и арифметический условный оператор, где условие формулируется от числовой величины, проверяемой на «меньше/равно/больше» другой величине.

При множественном ветвлении задаётся тематический вопрос. Примеры таких вопросов часто встречаются в жизни: это всевозможные анкеты, тесты, включая известный ЕГЭ :) Выбирается маршрут, соответствующий одному (и только одному) варианту.

В процессе формализации условия могут использоваться и в ином контексте.

Так, в алгонотации предусмотрена запись условий вне конструкций ветвления. Это т.н. пред- и постусловия алгоритма (обозначаются операторами НАЧ и КОН), а также текущие, или оперативные условия, влияющие на продолжение исполнения алгоритма (оператор УТВ). По смыслу такого рода условия (назовём их контрольными) - это директивы постановки контрольной точки исполнения алгоритма (точнее, представляющей его программы); неявно предусматривается реакция на невыполнение условия – прерывание исполнения и переход в режим отладки программы (если он предусмотрен архитектурой исполнителя) или просто выход из неё (в частном случае - останов исполнителя).

Во многих прогязыках имеются операторы данного назначения; чаще всего их командная часть выражается ключевым словом assert. Такой оператор (точнее, встроенная функция) есть и в Оберон-2 (только для задания оперусловий).

В общем такие условия отражают расширенный смысл исполнения алгоритма: любой оператор м.б. выполнен или блокирован в зависимости от алгоритмической обстановки, складывающейся после предыдущего (по ходу следования) оператора. Т.к. обстановка включает и состояние внешней среды, то с его изменением возможно продолжение исполнения алгоритма.

С этим смыслом мы уже сталкивались при описании параллельных процессов; там подразумевалась временная блокировка исполнения алгоритма адресата, содержащего оператор Д26, до получения сообщения, соответствующего этому оператору.

Главная особенность контрольных условий — при невыполнении любого из них исполнение не просто приостанавливается, но завершается; тем самым у процесса появляется, так сказать, «промежуточный финиш». М.б. исполнена некая альтернативная процедура, чтобы по возможности устранить ситуацию невыполнения (в простейшем случае — ожидание в течение некоторого допустимого времени), прежде чем выйти на завершение.

Для визуализации таких условий введём оператор Д30 (см. п. 3.5.1 Приложения 2). Он представляет собой развилку-боковик (правый); для записи предусловий виоп присоединяется к вершине Заголовок, постусловий – к вершине Конец. Оперусловия визуализируются присоединением вершины к звену вертикали по месту проверки.

В визуализации используется нешампур-вершина, условно называемая разъёмом инварианта. Она акцентирует внимание читателя на том, что состояние, в котором алгопроцесс находится на звене, содержащем разъём, проверяется на соответствие инварианту, и последствие несоответствия (т.н. исключительной ситуации исполнения) - выбор маршрута не просто альтернативного, но ведущего к останову процесса до основного конца (или даже при отсутствии такового — в «зацикленном» визуале). Этот останов в случае обычного инварианта безусловен, а в случае исключения — наступает, если предусмотренная сочинителем процедура обработки исключительной ситуации (исполненная разово или циклически) не восстановила соответствия состояния инварианту.

Условие переключателя разнесено по иконам Выбор и Вариант. При этом выражение (в частном случае – переменная) выбора служит образцом для сопоставления с выражениями (в частном случае – также переменными или константами) вариантов. Соблюдается определённая дисциплина просмотра вариантов, чтобы выбор нужного не был случайным.

Отметим, что возможны короткая и длинная схемы вычисления условий при выборе варианта. При первой анализ вариантов прекращаетcя на первом удовлетворяющем условии, при второй – всегда анализируется каждый вариант выбора.

Может показаться, что так невозможно описать ответ не из одного варианта, часто используемый в реальных тематических вопросах. На самом деле для этого случая просто определяется ещё один вариант как связка выражений для совместно выбираемых вариантов (логическим И); его нужно поместить перед всеми этими вариантами по порядку просмотра, чтобы выбор был правильным (иначе до связки мы никогда не доберёмся: всегда будет обнаруживаться ИЛИ одно, ИЛИ другое, и т.д... частное значение).

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

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

Используя визуализацию БП, можно показать логику ветвления/слияния маршрутов. При этом организация множественного ветвления посредством переключателя будет подобна организации силуэта, что можно видеть на схеме далее. Здесь подробная диоформа (с показом деревьев в «шапке» и в «подвале») далее (на нижней схеме) раскрыта представлением вершин-разветвителей через развилки:

Структура дракон-переключателя (подробная диоформа и «матрёшка»)

Видно, что получилась «матрёшка». Для компактности мы расположили вход вопроса «не по шампуру», как и при раскрытии «шапочного разбора» в петле силуэта. Вершины-соединители также представлены через безусловные переходы (образующие кратный БП).

Матрёшка организована так, что каждая развилка находится на отдельной вертикали; такую запись назовём прямой (т.к. она прямо соответствует топологии переключателя).

Развилка в сочетании с БП в «шапке» представляет команду ветвления между линейными маршрутами; т.е. эта схема есть приближение к лиоформе переключателя, готовой к выкладке в линейный порядок. Чтобы прямую запись действительно выложить в линию, нужно ввести БП также и в правое плечо каждой развилки (здесь — горизонтальное).

Точная лиоформа для прямой записи показана на схеме далее:

Структура дракон-переключателя (прямая лиоформа)

Здесь также введён начальный БП (по метке ВхПер); он возникает, если предыдущие маршруты требуют отделения для выкладки (различные случаи рассмотрены в п/п 2.2.1.1).

Если рокировать каждую развилку, получим запись, которую назовём инверсной.

Структура дракон-переключателя (инверсная лиоформа)

Здесь команда ветвления на базе развилки записана полностью, а кратные БП в «подвале» сокращены. Также показаны БП в обоих плечах каждой развилки. Видно, что необходимости вводить БП в главные плечи развилок для выкладки нет (поэтому их вершины там даны пунктиром).

Видна важная особенность: в инверсной записи меняется и порядок вертикалей; первому в порядке просмотра варианту соответствует уже крайняя правая вертикаль.

При рассмотрении переключателя употреблены обычные дракон-виопы Имя и Адрес, чтобы подчеркнуть, что виопы Вариант — это просто иная, чем имя ветки силуэта, форма визуализации метки БП, «вытащенной» в дракон-переключателе из полной записи древесной структуры ветвлений, организующей выбор варианта. В дальнейшем мы будем пользоваться также и вариантами в роли вершин-меток БП, а также введём иные формы вершин для представления БП другого типа.

Для временной записи конструкций с нарушением топологических запретов введём следующие вершины в алфавит дракон-схем:

В совокупности вершины образуют безусловный переход-соединитель для размыкания неустранённых пересечений линий в примитиве (ветке силуэта). Допустим для БП-соединителя также и горизонтальную ориентацию (чтобы пересекать вертикали); тогда соединители вводятся в горизонтальную из пересекающихся линий и потому повёрнуты на 90°.

Пример показан далее на верхней схеме:

Безусловные переходы в визуализации пересечений

Заметим, что визуализировать схему с неустранёнными пересечениями можно и иначе — не вводя лишних сущностей. Для этого следует вспомнить о визуализации ветвлений в лиоформе; тогда очевидно, что можно просто явно показать БП в развилке, как на нижней схеме.

Затем схема компонуется так, чтобы точка пересечения оказалась внутри одного из БП (при ветвлении или слиянии). Линии БП при этом показывать необязательно; как и в обычных соединителях схем, при чтении ориентируемся на совпадение текстов вершин.

Также БП-соединители можно использовать для показа устранения пересечений в силуэте по шампур-методу; это полезно для изучения преобразования «примитив-силуэт» и обратного, выполняемого для целей программирования, как мы увидим далее. Это значение интереснее, чем временное размыкание пересечений.

В начало страницы

Как это пишется?

Графика виопов имеет соответствия с символами ГОСТ, но значения их там другие.

Вершины всегда используются как часть макроикон Развилка и Переключатель. Текст переключателя в техноязыке предполагается кратким: в выборе указывается только имя переменной выбора.

Условие неформально определяется как высказывание на родном языке, такое, что:

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

Условия м.б. любыми, но специализированы по видам (категориям действительного):

Система координат (СК) м.б. относительной или абсолютной, прямоугольной или иной (цилиндрической, полярной и т.д.). В обыденных описаниях (на неформальном языке) СК часто вводится неявно. На формальном языке СК точно определяется для каждого условия.

Условие ветвления м.б. составным (формулой, где отношения объединяются логическими функциями); такое условие можно визуализировать нелинейной конструкцией, как показано в /1, Гл.9/, при этом логические функции записываются через связи линий. Полученная подсхема есть сложное ветвление с одной особенностью: её вертикали пустые.

Любые условия записываются в виде, зависящем от выбранного языка спецификации:

Запись условия на неформальном и формальном языках (формат и пример)

имеет ли место <то-то{<лог-фун> то-то}> ?

?: [лог-выр]


Расхождение внешнего контура детали М080 с его контрольным шаблоном не превышает норму И поверхность детали достаточно гладкая ?

?: зазор(ВнешКонтур.ШаблМ080,ВнешКонтур.ДетМ080) НормПросвет И чистота(Поверх.М080) ≤ НормКлассЧист

В данном примере формально определена операция зазор, предоставляющая данные о степени совпадения контуров детали и шаблона; практически она м.б. реализована по-разному (на просвет, при помощи щупа, оттиском краски с шаблона на деталь). То же относится и к операции чистота.

В этом примере, однако, условие содержит действия (определения зазора и чистоты); поэтому его можно преобразовать, вынеся операции зазор и чистота в предшествующие операторы присваивания результата каждой операции некоей переменной; в тексте условия используем уже эти переменные.

Графика БП-соединителя имеет в основе дракон-вершины, но чтобы подчеркнуть временность его (неразрешённость в классическом техноязыке), удвоена прямая сторона.

В начало страницы | Оглавление | Версия для печати

Copyright © Жаринов В.Н.

Hosted by uCoz