Визуальный язык ДРАКОН

Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность

Инструменты пользователя

Инструменты сайта


ocenka_texnojazyka_i_shampur-metoda

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
ocenka_texnojazyka_i_shampur-metoda [2012/03/27 13:32]
Владислав Жаринов [Дракон-лексика: уточним состав и смысл]
ocenka_texnojazyka_i_shampur-metoda [2012/04/05 11:45]
Владислав Жаринов [Содержание]
Строка 5: Строка 5:
  
 //"​Задача формализации и унификации множества профессиональных языков с целью обеспечить эффективное взаимопонимание между специалистами любых профессий,​ включая программистов,​ является,​ хоть и важной,​ но, увы, неразрешимой. Положение в корне меняется,​ если ограничиться императивными профессиональными знаниями. Именно эту задачу решает язык ДРАКОН. Он построен путём формализации,​ неклассической структуризации и эргономизации блок-схем алгоритмов и программ,​ описанных в стандартах ГОСТ 19.701-90 и ISO5807-85."//​ (Паронджанов В.Д. Как улучшить работу ума, с. 36) //"​Задача формализации и унификации множества профессиональных языков с целью обеспечить эффективное взаимопонимание между специалистами любых профессий,​ включая программистов,​ является,​ хоть и важной,​ но, увы, неразрешимой. Положение в корне меняется,​ если ограничиться императивными профессиональными знаниями. Именно эту задачу решает язык ДРАКОН. Он построен путём формализации,​ неклассической структуризации и эргономизации блок-схем алгоритмов и программ,​ описанных в стандартах ГОСТ 19.701-90 и ISO5807-85."//​ (Паронджанов В.Д. Как улучшить работу ума, с. 36)
 +
 +Как же решалась эта задача?​ Ключевой была следующая идея. Дракон-схему (граф маршрутов алгоритма) можно вывести путём исчисления над алфавитом подграфов-атомов из аксиомы-заготовки. Атомы образуются из алфавита вершин-[псевдо]операторов и словаря подграфов-макро[псевдо]операторов,​ представляющих понятия предметной области языка.
 +
 +Исчисление,​ разработанное для ДРАКОНа,​ называется //​шампур-методом//​. Оно основано на следующих принципах:​
 +
 +  * формальной эргономизации лексики — определения состава вершин и их графики с учётом реальных операторов и директив языков программирования;​ при этом среди вершин выделяются нелинейные,​ с участием которых образуются подграфы,​ построенные из знаков алфавита и словаря,​ даваемые как единицы лексики языка схем. Такой подграф называется //​атомом//​ и всегда имеет один вход и один выход; также даются исходные конфигурации схем - //​заготовки// ​ (см. ​ [[jazyk:​vizualnyj_sintaksis|Тезисы 1..8, 11..14 шампур-метода]]);​
 +
 +  * вложения - схема наращивается вводом атомов;​ среди рёбер атомов и заготовок выделены такие, что допускают замену на тот или иной атом — т.н. //​рёбра ввода//;​ рёбра указываются вершинами - //​точками ввода//​ (см. [[jazyk:​vizualnyj_sintaksis|Тезисы 9..10, 15..25, 36, 37 шампур-метода]]); ​
 +
 +  * «шампура» - расположения входа и выхода линейной вершины и атома на одной оси, направленной всегда сверху вниз и упорядочения вершин при следовании ​ по вертикали так, что они лежат на одной оси ​ (см. [[jazyk:​vizualnyj_sintaksis| Тезисы 2, 6, 8 шампур-метода]]);​
 +
 +  * главной/​побочной осей — выделения в нелинейной вершине (подграфе) из ряда входов (выходов) //​главного//​ и упорядочения остальных (называемых //​побочными//​) вправо от него (см. [[jazyk:​vizualnyj_sintaksis|Тезисы 7, 8 шампур-метода]]);​
 +
 +  * силуэтной укладки - разделения схемы, называемой «силуэтом»,​ на блоки-ветки,​ в тела которых уложены цепи схемы на плоскости без пересечений;​ промежуточные выходы веток связываются со входами через особую структуру — петлю силуэта - и вершины-соединители ​ (см. [[jazyk:​vizualnyj_sintaksis|Тезис 2 шампур-метода]]);​
 +
 +  * лианного вывода — представления неструктурных топологий схем (которые невозможно получить путём вложения) через операции переноса точек соединения без образования пересечений и/или новых входов в ветки силуэта и/или в циклы (любой формы схемы) (см. [[jazyk:​vizualnyj_sintaksis|Тезисы 26..29 шампур-метода]]).
 +
 +В нелинейном подграфе имеется две и более осей следования.
 +
 +Вход и выход атома представлены рёбрами ввода, между которыми располагается смысловая часть — так сказать,​ «ядро». Оно м.б. единственной вершиной или также подграфом (для сводимых графов - типа ветвления или цикла). Во втором случае рёбра ввода также м.б. в «ядре» атома.
 +
 +Шампур-схема,​ не использующая соединители,​ называется «примитивом» и в общем случае может содержать пересечения цепей. Силуэт и примитив служат формами организации схемы на плоскости-диосцене,​ альтернативными в шампур-методе. Силуэтная укладка также даёт возможность структуризации содержания схемы.
 +
 +При лианном выводе может получиться //​**лианный**//,​ а в силуэте - также и //​**адресный**//​ макроблок (см. [[http://​drakon.su/​biblioteka/​start#​literatura|Паронджанов В.Д. Как улучшить работу ума. Алгоритмы без программистов - это очень просто! М.: Дело, 2001. — С. 259-261.]]) Также может получиться и структура,​ выводимая вложением (Паронджанов называет этот тип макроблока //​**структурным**//;​ можно также //​атомарным//​).
 +
 +На базе этих принципов определены правила вывода схем как теорем исчисления из выбранной аксиомы-заготовки в лексике атомов.
 +
 +Как можно сказать проще? Шампур-метод даёт возможность строить "​слепыш"​ алгоритма так, как мы выводим формулы в булевой алгебре. Только вместо букв - подграфы. И сами формулы имеют вид графов (для ДРАКОНа - схем маршрутов алгоритма). В основе метода — небольшое число базовых принципов:​
 +
 +  * вложения — схема наращивается вводом атомов,​ построенных из знаков алфавита и словаря,​ в специально указанные (точками ввода) линии заготовок и других атомов;​
 +
 +  * шампура — вершины при следовании упорядочиваются по вертикали,​ так что вход всегда сверху,​ выход снизу и лежат на одной оси;
 +
 +  * главной/​побочных вертикалей — выходы развилок упорядочены друг относительно друга так, что не лежащий на главной вертикали выход (называемый побочным) всегда располагается правее главного;​
 +
 +  * силуэта — укладки маршрутов на плоскости в тела веток, промежуточные выходы которых связываются со входами через особую структуру — петлю силуэта - и вершины-соединители.
 +
 +  * операций с лианой — сочинитель также может переносить (с ограничениями) концы побочных маршрутов,​ чтобы образовать конфигурацию схемы, недостижимую вводом атома, но соответствующую конструкциям управления некоторых прогязыков;​ перенос возможен и в примитиве. ​
 +
 +Лианы можно пересадить и так, что получится то же самое, что можно получить и вводом атома; конечно,​ это не имеет особого смысла.
  
 Смысл сказанного можно раскрыть через «формулу новизны»,​ как это и принято для официального описания существа изобретений. Напомним,​ что она имеет вид: «<​Предлагаемый сабж>​ отличается от <​такого-то существующего сабжа>​ тем, что имеет <​такие-то новые фичи>​ и/или <​такие-то фичи>,​ имевшиеся в <​существующем сабже>,​ здесь реализованы с <​такими-то отличиями>​».;​-) Смысл сказанного можно раскрыть через «формулу новизны»,​ как это и принято для официального описания существа изобретений. Напомним,​ что она имеет вид: «<​Предлагаемый сабж>​ отличается от <​такого-то существующего сабжа>​ тем, что имеет <​такие-то новые фичи>​ и/или <​такие-то фичи>,​ имевшиеся в <​существующем сабже>,​ здесь реализованы с <​такими-то отличиями>​».;​-)
Строка 114: Строка 154:
  
 //​**Информатический**//​ уровень возникает как результат информатизации представления о деятельности. При этом выделяется императивное формализованное знание — о маршрутах процесса,​ декларативное — о типах объектов и их структурах,​ активностное — о типах операций и средствах их выполнения (как структуре механизмов «реквизита»). В пределе обязательно представление объектов как чисел (кодов) и операций — как арифметических и/или логических (в смысле булевых функций над двоичными цифрами-битами). Любым «материальным последствиям» исполнения алгоритма тогда соответствуют (в алгоритмической обстановке,​ т.е. в модели контекста процесса) значения чисел/​кодов на определённых линиях связи внутри исполнителя (между механизмами «реквизита») и в его окружении в определённые моменты времени. Так можно описать то, что Паронджанов называет «техпроцессом». Понятно,​ что сочинитель должен представлять себе схему исполнителя вместе с окружением,​ «размеченную» величинами данного процесса. //​**Информатический**//​ уровень возникает как результат информатизации представления о деятельности. При этом выделяется императивное формализованное знание — о маршрутах процесса,​ декларативное — о типах объектов и их структурах,​ активностное — о типах операций и средствах их выполнения (как структуре механизмов «реквизита»). В пределе обязательно представление объектов как чисел (кодов) и операций — как арифметических и/или логических (в смысле булевых функций над двоичными цифрами-битами). Любым «материальным последствиям» исполнения алгоритма тогда соответствуют (в алгоритмической обстановке,​ т.е. в модели контекста процесса) значения чисел/​кодов на определённых линиях связи внутри исполнителя (между механизмами «реквизита») и в его окружении в определённые моменты времени. Так можно описать то, что Паронджанов называет «техпроцессом». Понятно,​ что сочинитель должен представлять себе схему исполнителя вместе с окружением,​ «размеченную» величинами данного процесса.
-===== Вершины и линии схем: смысл — в ГРАФике И Тексте ===== 
  
-По идее когнитивной формализации знаний,​ в ШМ она должна прежде всего удобно вмещать текст (и/или таблицы,​ если они допустимы как содержание вершины некоторого типа). Поэтому из БС-графики заимствуются только такие формы икон и их частей,​ которые и наглядны сами по себе, и удобно и экономично вмещают текст.+Таков пролог нашей истории... :) 
 + 
 +===== Вершины и линии схем: смысл — в ГРАФике И Тексте ===== 
 +По идее когнитивной формализации знаний,​ в ШМ графика должна прежде всего удобно вмещать текст (и/или таблицы,​ если они допустимы как содержание вершины некоторого типа). Поэтому из БС-графики заимствуются только такие формы икон и их частей,​ которые и наглядны сами по себе, и удобно и экономично вмещают текст.
  
 Как следствие,​ по сравнению с блок-схемами некоторые формы блоков получают новые значения (к примеру,​ форма-трапеция – как основа хронизаторов реального времени),​ а другие (скажем,​ ромб) не используются. Как следствие,​ по сравнению с блок-схемами некоторые формы блоков получают новые значения (к примеру,​ форма-трапеция – как основа хронизаторов реального времени),​ а другие (скажем,​ ромб) не используются.
Строка 137: Строка 179:
  
 Далее рассмотрим дракон-алфавит с позиций структурного анализа и синтеза. Далее рассмотрим дракон-алфавит с позиций структурного анализа и синтеза.
 +
 ==== Начало азбуки ДРАКОНа-1:​ вроде, как в БС... да не как в БС ==== ==== Начало азбуки ДРАКОНа-1:​ вроде, как в БС... да не как в БС ====
  
Строка 551: Строка 594:
 ===== Атомарные и лианные структуры:​ когда мудрец похож на обезьяну?​ ===== ===== Атомарные и лианные структуры:​ когда мудрец похож на обезьяну?​ =====
  
-Известно,​ что минимально для представления любой структуры маршрутов достаточно только следования и цикла; менее строго к этому добавляется также ветвление. По ШМ такое представление очевидно выводимо одним вложением соответствующих атомов. Поэтому можно называть получаемые структуры атомарными — такими,​ что тело схемы всегда можно «без остатка» ​подразделить на атомы языка этой схемы ​(и без перекрытия границ подразделений — только с полным вхождением,​ если подразделяется «матрёшка»). Другие упомянутые выше ШМ-операции атомарности тела схемы не нарушают.+Известно,​ что минимально для представления любой структуры маршрутов достаточно только следования и цикла; менее строго к этому добавляется также ветвление. По ШМ такое представление очевидно выводимо одним вложением соответствующих атомов. Поэтому можно называть получаемые структуры атомарными — такими,​ что тело схемы всегда можно «без остатка» (и без перекрытия границ подразделений — только с полным вхождением) подразделить на атомы языка этой схемыа если подразделяется «матрёшка» ​- то на атомы и охватывающие их кроссы (причём вложенный атом/​кросс является нагрузкой вертикали охватывающего). Другие упомянутые выше ШМ-операции атомарности тела схемы не нарушают.
  
 Все теоретически возможные структуры маршрутов не всегда можно получить только вложением. Имеются в виду структуры с БП — произвольным внутри программы (goto) и изнутри цикла на его начало/​конец (т.н. break/​continue-заменители). Для их представления Паронджановым было введено понятие лианной структуры маршрутов и операция ''​пересадки лианы''​. В результате в техноязыке возможно представить структуры циклов с заменителями,​ и сверх того — некоторые случаи goto в разветвлённых алгоритмических структурах (на ближайшие слева/​справа вертикали). Как результат пересадок лианы могут возникать связи, нарушающие атомарность тела примитива (ветки силуэта),​ и их соединения тоже требуют представления явными БП. Все теоретически возможные структуры маршрутов не всегда можно получить только вложением. Имеются в виду структуры с БП — произвольным внутри программы (goto) и изнутри цикла на его начало/​конец (т.н. break/​continue-заменители). Для их представления Паронджановым было введено понятие лианной структуры маршрутов и операция ''​пересадки лианы''​. В результате в техноязыке возможно представить структуры циклов с заменителями,​ и сверх того — некоторые случаи goto в разветвлённых алгоритмических структурах (на ближайшие слева/​справа вертикали). Как результат пересадок лианы могут возникать связи, нарушающие атомарность тела примитива (ветки силуэта),​ и их соединения тоже требуют представления явными БП.
Строка 566: Строка 609:
  
 Недостаток разрешения лианных структур — тот же, что в случае силуэтной укладки схемы — необходимость в явных БП для представления соединителей. Аналогично он и преодолевается. Недостаток разрешения лианных структур — тот же, что в случае силуэтной укладки схемы — необходимость в явных БП для представления соединителей. Аналогично он и преодолевается.
 +
 +Суть различий между атомарными и лианными структурами можно понять,​ раскрыв смысл конструкций каждого вида. Удобно взять «матрёшку» и результат пересадки лиан в ней (с сохранением частичной эквивалентности как тождества части наборов маршрутов). Возьмём конструкцию,​ предложенную Паронджановым для визуализации функции «логическое И» (над вопросами развилок,​ понимаемыми как булевы термы):​
 +
 +{{ :​st_drakonsu_-_ocenka_texnojazyka_i_ishm_html_m450f7821.gif?​ |}}
 +
 +Для этой цели из возможных звеньев ввода нужно использовать только одно — на главной вертикали конструкции. Именно этот маршрут выбирается по И над вопросами развилок.
 +
 +Уже из схем кроссов видно главное отличие лианной конструкции — нарушение эквивалентности с «матрёшкой» (здесь — в части побочных маршрутов). С позиций шампур-метода это несущественно — для того и операции с лианой,​ чтобы вывести то, что не получается вложением...
 +
 +Другое отличие видно при раскрытии смысла — безусловные переходы,​ представляющие соединители из «подвала»,​ частично объединяются с переходами,​ представляющими вершины-разветвители из «шапки».
 +
 +Заметим,​ что для понимания смысла нужно вновь привлекать текст. Во-первых,​ вопросов — каждый вопрос нужно чётко понимать как значение,​ получаемое при ответе и имеющее смысл переменной булева типа. На это косвенно указывает и Паронджанов — при обсуждении визуализации логики в [[http://​drakon.su/​biblioteka/​start#​literatura|"​Как улучшить работу ума...",​ Гл. 9]]. А во-вторых,​ нужно учитывать и ответы — точнее,​ их положение при выходах развилки. Можно показать,​ что от этого зависит интерпретация «шапки» как логического выражения. Мы на этом здесь останавливаться не будем — читатель,​ достаточно разобравшийся в структурном анализе,​ может попробовать сделать это сам.
  
 А что такого в том, чтобы допустить операции с лианой?​ И почему мы говорим,​ что «мудрец в этом случае становится похож на обезъяну»?​ Может, дело в этом описании сочинения лианных структур у Паронджанова:​ А что такого в том, чтобы допустить операции с лианой?​ И почему мы говорим,​ что «мудрец в этом случае становится похож на обезъяну»?​ Может, дело в этом описании сочинения лианных структур у Паронджанова:​
Строка 617: Строка 672:
 Заметим,​ что любая величина может входить более чем в одно условие выбора Дейкстры,​ а интересующее нас подмножество значений у каких-то величин м.б. пустым (т.е. нет таких значений,​ при которых не была бы истинной хотя бы одна из охран выбора). Заметим,​ что любая величина может входить более чем в одно условие выбора Дейкстры,​ а интересующее нас подмножество значений у каких-то величин м.б. пустым (т.е. нет таких значений,​ при которых не была бы истинной хотя бы одна из охран выбора).
  
-Мысль вторая — при произвольном содержании охран может получиться так, что более чем одна из них будет истинной (т.е. «пароль» как конкретный набор значений охранных величин подходит к двум и более ветвям). Это вытекает из структуры выражения охраны,​ как мы сказали в начале раздела. А рабочая точка у нас одна — и надо иметь правило выбора для таких случаев. Принято правило т.н. «//​**ленивых**//​» вычислений — исполнитель предъявляет пароль охранам последовательно,​ и выбирается первый встретившийся вариант,​ охрана которого истинна при данном пароле. На этом следование по «шапке» выбора Дейкстры прекращается. Нетрудно видеть,​ что порядок проверки паролей (вычисления охранных логвыров) задаёт «слепыш» конструкции. ​+Мысль вторая — при произвольном содержании охран может получиться так, что более чем одна из них будет истинной (т.е. «пароль» как конкретный набор значений охранных величин подходит к двум и более ветвям). Это вытекает из структуры выражения охраны,​ как мы сказали в начале раздела. А рабочая точка у нас одна — и надо иметь правило выбора для таких случаев. Принято правило т.н. «//​**ленивых**//​» вычислений — исполнитель предъявляет пароль охранам последовательно,​ и выбирается первый встретившийся вариант,​ охрана которого истинна при данном пароле. На этом следование по «шапке» выбора Дейкстры прекращается. Нетрудно видеть,​ что порядок проверки паролей (вычисления охранных логвыров) задаёт «слепыш» конструкции
 + 
 +Ленивые вычисления предполагают связывание охран посредством т.н. //​**полустрогих**//​ булевых операций. В такой операции порядок операндов зависит от их значений и смысла согласно цели вычисления. Базовыми являются операции and then и or else (подробнее см. [[http://​forum.oberoncore.ru/​viewtopic.php?​p=69127#​p69127|у Мейера в Гл. 5]])
  
 Третья мысль связана уже с кодированием выбора. Полный смысл кода включает контакты для каждого входа и выхода ветви. Для двумерной организации некоторые контакты м.б. лишними — они показаны другим типом пунктира. А вот если иметь в виду, что код в пространстве исполнителя располагается одномерно -то нужно иметь возможность «выложить» все ветви в одну линию (возможно,​ с разрывами). И некоторые или все эти контакты нужно будет реализовать (как команды БП). Третья мысль связана уже с кодированием выбора. Полный смысл кода включает контакты для каждого входа и выхода ветви. Для двумерной организации некоторые контакты м.б. лишними — они показаны другим типом пунктира. А вот если иметь в виду, что код в пространстве исполнителя располагается одномерно -то нужно иметь возможность «выложить» все ветви в одну линию (возможно,​ с разрывами). И некоторые или все эти контакты нужно будет реализовать (как команды БП).
 +
 +Ну и нетрудно увидеть,​ что в случае единственной охраны выбор Дейкстры превращается в развилку (обычную). А выводится он вложением развилки в побочную вертикаль развилки предыдущего уровня вложенности. При этом, хотя по шампур-методу можно продолжать ввод атомов выше и/или ниже вложенной развилки — но в данном случае этого делать не следует. Потому что тогда получится уже не выбор Дейкстры. Поэтому же не следует в охранных выражениях включать вычисления величин,​ используемых в действиях алгоритма — это эквивалентно тому, что перед развилкой находятся виопы ''​Действие''​ с этими вычислениями.
  
 Выбор Дейкстры в своё время был сформулирован в текстовом виде как т.н. конструкция ''​IF-FI'';​ та форма, в которой мы записали текст, известна в англоязычном варианте как ''​IF{-EL[S]IF}-END''​. Разработчиками ряда текстовых ЯВУ был определён частный случай выбора по константам— т.н. ''​CASE[-ELSE]-END''​-конструкция. Именно она естественно изображается в техноязыке как дракон-переключатель. Дракон-развилка есть частный случай выбора Дейкстры по единственному условию. Поэтому и выбор Дейкстры можно записать (в тех языках где нет такой конструкции) как вложение обычных операторов ''​ЕСЛИ-ТО[-ИНАЧЕ]-ВСЁ''​ (также вплотную — т.е. не д.б. операторов ни между ''​ВСЁ'',​ ни между концом предыдущей ''​ТО''​-ветви и текущим ''​ЕСЛИ''​). Выбор Дейкстры в своё время был сформулирован в текстовом виде как т.н. конструкция ''​IF-FI'';​ та форма, в которой мы записали текст, известна в англоязычном варианте как ''​IF{-EL[S]IF}-END''​. Разработчиками ряда текстовых ЯВУ был определён частный случай выбора по константам— т.н. ''​CASE[-ELSE]-END''​-конструкция. Именно она естественно изображается в техноязыке как дракон-переключатель. Дракон-развилка есть частный случай выбора Дейкстры по единственному условию. Поэтому и выбор Дейкстры можно записать (в тех языках где нет такой конструкции) как вложение обычных операторов ''​ЕСЛИ-ТО[-ИНАЧЕ]-ВСЁ''​ (также вплотную — т.е. не д.б. операторов ни между ''​ВСЁ'',​ ни между концом предыдущей ''​ТО''​-ветви и текущим ''​ЕСЛИ''​).
  
-Ну и нетрудно ​увидеть, что в случае единственной охраны выбор Дейкстры ​превращается в развилку (обычную). А выводится он вложением развилки ​в побочную вертикаль ​развилки предыдущего уровня вложенности. При этом, хотя по шампур-методу можно продолжать ввод атомов выше и/или ​ниже вложенной развилки — но в данном случае этого ​делать не следуетПотому что тогда получится уже не выбор Дейкстры. Поэтому же не следует в охранных выражениях включать вычисления величин, используемых в действиях алгоритма — это эквивалентно ​тому, что перед развилкой находятся виопы ''​Действие''​ с этими вычислениями.+Существует определённая аналогия между полустрогими операциями и конструкциями типа выбора Дейкстры с возможностью действий между ​развилками. Однако имеется и различие — в полустрогой ​операции второй операндхрана ​м.б. не определён (и это есть основание для их применения) — тогда как в конструкциях ​типа ''​AND-THEN''​ и ''​OR-ELSE''​ каждая охрана д.б. определена (вычислима). Просто неистинность ​охраны означает, что предыдущие действия неудачны (в смысле цели ​всей конструкции) и нужно выбирать не продолжение целевых действий, а парирование неудачи.
  
 Сказанное означает следующее требование к техноязыку как средству структурной алгоритмизации:​ //​__дракон-лексика должна включать атом выбора Дейкстры как отдельный элемент словаря,​ а правила — добавление/​удаление варианта выбора__//​. Этот атом определяется как переключатель с раскрытием соединителей (в верхней гребёнке). Разница с «матрёшкой» развилок — в запрете ввода атома в рёбра «шапки» и «подвала» - т.е. там же, где и в переключателе. Сказанное означает следующее требование к техноязыку как средству структурной алгоритмизации:​ //​__дракон-лексика должна включать атом выбора Дейкстры как отдельный элемент словаря,​ а правила — добавление/​удаление варианта выбора__//​. Этот атом определяется как переключатель с раскрытием соединителей (в верхней гребёнке). Разница с «матрёшкой» развилок — в запрете ввода атома в рёбра «шапки» и «подвала» - т.е. там же, где и в переключателе.
Строка 682: Строка 741:
  
 Текстовая запись дейкстрала возможна различным образом — в зависимости от конструкций Дейкстры,​ поддерживаемых текстовым ЯВУ. Если имеется только выбор Дейкстры — текст показан вверху. Кстати,​ здесь уточнено,​ что ЦД можно получить вложением выбора Дейкстры в цикл LOOP. Поскольку и этот цикл можно получить из других (об этом мы уже говорили) — то ЦД (как и дейкстрал) в принципе можно написать на любом императивном языке. Текстовая запись дейкстрала возможна различным образом — в зависимости от конструкций Дейкстры,​ поддерживаемых текстовым ЯВУ. Если имеется только выбор Дейкстры — текст показан вверху. Кстати,​ здесь уточнено,​ что ЦД можно получить вложением выбора Дейкстры в цикл LOOP. Поскольку и этот цикл можно получить из других (об этом мы уже говорили) — то ЦД (как и дейкстрал) в принципе можно написать на любом императивном языке.
 +
 +А если в языке имеется ЦД — то можно просто вложить его запись в конструкцию описания алгоритма (программы). Как показано на нижнем варианте текста. Разумеется,​ «впритык» - т.е. перед и после ЦД ничего не д.б. вставлено.
 +
 +ИНАЧЕ-ветвь ЦД присутствует только в обычном дейкстрале:​ при её отсутствии алгоритм «зацикливается». Кстати,​ мы показали выход из ЦД неструктурно,​ как «спагетти» - не на конец этой же конструкции,​ а в другую точку (здесь — ниже выхода). Чтобы это исправить,​ достаточно изменить ключевое слово ''​КОНЕЦ''​ на ''​КЦ''​.
  
 Это можно видеть на схемах ниже. Это можно видеть на схемах ниже.
ocenka_texnojazyka_i_shampur-metoda.txt · Последние изменения: 2012/05/21 19:43 — Владислав Жаринов