Двумерное структурное программированиеИнтеллект› Программирование и компьютерные науки› Алгоритмизация и программирование. Структурное программирование.
Привет, сегодня поговорим про двумерное структурное программирование, обещаю рассказать все что знаю.
Для того чтобы лучше понимать что такое двумерное структурное программирование, структурное программирование , настоятельно рекомендую прочитать все из категории Алгоритмизация и программирование. Структурное программирование. Язык C
Императивная (процедурная) часть языка ДРАКОН опирается на новую парадигму программирования — двумерное (графическое) структурное программирование Правила двумерного структурного программирования существенно отличаются от классического одномерного (текстового) структурного программирования .
До появления компьютерной графики методология классического структурного программирования была наилучшим решением.
Проблемы классического структурного программирования
На практике приходится сталкиваться со случаями, в которых структурное программирование приводит к плохому выражению алгоритмической логики.
Такие случаи характерны в первую очередь для алгоритмов управляющего, реактивного, событийного характера (в противовес алгоритмам информационно-преобразующего, вычислительного характера).
Рассмотрим первый пример — последовательность действий, перемежающаяся проверками успешности. Результатом такой последовательности могут быть два исхода — успех и отказ.
Ситуация типична для системного программирования. Сначала приведем фрагмент алгоритма на визуальном языке ДРАКОН, поскольку он с наибольшей точностью выражает суть дела (рис. 1а).
Далее приведем пример кодирования в структурном стиле, который «болеет» глубокой вложенностью, многократным дублированием и неудобством добавления новых проверок (рис. 1б).
И, наконец, приведем популярный в системном программировании способ обойти эти недостатки, путем введения явной переменной состояния (рис. 1в).
Для управляющих алгоритмов характерно то, что каждый алгоритмический блок может вырабатывать некоторое решение, завершаться наборов исходов.
Приведенный пример — простейший, блок имеет два исхода «успех» - «неуспех». В более сложных случаях исходов у блока гораздо больше.
Смысл слова «блок» в данном случае иной, нежели принят в структурном программировании. Блок — это некая замкнутая часть системы, устанавливающая после своего завершения различимый для окружения результат.
Рис. 1а
Второй пример связан с циклическим алгоритмом, точно так же имеющим два исхода. Это обычный линейный поиск (являющийся второй базовой схемой циклов ).
Приведем сначала запись в классическом виде (Рисунок 2а), а затем изобразим ее с помощью визуальной нотации ДРАКОНа (Рисунок 2б)
Рис. 2а
Рис . Об этом говорит сайт
https://intellect.icu . 2б
Мы видим, что в случае текста опять присутствует дублирование проверки условия. Визуальная же схема ярко отражает семантику происходящего: вычисление конъюнкции отрицания условий представляется алгоритмическим блоком из двух проверок с тремя исходами. Перечислим эти исходы слева направо:
1 — первое условие истинно, второе не вычислялось,
2 — первое условие ложно, второе истинно,
3 — оба условия ложны.
Эти исходы соответствуют принятию одного из трех решений:
1 — искомый элемент отсутствует в последовательности,
2 — искомый элемент обнаружен и совпадает с текущим,
3 — необходимо продолжить поиск.
В случае же текстовой записи с помощью цикла WHILE вся информация о том, по причине какого конъюнкта завершился цикл, просто теряется, маршруты вычислений сходятся в одной точке выхода из цикла, после чего необходимо вновь выполнять распознавание ситуации. 3.
К двумерному структурному программированию
Приведенные примеры являются простейшей иллюстрацией следующих тезисов:
. возможный маршрут выполнения блока алгоритма непосредственно связан с возможными семантическими состояниями системы;
. если разрешенные топологии маршрутов ограничены, то выражать семантику состояний системы приходится либо путем дублирования фрагментов, либо с помощью дополнительных переменных состояния (проявление более общего системного принципа, что проблему, идущую от природы задачи, нельзя победить формально, она просто окажется вытесненной на другой уровень формы);
. лучше, если топология маршрутов в алгоритме позволяет выражать семантику состояний системы (в частности, возможные исходы блока) явно; 124. как следствие, следует каким-либо образом разрешить работу с несколькими выходами из блока;
. поскольку текст является одномерным, невозможно удовлетворительно представлять в нем более сложные топологии, нежели классическая структурная (линейно-блочный граф), поэтому их запрещение является, видимо, наилучшим решением;
. используя двумерную графическую нотацию, возможно удовлетворительно представлять более широкий класс топологий, чем классическая структурная. Последовательность действий выстраивается по вертикали сверху сниз, переключение семантических состояний системы (переходы между маршрутами) выполняются по горизонтали слева направо (расщепление) и справа налево (объединение).
Р-технология программированияПервый шаг по направлению к двумерному структурному программированию был сделан в СССР в рамках Р-технологии производства программ, или «технологии двумерного программирования» , созданной в Институте кибернетики имени В. М. Глушкова в 1970 годах[99].
Графическая система Р-технологии программирования закреплена в стандартах ГОСТ 19.005-85 , ГОСТ Р ИСО/МЭК 8631—94 и международном стандарте ISО 8631Н.
Автор Р-технологии программирования доктор физико-математических наук профессор Игорь Вельбицкий предложил пересмотреть понятие «структура программы». По его мнению, «структура — понятие многомерное.
Поэтому отображение этого понятия с помощью линейных текстов (последовательности операторов) сводит практически на нет преимущества структурного подхода.
Огромные ассоциативные возможности зрительного аппарата и аппарата мышления человека используются практически вхолостую — для распознавания структурных образов в виде единообразной последовательности символов»[101].
Правила двумерного структурного программирования существенно отличаются от классического одномерного (текстового) структурного программирования[96].
Идеи классического структурного программирования разрабатывались, когда компьютерная графика фактически еще не существовала и основным инструментом алгоритмиста и программиста был одномерный (линейный или ступенчатый) текст.
До появления компьютерной графики методология классического структурного программирования была наилучшим решением.
Замена ключевых слов на управляющую графикуС появлением компьютерной графики ситуация изменилась. Используя выразительные средства графики, появилась возможность видоизменить, развить и дополнить три базовые (текстовые) управляющие конструкции (последовательность, ветвление, цикл), а также полностью отказаться от ключевых слов if, then, else, case, switch, break, while, do, repeat, until, for, foreach, continue, loop, exit, when, last и т. д. и заменить их на управляющую графику, то есть использовать двумерное структурное программирование .
Слабое место классического структурного программирования и текстового представления алгоритмов и программ заключается в недостатке выразительных средств.
Следствием являются ограничения и запреты. Эти ограничения и запреты вытекают из природы текста, из природы текстового представления управляющих структур.
Недостаток выразительных средств, проявляющийся через ограничения и запреты, тормозит повышение производительности труда алгоритмистов и программистов. В рамках текстового представления управляющих структур устранить эти ограничения и запреты невозможно[43][96][103].
По мнению разработчиков языка ДРАКОН, чтобы добиться улучшения, надо перейти от одномерного (классического) структурного программирования к двумерному (графическому) структурному программированию.
Многие ограничения и запреты, неизбежные при текстовом структурном программировании, во многих случаях противоречат здравому смыслу, затрудняют понимание алгоритмов и программ, искажают нормальный ход человеческой мысли.
Недопустимо запрещать правильный процесс мышления. Его надо разрешить. Шампур-метод и язык ДРАКОН устраняют этот недостаток[K 11].
При использовании шампур-метода набор управляющих ключевых слов (идентификаторов) текстового структурного программирования становится ненужным.
При визуальном структурном подходе программист работает только с чертежом программы (дракон-схемой), не обращаясь к ее текстовому представлению.
Точно так же программист, работающий, например, на Дельфи, не обращается к ассемблеру и машинному коду — они для него просто не существуют.
Во многих случаях (список которых еще предстоит уточнить) желательно отказаться от текстовых управляющих структур, заменив их управляющей графикой .
Создатели ДРАКОНа говорят, что это не просто новый язык (новое семейство языков), а новый взгляд на императивное (процедурное) программирование и новое мировоззрение . Наибольшую трудность в течение длительного времени представляли математика и эргономика блок-схем.
Нужно было создать математически строгий метод формализации блок-схем, позволяющий превратить блок-схемы в программу, пригодную для ввода в компьютер и трансляции в объектный модульпрограммы.
При создании языка ДРАКОН эта задача была решена с помощью визуального логического исчисления (исчисления икон) которое лежит в основе графического синтаксиса языка ДРАКОН ; метода Ашкрофта-Манны , который является математическим обоснованием дракон-схемы «силуэт»; двумерного структурного программирования .
Одновременно была решена задача эргономизации блок-схем, то есть задача приспособления блок-схем для наиболее удобногочеловеческого восприятия и понимания .
См. также
структурное программирование
Функциональное программирование
Логическое программирование
Автоматное программирование
Процедурное программирование
Объектно-ориентированное программирование
Прототипное программирование
Аспектно-ориентированное программирование
Компонентно-ориентированное программирование
Понравилась статья о двумерное структурное программирование? Откомментируйте её
Надеюсь, что теперь ты понял что такое двумерное структурное программирование, структурное программирование и для чего все это нужно, а если не понял, или есть замечания, то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу.
Для того чтобы глубже понять настоятелно рекомендую изучить комплексно всю информацию в категории Алгоритмизация и программирование. Структурное программирование.
Наша цель - создание искусственного разума!
Лекции и учебник по "Алгоритмизация и программирование. Структурное программирование. Язык C"
1. Структурное программирование понятие Алгоритм и программа
2. Процедурное (алгоритмическое) программирование
3. Основы алгоритмизации Алгоритм. блок-схемы
Источник:
https://intellect.icu/dvumernoe-struktu ... vanie-4564