Диаграмма Насси — Шнейдермана

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

Диаграмма Насси — Шнейдермана (англ. Nassi — Shneiderman diagram) — это графический способ представления структурированных алгоритмов и программ, разработанный в 1972 году американскими аспирантами Беном Шнейдерманом и Айзеком Насси.

История[править | править исходный текст]

Поскольку в структурном программировании не используется безусловный переход, то Бен Шнейдерман решил, что для записи структурированных алгоритмов не нужны используемые в блок-схемах стрелки. Придумав разные способы изображения основных структур управления (последовательностей, ветвлений и циклов), он затем вместе с Айзеком Насси подробно проработал свою идею. Вместе они написали статью «Техника блок-схем для структурного программирования», которая была опубликована в научном журнале «SIGPLAN Notices» в августе 1973 года.

Диаграммы Насси — Шнейдермана получили широкое распространение в некоторых странах, особенно в Германии, где для них даже был разработан официальный стандарт Немецким институтом по стандартизации: DIN 66261.

Диаграммы Насси — Шнейдермана имеют ряд преимуществ перед блок-схемами при разработке структурированных алгоритмов и программ:

  • Запись является более компактной (в первую очередь за счёт отсутствия стрелок между элементами).
  • Изобразив алгоритм или программу в виде диаграммы Насси — Шнейдермана, можно быть гарантировано уверенным в том, что принципы структурного программирования соблюдены (при использовании блок-схем можно случайно получить неструктурированный алгоритм, если быть невнимательным).
  • Диаграммы Насси — Шнейдермана удобнее использовать для пошаговой детализации задачи, так как они тоже строятся по принципу пошаговой детализации — изначально диаграмма представляет собой один прямоугольник (исходная задача), затем в нём рисуется некоторая структура управления, в которой имеется несколько прямоугольников (подзадач исходной задачи), и далее с каждым прямоугольником (подзадачей) может быть проделана та же операция.

Условные обозначения элементов в диаграммах[править | править исходный текст]

Все элементы диаграммы Насси — Шнейдермана имеют прямоугольную форму и различаются только внутренним содержимым.

Простое действие[править | править исходный текст]

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

Пример записи подзадачи:

Найти наименьший элемент в массиве

Пример записи выполняемой команды (при записи программы на языке Pascal):

writeln('Hello world!')

Последовательность[править | править исходный текст]

При записи структуры последовательного выполнения элементы изображаются вертикально один за другим. При этом все элементы последовательности должны иметь одинаковую ширину — за счёт этого вся последовательность тоже имеет прямоугольную форму. Например:

Открыть файл на чтение
Прочитать первую строку файла
Вывести прочитанное значение на экран
Закрыть файл

Запись этого же алгоритма в виде диаграммы Насси — Шнейдермана с использованием языка Pascal:

reset(f)
readln(f, str)
writeln(str)
close(f)

Простое ветвление[править | править исходный текст]

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

Внешний вид простого ветвления

Многовариантный выбор[править | править исходный текст]

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

Повтор с предусловием[править | править исходный текст]

Структура повтора с условием в начале изображается как прямоугольник, внутри которого в правой нижней части нарисован ещё один прямоугольник. Над внутренним прямоугольником записывается заголовок цикла, а внутри него — тело цикла.

Пример записи цикла с предусловием (в данном примере тело цикла является последовательностью из двух действий):

Пример повтора с предусловием

Повтор с постусловием[править | править исходный текст]

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

Пример записи цикла с постусловием (в данном примере тело цикла является последовательностью из двух действий):

Пример повтора с постусловием

Повтор со счётчиком[править | править исходный текст]

Внутренний прямоугольник рисуется в правой части и не касается верха и низа внешнего прямоугольника. Условие цикла записывается сверху.

См. также[править | править исходный текст]

Ссылки[править | править исходный текст]

Программное обеспечение[править | править исходный текст]

  • EasyCODE – среда разработки диаграмм Насси-Шнейдермана для нескольких языков программирования (C#, C++, C, Java, Cobol)
  • Atego's BlueRiverX32 – среда разработки диаграмм Насси-Шнейдермана для C и C++
  • Structorizer – кроссплатформенный редактор диаграмм Насси-Шнейдермана (операционные системы Linux, Mac OS X, Microsoft Windows)
  • Struktograaf – редактор диаграмм Насси-Шнейдермана для операционной системы Microsoft Windows