Диаграмма связей
- 1 year ago
- 0
- 0
Диаграмма Насси — Шнейдермана ( англ. Nassi — Shneiderman diagram ) — это графический способ представления структурированных алгоритмов и программ, разработанный в 1972 году американскими аспирантами Беном Шнейдерманом и Айзеком Насси.
Поскольку в структурном программировании не используется безусловный переход , то Бен Шнейдерман решил, что для записи структурированных алгоритмов не нужны используемые в блок-схемах стрелки. Придумав разные способы изображения основных структур управления (последовательностей, ветвлений и циклов ), он затем вместе с Айзеком Насси подробно проработал свою идею. Вместе они написали статью «Техника блок-схем для структурного программирования», которая была опубликована в научном журнале «SIGPLAN Notices» в августе 1973 года.
Диаграммы Насси — Шнейдермана получили широкое распространение в некоторых странах, особенно в Германии , где для них даже был разработан официальный стандарт Немецким институтом по стандартизации : DIN 66261.
Диаграммы Насси — Шнейдермана имеют ряд преимуществ перед блок-схемами при разработке структурированных алгоритмов и программ:
Все элементы диаграммы Насси — Шнейдермана имеют прямоугольную форму и различаются только внутренним содержимым.
Выполняемое действие (в том числе команда языка в программе или подзадача в алгоритме) изображается в диаграммах Насси — Шнейдермана как прямоугольник, в котором записывается обозначение действия (команда) либо формулировка подзадачи.
Пример записи подзадачи:
Найти наименьший элемент в массиве |
Пример записи выполняемой команды (при записи программы на языке Pascal ):
writeln('Hello world!') |
При записи структуры последовательного выполнения элементы изображаются вертикально один за другим. При этом все элементы последовательности должны иметь одинаковую ширину — за счёт этого вся последовательность тоже имеет прямоугольную форму. Например:
Открыть файл на чтение |
Прочитать первую строку файла |
Вывести прочитанное значение на экран |
Закрыть файл |
Запись этого же алгоритма в виде диаграммы Насси — Шнейдермана с использованием языка Pascal :
reset(f) |
readln(f, str) |
writeln(str) |
close(f) |
Структура простого ветвления изображается в виде прямоугольника, разделённого горизонтальной чертой на две части. В верхней части располагается заголовок ветвления, а в нижней — две ветки ветвления, разделённые вертикальной чертой. В заголовке рисуются две линии, ведущие от верхних углов к началу линии, разделяющей ветви. В получившемся вверху треугольнике записывается условие ветвления, в двух нижних треугольниках над ветвями подписываются значения условия, соответствующие этим ветвям, например «истина» и «ложь», или «да» и «нет».
Структура многовариантного выбора изображается похоже на структуру простого ветвления, только основная ветвь и треугольник над ней делятся на много частей вертикальными линиями. В верхнем треугольнике записывается выражение-переключатель, над ветвями записываются соответствующие значения переключателя.
Структура повтора с условием в начале изображается как прямоугольник, внутри которого в правой нижней части нарисован ещё один прямоугольник. Над внутренним прямоугольником записывается заголовок цикла, а внутри него — тело цикла.
Пример записи цикла с предусловием (в данном примере тело цикла является последовательностью из двух действий):
Отличается от цикла с предусловием только тем, что внутренний прямоугольник рисуется в правой верхней части внешнего, а заголовок записывается снизу.
Пример записи цикла с постусловием (в данном примере тело цикла является последовательностью из двух действий):
Внутренний прямоугольник рисуется в правой части и не касается верха и низа внешнего прямоугольника. Условие цикла записывается сверху.