Содержание
- 1 Содержание
- 2 Основные элементы схем алгоритма [ править | править код ]
- 2.1 Действие [ править | править код ]
- 2.2 Данные (ввод/вывод) [ править | править код ]
- 2.3 Предопределенный процесс (функция) [ править | править код ]
- 2.4 Вопрос (условие или решение) [ править | править код ]
- 2.5 Ограничитель [ править | править код ]
- 2.6 Цикл [ править | править код ]
- 2.7 Соединитель [ править | править код ]
- 2.8 Комментарий [ править | править код ]
- 2.9 Параллельные действия [ править | править код ]
- 3 Представление алгоритмов в виде графов [ править | править код ]
- 4 Критика [ править | править код ]
Основные блоки, используемые для составления схем алгоритмов, представлены в нормативных документах ЕСПД, главным образом это
Блок решения имеет 1 вход и по крайней мере 2 выхода
Конец цикла
Условия для инициализации, приращения, завершения и т. д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие.
Размер a должен выбираться из ряда 10, 15, 20 мм. Допускается увеличивать размер a на число, кратное 5 мм. Размер b равен 1,5a.
Основным направлением потока в схемах алгоритмов принято направление сверху-вниз, слева-направо. Если линии потока идут в основном направлении и не имеют изломов, стрелками их можно не обозначать. В остальных случаях направление линии потока обозначать стрелкой обязательно.
Записи внутри символа должны быть представлены так, чтобы их можно было читать слева направо и сверху вниз, независимо от направления потока.
В схеме символу может быть присвоен идентификатор, который должен помещаться слева над символом.
Допускается краткая информация о символе (описание, уточнение или другие перекрестные ссылки для более полного понимания функции данной части схемы). Описание символа должно помещаться справа над символом.
В случае необходимости слияния линий потока место слияния должно быть обозначено точкой или символом 0.
Схе́ма — графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения данных, потока, оборудования и т. д. [1]
Блок-схема — распространенный тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности. Правила выполнения регламентируются ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения» [1] . Стандарт в частности регулирует способы построения схем и внешний вид их элементов.
Содержание
Основные элементы схем алгоритма [ править | править код ]
При начертании элементов рекомендуется придерживаться строгих размеров, определяемых двумя значениями a и b. Значение a выбирается из ряда 15, 20, 25.. мм, b рассчитывается из соотношения 2a = 3b. Определение размеров несет рекомендательный характер, однако, стоит отметить, что при соблюдении выполнения размеров блок-схемы имеют более аккуратный вид.
Действие [ править | править код ]
Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться).
Данные (ввод/вывод) [ править | править код ]
Символ отображает данные, носитель данных не определен.
Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы).
Предопределенный процесс (функция) [ править | править код ]
Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). Например, в программировании − вызов процедуры или функции.
Вопрос (условие или решение) [ править | править код ]
Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. Соответствующие результаты вычисления могут быть записаны по соседству с линиями, отображающими эти пути.
Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента. Вход в элемент обозначается линией, входящей обычно в верхнюю вершину элемента. Если выходов два или три, то обычно каждый выход обозначается линией, выходящей из оставшихся вершин (боковых и нижней). Если выходов больше трех, то их следует показывать одной линией, выходящей из вершины (чаще нижней) элемента, которая затем разветвляется. Соответствующие результаты вычислений могут записываться рядом с линиями, отображающими эти пути. Примеры решения: в общем случае − сравнение (три выхода: > , , = ); в программировании − условные операторы if (два выхода: true , false ) и case (множество выходов).
Ограничитель [ править | править код ]
Символ отображает вход из внешней среды и выход во внешнюю среду (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных).
На практике имеют смысл следующие описания ограничителей: начало/конец, запуск/останов, перезапуск (подразумевает перезапуск данной блок-схемы), ошибка (подразумевает завершение алгоритма с ошибкой), исключение (подразумевает исполнение программного исключения)
Цикл [ править | править код ]
Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т. д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие.
Пример блок-схемы расчета факториала с использованием цикла [ править | править код ]
Пример вложенных циклов [ править | править код ]
Соединитель [ править | править код ]
Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникальное обозначение.
Разделение алгоритма на две части с использованием соединителей [ править | править код ]
Комментарий [ править | править код ]
Символ используют для добавления описательных комментариев или пояснительных записей в целях объяснения или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры.
Также символ комментария следует использовать в тех случаях, когда объём текста, помещаемого внутри некоего символа (например, символ процесса, символ данных и др.), превышает размер самого этого символа. Комментарии используют совместно с терминаторами для описания входных аргументов алгоритма при описании функций
Параллельные действия [ править | править код ]
Символ представляется двумя параллельными линиями, отображает синхронизацию двух или более параллельных операций. В случае входа нескольких операций в параллельные линии, выполнение алгоритма будет продолжено только в случае окончания всех входящих процессов.
Параллельные действия могут быть использованы для асинхронных процессов или для процессов, последовательность которых не важна. В представленном примере стоит обратить внимание, что созданные в одних параллельных линиях процессы не обязаны также параллельно заканчиваться.
Описание других элементов схем можно найти в соответствующих ГОСТ [1] . Среди элементов существуют:
- Запоминаемые данные
- Документ
- Ручной ввод
- Карта
- Дисплей
- Ручная операция
- Передача управления
- Альтернативная связь между двумя или более символами
- и др.
Представление алгоритмов в виде графов [ править | править код ]
Порядок выполнения действий задается путём соединения вершин дугами, что позволяет рассматривать блок-схемы не только как наглядную интерпретацию алгоритма, удобную для восприятия человеком, но и как взвешенный ориентированный граф (т. н. граф-схема алгоритма, ГСА). Подобное представление алгоритмов используется при построении систем логического управления, реализующих заданные управляющие алгоритмы, в задачах распараллеливания вычислений и т. д.
Критика [ править | править код ]
Распространённой и ошибочной практикой является попытка использования блок-схем для иллюстрации алгоритма на низком уровне (на уровне кода) — то есть, попытка вписывать в блоки схемы фрагменты кода на каком-либо искусственном языке. Такой подход применим только к программам, организованным согласно структурному подходу, и не может отразить, к примеру, алгоритм, который реализуется во взаимодействии абстракций при объектно-ориентированном подходе. Для целей описания алгоритмов, взаимодействия частей системы и иллюстрации многих других сопутствующих вещей существует нотация UML.
1.1. Схемы алгоритмов, программ, данных и систем (далее – схемы) состоят из имеющих заданное значение символов, краткого пояснительного текста и соединяющих линий.
1.2. Схемы могут использоваться на различных уровнях детализации, причем число уровней зависит от размеров и сложности задачи обработки данных. Уровень детализации должен быть таким, чтобы различные части и взаимосвязь между ними были понятны в целом.
1.3. В настоящем стандарте определены символы, предназначенные для использования в документации по обработке данных, и приведено руководство по условным обозначениям для применения их в:
1) схемах данных;
2) схемах программ;
3) схемах работы системы;
4) схемах взаимодействия программ;
5) схемах ресурсов системы.
1.4. В стандарте используются следующие понятия:
1) основной символ-символ, используемый в тех случаях, когда точный тип (вид) процесса или носителя данных неизвестен или отсутствует необходимость в описании фактического носителя данных;
2) специфический символ-символ, используемый в тех случаях, когда известен точный тип (вид) процесса или носителя данных или когда необходимо описать фактический носитель данных;
3) схема-графическое представление определения, анализа или метода решения задачи, в, котором используются символы для отображения операций, данных, потока, оборудования и т.д.
2.1. Схема данных
2.1.1. Схемы данных отображают путь данных при решении задач и определяют этапы обработки, а также различные применяемые носители данных.
2.1.2. Схема данных состоит из:
1) символов данных (символы данных могут также указывать вид носителя данных);
2) символов процесса, который следует выполнить над данными (символы процесса могут также указывать функции, выполняемые вычислительной машиной);
3) символов линий, указывающих потоки данных между процессами и (или) носителями данных;
4) специальных символов, используемых для облегчения написания и чтения схемы.
2.1.3. Символы данных предшествуют и следуют за символами процесса. Схема данных начинается и заканчивается символами данных (за исключением специальных символов, указанных в п. 3.4).
2.2. Схема программы
2.2.1. Схемы программ отображают последовательность операций в программе.
2.2.2. Схема программы состоит из:
1) символов процесса, указывающих фактические операции обработки данных (включая символы, определяющие путь, которого следует придерживаться с учетом логических условий);
2) линейных символов, указывающих поток управления;
3) специальных символов, используемых для облегчения написания и чтения схемы.
2.3. Схема работы системы
2.3.1. Схемы работы системы отображают управление операциями и поток данных в системе.
2.3.2. Схема работы системы состоит из:
1) символов данных, указывающих на наличие данных (символы данных могут также указывать вид носителя данных);
2) символов процесса, указывающих операции, которые следует выполнить над данными, а также определяющих логический путь, которого следует придерживаться;
3) линейных символов, указывающих потоки данных между процессами и (или) носителями данных, а также поток управления между процессами;
4) специальных символов, используемых для облегчения написания и чтения блок-схемы.
2.4. Схема взаимодействия программ
2.4.1. Схемы взаимодействия программ отображают путь активации программ и взаимодействий с соответствующими данными. Каждая программа в схеме взаимодействия программ показывается только один раз (в схеме работы системы программа может изображаться более чем в одном потоке управления).
2.4.2. Схема взаимодействия программ состоит из:
1) символов данных, указывающих на наличие данных;
2) символов процесса, указывающих на операции, которые следует выполнить над данными;
3) линейных символов, отображающих поток между процессами и данными, а также инициации процессов;
4) специальных символов, используемых для облегчения написания и чтения схемы.
2.5. Схема ресурсов системы
2.5.1. Схемы ресурсов системы отображают конфигурацию блоков данных и обрабатывающих блоков, которая требуется для решения задачи или набора задач.
2.5.2. Схема ресурсов системы состоит из:
1) символов данных, отображающих входные, выходные и запоминающие устройства вычислительной машины;
2) символов процесса, отображающих процессоры (центральные процессоры, каналы и т.д.);
3) линейных символов, отображающих передачу данных между устройствами ввода-вывода и процессорами, а также передачу управления между процессорами;
4) специальных символов, используемых для облегчения написания и чтения схемы.
Примеры выполнения схем приведены в приложении.
3.1. Символы данных
3.1.1. Основные символы данных
Символ отображает данные, носитель данных не определен.
3.1.1.2. Запоминаемые данные
Символ отображает хранимые данные в виде, пригодном для обработки, носитель данных не определен.
3.1.2. Специфические символы данных
3.1.2.1. Оперативное запоминающее устройство
Символ отображает данные, хранящиеся в оперативном запоминающем устройстве.
3.1.2.2. Запоминающее устройство с последовательным доступом
Символ отображает данные, хранящиеся в запоминающем устройстве с последовательным доступом (магнитная лента, кассета с магнитной лентой, магнитофонная кассета).
3.1.2.3. Запоминающее устройство с прямым доступом
Символ отображает данные, хранящиеся в запоминающем устройстве с прямым доступом (магнитный диск, магнитный барабан, гибкий магнитный диск).
Символ отображает данные, представленные на носителе в удобочитаемой форме (машинограмма, документ для оптического или магнитного считывания, микрофильм, рулон ленты с итоговыми данными, бланки ввода данных).
3.1.2.5. Ручной ввод
Символ отображает данные, вводимые вручную во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штриховым кодом).
Символ отображает данные, представленные на носителе в виде карты (перфокарты, магнитные карты, карты со считываемыми метками, карты с отрывным ярлыком, карты со сканируемыми метками).
3.1.2.7. Бумажная лента
Символ отображает данные, представленные на носителе в виде бумажной ленты.
Символ отображает данные, представленные в человекочитаемой форме на носителе в виде отображающего устройства (экран для визуального наблюдения, индикаторы ввода информации).
3.2. Символы процесса
3.2.1. Основные символы процесса
Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться).
3.2.2. Специфические символы процесса
3.2.2.1. Предопределенный процесс
Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле).
3.2.2.2. Ручная операция
Символ отображает любой процесс, выполняемый человеком.
Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию (установка переключателя, модификация индексного регистра или инициализация программы).
Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. Соответствующие результаты вычисления могут быть записаны по соседству с линиями, отображающими эти пути.
3.2.2.5. Параллельные действия
Символ отображает синхронизацию двух или более параллельных операций.
Примечание. Процессы С, D и Е не могут начаться до тех пор, пока не завершится процесс А; аналогично процесс F должен ожидать завершения процессов В, С и D, однако процесс С может начаться и (или) завершиться прежде, чем соответственно начнется и (или) завершится процесс D.
3.2.2.6. Граница цикла
Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие.
3.3. Символы линий
3.3.1. Основной символ линий
Символ отображает поток данных или управления.
При необходимости или для повышения удобочитаемости могут быть добавлены стрелки-указатели.
3.3.2. Специфические символы линий
3.3.2.1. Передача управления
Символ отображает непосредственную передачу управления от одного процесса к другому, иногда с возможностью прямого возвращения к инициирующему процессу после того, как инициированный процесс завершит свои функции. Тип передачи управления должен быть назван внутри символа (например, запрос, вызов, событие).
3.3.2.2. Канал связи
Символ отображает передачу данных по каналу связи.
3.3.2.3. Пунктирная линия
Символ отображает альтернативную связь между двумя или более символами. Кроме того, символ используют для обведения аннотированного участка.
Если один из ряда альтернативных выходов используют в качестве входа в процесс либо когда выход используется в качестве входа в альтернативные процессы, эти символы соединяют пунктирными линиями.
Выход, используемый в качестве входа в следующий процесс, может быть соединен с этим входом с помощью пунктирной линии.
3.4. Специальные символы
Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникальное обозначение.
Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных).
Символ используют для добавления описательных комментариев или пояснительных записей в целях объяснения или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры.
Символ (три точки) используют в схемах для отображения пропуска символа или группы символов, в которых не определены ни тип, ни число символов. Символ используют только в символах линии или между ними. Он применяется главным образом в схемах, изображающих общие решения с неизвестным числом повторений.
4.1. Правила применения символов
4.1.1. Символ предназначен для графической идентификации функции, которую он отображает, независимо от текста внутри этого символа.
4.1.2. Символы в схеме должны быть расположены равномерно. Следует придерживаться разумной длины соединений и минимального числа длинных линий.
4.1.3. Большинство символов задумано так, чтобы дать возможность включения текста внутри символа. Формы символов, установленные настоящим стандартом, должны служить руководством для фактически используемых символов. Не должны изменяться углы и другие параметры, влияющие на соответствующую форму символов. Символы должны быть, по возможности, одного размера.
Символы могут быть вычерчены в любой ориентации, но, по возможности, предпочтительной является горизонтальная ориентация. Зеркальное изображение формы символа обозначает одну и ту же функцию, но не является предпочтительным.
4.1.4. Минимальное количество текста, необходимого для понимания функции данного символа, следует помещать внутри данного символа. Текст для чтения должен записываться слева направо и сверху вниз независимо от направления потока.
Если объем текста, помещаемого внутри символа, превышает его размеры, следует использовать символ комментария.
Если использование символов комментария может запутать или разрушить ход схемы, текст следует помещать на отдельном листе и давать перекрестную ссылку на символ.
4.1.5. В схемах может использоваться идентификатор символов. Это связанный с данным символом идентификатор, который определяет символ для использования в справочных целях в других элементах документации (например, в листинге программы). Идентификатор символа должен располагаться слева над символом.
4.1.6. В схемах может использоваться описание символов-любая другая информация, например, для отображения специального применения символа с перекрестной ссылкой, или для улучшения понимания функции как части схемы. Описание символа должно быть расположено справа над символом.
4.1.7. В схемах работы системы символы, отображающие носители данных, во многих случаях представляют способы ввода-вывода. Для использования в качестве ссылки на документацию текст на схеме для символов, отображающих способы вывода, должен размещаться справа над символом, а текст для символов, отображающих способы ввода-справа под символом.
4.1.8. В схемах может использоваться подробное представление, которое обозначается с помощью символа с полосой для процесса или данных. Символ с полосой указывает, что в этом же комплекте документации в другом месте имеется более подробное представление.
Символ с полосой представляет собой любой символ, внутри которого в верхней части проведена горизонтальная линия. Между этой линией и верхней линией символа помещен идентификатор, указывающий на подробное представление данного символа.
В качестве первого и последнего символа подробного представления должен быть использован символ указателя конца. Первый символ указателя конца должен содержать ссылку, которая имеется также в символе с полосой.
Символ с полосой Подробное представление
4.2. Правила выполнения соединений
4.2.1. Потоки данных или потоки управления в схемах показываются линиями. Направление потока слева направо и сверху вниз считается стандартным.
В случаях, когда необходимо внести большую ясность в схему (например, при соединениях), на линиях используются стрелки. Если поток имеет направление, отличное от стандартного, стрелки должны указывать это направление.
4.2.2. В схемах следует избегать пересечения линий. Пересекающиеся линии не имеют логической связи между собой, поэтому изменения направления в точках пересечения не допускаются.
4.2.3. Две или более входящие линии могут объединяться в одну исходящую линию. Если две или более линии объединяются в одну линию, место объединения должно быть смещено.
4.2.4. Линии в схемах должны подходить к символу либо слева, либо сверху, а исходить либо справа, либо снизу. Линии должны быть направлены к центру символа.
4.2.5. При необходимости линии в схемах следует разрывать для избежания излишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц. Соединитель в начале разрыва называется внешним соединителем, а соединитель в конце разрыва-внутренним соединителем.
4.2.6. Ссылки к страницам могут быть приведены совместно с символом комментария для их соединителей.
Внешний соединитель Внутренний соединитель
4.3. Специальные условные обозначения
4.3.1. Несколько выходов
4.3.1.1. Несколько выходов из символа следует показывать:
1) несколькими линиями от данного символа к другим символам;
2) одной линией от данного символа, которая затем разветвляется в соответствующее число линий.
4.3.1.2. Каждый выход из символа должен сопровождаться соответствующими значениями условий, чтобы показать логический путь, который он представляет, с тем, чтобы эти условия и соответствующие ссылки были идентифицированы.
4.3.2. Повторяющееся представление
4.3.2.1. Вместо одного символа с соответствующим текстом могут быть использованы несколько символов с перекрытием изображения, каждый из которых содержит описательный текст (использование или формирование нескольких носителей данных или файлов, производство множества копий печатных отчетов или форматов перфокарт).
4.3.2.2. Когда несколько символов представляют упорядоченное множество, это упорядочение должно располагаться от переднего (первого) к заднему (последнему).
4.3.2.3. Линии могут входить или исходить из любой точки перекрытых символов, однако требования п. 4.2.4 должны соблюдаться. Приоритет или последовательный порядок нескольких символов не изменяется посредством точки, в которой линия входит или из которой исходит.
“>