Участник:Владимир Паронджанов/Черновик 9

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Правильно построенная блок-схема

[править | править код]

Дракон-схема — это блок-схема с точно определенными свойствами. В этом разделе дан сравнительный анализ свойств и показано, что дракон-схема является правильно составленной блок-схемой.

Блок-схема: достоинства и недостатки

[править | править код]

Блок-схемы популярны, так как они графически отображают логику программы с помощью стандартных геометрических фигур и соединительных линий[1]. Они представляют собой «интуитивно понятный метод представления управляющей последовательности алгоритма»[1].

Вместе с тем, блок-схемы подвергаются критике. Противники блок-схем утверждают, что они не поддаются формализации, поэтому их «нельзя использовать как программу для непосредственного ввода в машину»[2]. Блок-схемы не согласуются со структурным программированием, поскольку в значительной степени ориентированы на использование goto[3]. Блок-схемы широко использовались в течение ряда лет, однако сейчас их популярность падает; они «затемняют особенности программ, созданных по правилам структурного программирования»[4].

При достаточно большой степени детализации блок-схемы становятся «громоздкими и теряют своё основное достоинство — наглядность структуры алгоритма»[5]. Обозримыми и понятными являются блок-схемы только для небольших алгоритмов[6]. Доктор технических наук профессор Михаил Лекарев полагает, что если для простой задачи блок-схемы алгоритмов обеспечивают безусловную наглядность, то с ростом сложности ситуация меняется на противоположную: логическая структура алгоритма становится трудной для восприятия и исчезает, превращаясь в «клубок спагетти»[7][8].

Блок-схемы продолжают оставаться самой известной нотацией для записи алгоритмов[6]. Однако сегодня эта нотация для программистов «утратила свою актуальность»[6]. Основной недостаток блок-схем заключается в том, что они не приучают к аккуратности при разработке алгоритма. Ромб можно поставить в любом месте блок-схемы, а от него повести выходы на какие угодно участки. «Так можно быстро превратить программу в запутанный лабиринт, разобраться в котором через некоторое время не сможет даже сам её автор»[9].

Дракон-схема — это упорядоченная блок-схема

[править | править код]
Пример блок-схемы алгоритма на языке ДРАКОН — дракон-схемы

Блок-схемы не позволяют изображать сложные алгоритмы с необходимой полнотой и наглядностью. Нужно устранить недостатки и упорядочить блок-схемы. Упорядоченные блок-схемы (дракон-схемы) подчиняются строгим формальным правилам[10] и правилам эргономичных алгоритмов[11].

В отличие от классических блок-схем, упорядоченные дракон-схемы пригодны для формализованной записи и автоматического получения исполняемого кода[12]. Запрещено пересечение линий, которое путает читателей и затрудняет понимание алгоритма, удалены другие недочеты. Дракон-схемы позволяют ликвидировать или существенно ослабить недостатки блок-схем[12].

Упорядоченные блок-схемы специально сконструированы таким образом, чтобы превратить сложный алгоритм в удобную схему, обеспечивающую быстрое и легкое понимание[13]. По мнению специалистов, благодаря использованию дракон-схем алгоритмы становятся более понятными, доходчивыми, ясными, прозрачными[14][11][15]. Эргономичные методы, применяемые в дракон-схемах, существенно улучшают восприятие алгоритмов[16]. Язык упорядоченных блок-схем обеспечивает разработку сложных алгоритмов с сохранением наглядности даже для многостраничных схем[17][18].

Имеются медицинские учебники, в которых используются наглядные графические инструкции для медицинского персонала, написанные в виде упорядоченных блок-схем на языке ДРАКОН[19][20][21][22].

Рекомендации Эдсгера Дейкстры по совершенствованию блок-схем

[править | править код]

В классической работе «Заметки по структурному программированию» Эдсгер Дейкстра использовал блок-схемы для анализа структуры программ и предложил четыре принципа структуризации блок-схем:

  1. Принцип ограничения топологии блок-схем. Структурная программа должна приводить «к ограничению топологии блок-схем по сравнению с различными блок-схемами, которые могут быть получены, если разрешить проведение стрелок из любого блока в любой другой блок. Отказавшись от большого разнообразия блок-схем и ограничившись данными тремя типами операторов управления [следование, ветвление, цикл], мы следуем тем самым некоей последовательностной дисциплине»[23].
  2. Принцип вертикальной ориентации входов и выходов блок-схем. Имея в виду шесть типовых блок-схем (if-do, if-then-else, case-of, while-do, repeat-until), Дейкстра пишет: «Общее свойство всех этих блок-схем состоит в том, что у каждой из них один вход вверху и один выход внизу»[24].
  3. Принцип единой вертикали. Вход и выход каждой типовой блок-схемы должны лежать на одной вертикали[K 1].
  4. Принцип нанизывания блок-схем на единую вертикаль. Типовые блок-схемы следует соединять между собой, не допуская изломов соединительных линий, чтобы выход верхней и вход нижней блок-схемы лежали на одной вертикали[K 2].

Обычная практика разработки и вычерчивания блок-схем не учитывает рекомендации Дейкстры. Это объясняется тем, что принципы Дейкстры не получили своего закрепления в стандартах на блок-схемы — международном стандарте ISO 5807:85 и ГОСТ 19.701—90.

Усовершенствованная блок-схема

[править | править код]

Рекомендации Эдсгера Дейкстры очень важны, так как они открывают путь к совершенствованию блок-схем, делают их более удобными и наглядными. Дракон-схемы — это усовершенствованные блок-схемы, построенные на основе принципов Дейкстры[27]. Принципы необходимы потому, что они позволяют осуществить структуризацию и формализацию схем программ.

Идея ограничения топологии схем программ с целью их лучшей структуризации и формализации лежит в основе визуального языка программирования ДРАКОН и построенного на его основе шампур-метода как абстрактной визуальной модели программы[28].

Дракон-схемы есть не что иное, как правильно составленные блок-схемы[29]. Язык ДРАКОН строится на основе блок-схем с целью их улучшения[30]. Использование эргономичных правил ДРАКОНа позволяет упорядочить графический чертеж алгоритма и обеспечить более эффективное восприятие блок-схемы человеком[31][32].

Методы проектирования, ориентированные на дракон-схемы, позволяют преодолеть алгоритмическую сложность[33]. Существенно, что усовершенствованные блок-схемы, построенные по правилам языка ДРАКОН, обеспечивают разработку сложных алгоритмов «с сохранением наглядности даже для многостраничных схем»[34]. По мнению некоторых ученых, хотя стандарты на блок-схемы считаются действующими, фактически они давно устарели. С появлением дракон-схем блок-схемы потеряли свое значение, так как они во всех отношениях уступают дракон-схемам[35]. Для построения блок-схем наиболее рационально использовать алгоритмический язык ДРАКОН[36].

Достоинства правильно построенной блок-схемы

[править | править код]

Для обозначения блок-схем, построенных по правилам языка ДРАКОН, используется термин «дракон-схемы»[12]. Тесная связь этих двух терминов отчетливо видна по-английски: flowchart и drakon-chart.

Дракон-схема — это упорядоченная и усовершенствованная на основании принципов Дейкстры блок-схема. При разработке единого стандарта на блок-схемы, снабженного компьютерной поддержкой и рассчитанного на «постепенное внедрение во всех отраслях и предметных областях, целесообразно взять за основу язык ДРАКОН»[37].

В отличие от блок-схем, ДРАКОН как язык программирования удовлетворяет требованиям математической строгости: из исходного чертежа можно однозначно получать объектный код[38]. Дракон-схемы строятся по определенным правилам, аналогичным структурному программированию, но эти правила более свободны и выразительны[38]. В отличие от блок-схем, правила языка ДРАКОН однозначно определяют взаимное расположение графических элементов (блоков) на листе чертежа и на экране компьютера[38]. Дракон-схемы наследуют все достоинства блок-схем и устраняют их недостатки[39].

ДРАКОН — это эргономичный стандарт для графического представления учебной информации. Язык ДРАКОН учит методистов и учителей правильному составлению блок-схем[40]. Визуальный язык ДРАКОН образует наглядную среду для первоначального обучения программированию и мог бы быть весьма полезен при организации школьных курсов информатики[33]. Блок-схемы, нарисованные по правилам языка ДРАКОН, отличаются четкостью, наглядностью и прозрачностью структуры. А наглядность и доходчивость алгоритмов — это именно то, чего так остро недостает школьным учебникам[41].

Примеры правильно построенных блок-схем

[править | править код]
Оператор ветвления на дракон-схеме

На рисунке (справа) показана дракон-схема «развилка» — графический оператор ветвления с двумя ветвями. Икона «вопрос» имеет один вход сверху и два выхода: вниз и вправо. Выход влево (в отличие от блок-схем) запрещен и никогда не используется[42]. У остальных икон входы и выходы ориентированы строго по вертикали. Благодаря продуманной графической дисциплине в языке ДРАКОН применяются правила, облегчающие понимание смысла алгоритма и обеспечивающие быстрое восприятие читателем алгоритма в целом[43].

В дракон-схеме маршруты алгоритма следует рисовать не хаотично, а упорядоченно — по принципу: «Чем правее — тем хуже». Это значит: чем правее расположен маршрут, тем более неприятную ситуацию он описывает. На рисунке (справа) два маршрута. Они соответствуют двум ситуациям. Если нет дождя — это хорошо, если дождь идет — плохо. Главный маршрут алгоритма (основная ветвь программы) идет по левой вертикали (по шампуру), демонстрируя, что все хорошо. Переход вправо (на правую вертикаль) описывает нежелательную ситуацию, потому что неприятно гулять под дождем.

Правило «Чем правее, тем хуже» — одно из многих правил, которые в совокупности значительно облегчают чтение, понимание, анализ и разработку сложных алгоритмов[44].

Цикл ДО (do–while)

[править | править код]
Оператор «Цикл ДО» на дракон-схеме

На рисунке (справа) показана дракон-схема «Цикл ДО» — графический оператор do–while. Спортсмен или культурист, чтобы накачать мускулатуру, поднимает штангу до тех пор, пока не устанет. Если устал, тренировка прекращается.

В цикле ДО сначала выполняется действие (Подними вес) и только после этого задается вопрос (Устал?).

Икона «вопрос» изображается так же, как и в предыдущем случае. Она имеет один вход сверху и два выхода: вниз и вправо. Выход влево запрещен.

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

Иллюстрация справа демонстрирует не программу и не поток управления (control flow), а поток работ (workflow). Язык ДРАКОН позволяет единообразно описывать потоки управления и потоки работ, используя единый набор графических операторов. Суть в том, что ДРАКОН является не только языком программирования, но и языком описания бизнес-процессов, учебным языком для изучения медицинских алгоритмов и т.д.

Цикл ПОКА (while)

[править | править код]
Оператор «Цикл ПОКА» на дракон-схеме

На рисунке (справа) показана дракон-схема «Цикл ПОКА» — графический оператор while. Человек проголодался, но дома нет ничего кроме котлет. Он ест одну котлету за другой, пока не насытится.

В цикле ПОКА сначала задается вопрос (Голодный?) и только после этого выполняется (или не выполняется) действие (Съешь котлетку). В самом деле, если человек с самого начала не голоден, он обедать не станет. На рисунке отказ от еды изображен так. Если перед обедом на вопрос «Голодный?» получен отрицательный ответ, значит, из иконы «Вопрос» выходим вниз через Нет и действие «Съешь котлетку» ни разу не выполняется.

Рассмотрим три последних примера. Все они нарисованы единообразно — во всех схемах начало и конец расположены на одной вертикали (на шампуре), причем эта вертикаль не имеет разрывов и изломов. Подобное единообразие содействует стандартизации дракон-схем и облегчает их запоминание.

Ориентация входных и выходных линий графических фигур

[править | править код]

Еще одно отличие дракон-схем от блок-схем состоит в том, что ориентация входных и выходных линий графоэлементов (икон) в дракон-схемах задана однозначно, а в блок-схемах — неоднозначно. Например, в блок-схемах входную линию можно подводить к графическому блоку (символу) не одним, а двумя разными способами — не только сверху, но и слева. Выходную линию можно присоединять к блоку (символу) не одним, а тремя способами — не только внизу, но и справа[K 3] и даже слева[K 4].

В языке ДРАКОН этот недостаток устранен с помощью принципов Эдсгера Дейкстры, использованных для однозначного упорядочивания входных и выходных линий графических фигур.

  1. 1 2 Робертсон Л. А. Программирование — это просто. Пошаговый подход / Перевод с 4-го английского издания. — М.: БИНОМ. Лаборатория знаний, 2008. — С. 265. — 383 с. — (Программисту). — ISBN 978-5-94774-318-0.
  2. Вельбицкий И. В. № 13 // Знакомьтесь, Р-технология // НТР: Проблемы и решения. — 1987. — С. 5.
  3. Майерс Г. Надежность программного обеспечения. — М.: Мир, 1980. — С. 150.
  4. Толковый словарь по вычислительным системам. — М.: Машиностроение, 1991. — С. 193. — 560 с. — ISBN 5-217-00617-X.
  5. Семёнов Н. М. Программирование и основы алгоритмизации. Учебное пособие. — Томск: Томский политехнический университет, 2009. — С. 71. — 90 с.
  6. 1 2 3 Дробушевич Л. Ф., Конах В. В. Анализ топологий визуальных нотаций для записи алгоритмов и программ = Information Technologies and Systems 2011 (ITS 2011) : Proceeding of The International Conference, BSUIR, Minsk, 26th October 2011. / Л. Ю. Шилин и др.. — Минск: БГУИР, 2011. — С. 212—213. — 306 с. — (Информационные технологии и системы 2011 (ИТС 2011) : материалы международной научной конференции, БГУИР, Минск, Беларусь, 26 октября 2011 г.). — ISBN 978-985-488-816-3.
  7. Лекарев М. Ф. Визуальный формализм для разработки программного обеспечения. — Санкт-Петербургский гос. техн. ун-т. — СПб.: 1997. — 95с.
  8. Пышкин Е. В. Структуры данных и алгоритмы: реализация на C/C++. — Санкт-Петербургский гос. политехнический ун-т. — СПб., ФТК, СПбГПУ, 2009.- 200с. — С. 35.
  9. Очков В. Ф., Пухначев Ю. В. 128 советов начинающему программисту. — М.: Энергоатомиздат, 1992. — С. 21.
  10. Павлова Н. Ф. Стратегическое планирование развития территориальных социальных образований в схемах. — Екатеринбург: Уральское отделение РАН, 2002. — с=25-33 с. — ISBN 5-7691-1400-2.
  11. 1 2 Окулова Л. П. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики. Вестник. Наука и практика. (29 мая 2012). — Материалы конференции «Инновации и научные исследования, а также их применение на практике. Варшава. Дата обращения: 15 февраля 2014.
  12. 1 2 3 Титова Е. В. Алгоритмический язык Дракон в лингвистике // Сборник работ 68-й научной конференции студентов и аспирантов Белорусского государственного университета в трех частях. Часть 3. 16—18 мая 2011 г. — Минск: БГУ, 2011.— 279с. — С. 50–52. accessdate=4 августа 2014 года
  13. Корзина М.И., Гурьев А.Т., Лысенко В.А., Сальникова П.Ю., Майоров И.С. Концепция магистерской программы «Информационные технологии в дизайне» в рамках направления подготовки «230400 Информационные системы и технологии» // Проблемы подготовки кадров в сфере инфокоммуникационных технологий. — Санкт-Петербургская научно-практическая конференция. 18-20 мая 2011 г. — Санкт-Петербург, Сборник трудов конференции / Санкт-Петербургское Общество информатики, вычислительной техники, систем связи и управления (СПОИСУ). – СПб., 2011. – 92с. — ISBN 978-5-905687-44-0
  14. Величко, В. Є. (2014) Використання технології візуального програмування в університетській освіті засобами вільного програмного забезпечення. Вісник Житомирського державного університету імені Івана Франка (76). pp. 51-55. ISSN 2076-6173
  15. Хайдаров К. А. Язык визуального программирования ДРАКОН. Дата обращения: 28 декабря 2012. Архивировано 6 января 2013 года.
  16. Шелехов В.И. Предикатная программа вставки в АВЛ-дерево. — Работа выполнена при поддержке РФФИ, грант № 12-01-00686. — Институт систем информатики имени А. П. Ершова СО РАН
  17. Фокин Ю. Г. Теория и технология обучения: деятельностный подход: учебное пособие для студентов высших учебных заведений. — 3-е изд., испр.. — М.: Издательский центр «Академия», 2008. — С. 233. — 240 с. — ISBN 978-5-7695-5259-5.
  18. Дерипаска А. О. Визуальный язык для платформы Ubiq Mobile в среде QReal. — Курсовая работа. Научный руководитель: Литвинов Ю. В. старший преподаватель кафедры Системного программирования Математико-механического факультета СПбГУ. — Санкт-Петербург, 2013. accessdate=5 августа 2014 года
  19. Начальная неотложная акушерская помощь. Учебник. / Под ред. профессора Рута Йоланта Надишаускене. — Литва: Центр исследования кризисов, Университет наук здоровья Литвы, 2012. — 204 с. — ISBN 978-609-8033-61-8.
  20. Специализированная реанимация новорожденного. Учебник. / Под ред. профессора Рута Йоланта Надишаускене. — Литва: Центр исследования кризисов, Университет наук здоровья Литвы, 2012. — 396 с. — ISBN 978-609-8033-73-1.
  21. Травма. Учебник. / Под ред. докт. мед. наук Динаса Вайткайтиса. — Литва: Центр исследования кризисов, Университет наук здоровья Литвы, 2012. — 440 с. — ISBN 978-609-8033-62-5.
  22. Неотложная медицинская помощь. Материалы курса. — Литва: Центр исследования кризисов, Каунасский медицинский университет, 2012. — 265 с.
  23. Дейкстра Э. Заметки по структурному программированию. // Дал У., Дейкстра Э., Хоор К. Структурное программирование. — М.: Мир, 1975. — С. 7–97 (См. стр. 28).
  24. Дейкстра Э. Заметки по структурному программированию. // Дал У., Дейкстра Э., Хоор К. Структурное программирование. — М.: Мир, 1975. — С. 7–97 (См. стр. 27).
  25. Дейкстра Э. Заметки по структурному программированию. // Дал У., Дейкстра Э., Хоор К. Структурное программирование. — М.: Мир, 1975. — С. 7–97.
  26. Дейкстра Э. Заметки по структурному программированию. // Дал У., Дейкстра Э., Хоор К. Структурное программирование. — М.: Мир, 1975. — С. 7–97.
  27. Паронджанов, 2001, с. 248—266.
  28. Пышкин, 2005, с. 104.
  29. Дробушевич Л. Ф., Конах В. В. ч. 1 // Способы визуализации алгоритмов и программ / С. В. Абламейко и др.. — Минск: БГУ, 2011. — С. 347. — 519 с. — (Международный конгресс по информатике : информационные системы и технологии : материалы международного научного конгресса (Республика Беларусь, Минск, 31 окт. — 3 нояб. 2011 г. в 2 ч.)). — ISBN 978-985-518-563-6.
  30. Павлова, 2002, с. 30.
  31. Атепалихин М. С. Эргономичное представление учебной информации как фактор формирования методологической культуры обучающихся // Развитие методологических знаний у обучаемых: Материалы Всероссийского научно-методологического семинара, Новый Уренгой, 11 декабря 2009 г. / Отв. ред. Г. А. Дзида. Филиал Тюменского гос. университета, Новый Уренгой, 2010. — 194 с.
  32. Ошибка в сносках?: Неверный тег <ref>; для сносок autogenerated18 не указан текст
  33. 1 2 Пышкин, 2005, с. 283.
  34. Фокин Ю. Г. Теория и технология обучения: деятельностный подход: учебное пособие для студентов высших учебных заведений. — 3-е изд., испр.. — М.: Издательский центр «Академия», 2008. — С. 233. — 240 с. — ISBN 978-5-7695-5259-5.
  35. Паронджанов, 2012, с. 32.
  36. Бубенцов В. Ю. Подходы к анализу исходной ситуации // Сборник докладов конференции "Теория и практика решения изобретательских задач", Москва 2007. — 328с. — С. 21—27. accessdate=4 августа 2014 года
  37. Безель Я. Б. № 4 // Можно ли улучшить работу ума? Новый взгляд на проблему. Размышления над новой книгой. — 2003. — Т. 73. — С. 365. — (Вестник Российской академии наук).
  38. 1 2 3 Ошибка в сносках?: Неверный тег <ref>; для сносок autogenerated24 не указан текст
  39. Паронджанов, 2001, с. 266.
  40. Беляков Е. 13 марта 2001, № 10 // Новый алгоритм: раздевайся и быстро ложись спать! Диалог на языке «Дракона». — С. 16. — (Учительская газета).
  41. Окулова Л. П. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики. Вестник. Наука и практика. (29 мая 2012). — Материалы конференции «Инновации и научные исследования, а также их применение на практике. Варшава. Дата обращения: 4 августа 2014.
  42. Паронджанов, 2012, с. 21.
  43. Пышкин, 2005, с. 281.
  44. Mitkin S.B. DRAKON: The Human Revolution in Understanding Programs 11-12 (октябрь, 2011). Архивировано 6 января 2013 года.
  45. ГОСТ 19.701—90. Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. — Издательство стандартов, 1991. — С. 14.
  46. ГОСТ 19.701—90. Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. — Издательство стандартов, 1991. — С. 23.


Ошибка в сносках?: Для существующих тегов <ref> группы «K» не найдено соответствующего тега <references group="K"/>