Примеры построения алгоритмов
Правила выполнения изображения схем алгоритмов
ГОСТ 19.701-90) (ИСО 5807-85).
Алгоритм - конечная последовательность точно определенных действий, приводящих к однозначному решению поставленной задачи.
Алгоритм должен обладать такими свойствами как:
- массовость (универсальность);
- определенность (детерминированность);
- правильность (адекватность);
- поэтапность (дискретность).
Алгоритмы могут быть заданы:
- словесно, с помощью слов и предложений естественного языка;
- таблично, в форме таблиц и расчетных формул;
- графически, с помощью специальных символов - блоков.
Описание алгоритмов с помощью блок-схем - наиболее наглядный и распространенный способ задания алгоритмов.
Условные обозначения и правила выполнения изображения схем алгоритмов изложены в ГОСТ 19.701-90 (ИСО 5807-85).
Стандарт не распространяется на форму записей и обозначений, помещаемых внутри символов или рядом с ними и служащих для уточнения выполняемых ими функций.
Требования стандарта являются обязательными. Схемы алгоритмов состоят из имеющих заданное значение символов, краткого пояснительного текста и соединяющих линий. Схемы могут использоваться на различных уровнях детализации, причем число уровней зависит от размеров и сложности задачи обработки данных. Уровень детализации должен быть таким, чтобы различные части и взаимосвязь между ними были понятны в целом.
В стандарте используются следующие понятия:
1) основной символ - символ, используемый в тех случаях, когда точный тип (вид) процесса или носителя данных неизвестен или отсутствует необходимость в описании фактического носителя данных;
2) специфический символ - символ, используемый в тех случаях,
когда известен точный тип процесса или носителя данных или когда необходимо описать фактический носитель данных;
3) схема - графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения операций, данных, потока, оборудования и т. д.
ОПИСАНИЕ СИМВОЛОВ
1. Символы данных | |
1.1. Основные символы данных | |
1.1.1. Данные. Символ отображает данные, носитель данных не определен. | |
1.1.2. Запоминаемые данные. Символ отображает хранимые данные в виде, пригодном для обработки, носитель данных не определен. | |
1.2. Специфические символы данных | |
1.2.1. Оперативное запоминающее устройство. Символ отображает данные, хранящиеся в оперативном запоминающем устройстве. | |
1.2.2. Запоминающее устройство с последовательным доступом. Символ отображает данные, хранящиеся в запоминающем устройстве с последовательным доступом (магнитная лента, кассета с магнитной лентой, магнитофонная кассета). | |
1.2.3. Запоминающее устройство с прямым доступом. Символ отображает данные, хранящиеся в запоминающем устройстве с прямым доступом (магнитный диск, магнитный барабан, гибкий магнитный диск). | |
1.2.4. Документ. Символ отображает данные, представленные на носителе в удобочитаемой форме (машинограмма, документ для оптического или магнитного считывания, микрофильм, рулон ленты с итоговыми данными, бланки ввода данных). | |
1.2.5. Ручной ввод. Символ отображает данные, вводимые вручную во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штриховым кодом). | |
1.2.6. Карта. Символ отображает данные, представленные на носителе в виде карты (перфокарты, магнитные карты, карты со считываемыми метками, карты со сканируемыми метками). | |
1.2.7. Бумажная лента. Символ отображает данные, представленные на носителе в виде бумажной ленты. | |
1.2.8. Дисплей. Символ отображает данные, представленные в человекочитаемой форме на носителе в виде отображающего устройства (экран для визуального наблюдения, индикаторы ввода информации). | |
2. Символы процесса | |
2.1. Основные символы процесса | |
2.1.1. Процесс. Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться). | |
2.2. Специфические символы процесса | |
2.2.1. Предопределенный процесс. Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте ( в подпрограмме, модуле). | |
2.2.2. Ручная операция. Символ отображает любой процесс, выполняемый человеком. | |
2.2.3. Подготовка. Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последовательную функцию (установка переключателя, модификация индексного регистра или инициализация программы). | |
2.2.4. Решение. Символ отображает решение или функцию переключаемого типа, имеющую один вход и ряд альтернативных выходов, один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. | |
2.2.5. Параллельные действия. Символ отображает синхронизацию двух или более параллельных операций. | |
2.2.6. Граница цикла. Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или конце в зависимости от расположения операции, проверяющей условие. | |
3. Символы линий | |
3.1. Основной символ линий | |
3.1.1. Линия. Символ отображает поток данных или управления. | |
3.2. Специфические символы линий | |
3.2.1. Передача управления. Символ отображает непосредственную передачу управления от одного процесса к другому, иногда с возможностью прямого возвращения к инициирующему процессу после того, как инициированный процесс завершит свои функции. Тип передачи управления должен быть назван внутри символа (например, запрос, вызов, событие). | |
3.2.2. Канал связи. Символ отображает передачу данных по каналу связи. | |
3.2.3. Пунктирная линия. Символ отображает альтернативную связь между двумя или более символами. Кроме того, символ используют для обведения аннотированного участка. | |
4. Специальные символы | |
4.1. Соединитель. Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линий и продолжения ее в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникальное обозначение. | |
4.2. Терминатор. Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных). | |
4.3. Комментарий. Символ используют для добавления описательных комментариев или пояснительных записей в целях объяснения или примечаний. | |
4.4. Пропуск. Символ (три точки) используют схемах для отображения пропуска символа или группы символов, в которых не определены ни тип, ни число символов. Символ используют только в символах линий или между ними. Он применим равным образом в схемах, изображающих общие решения с неизвестным числом повторений. |
Правила применения символов:
1) Символ предназначен для графической идентификации функции, которую он отображает, независимо от текста внутри этого символа.
2) Символы в схеме должны быть расположены равномерно. Следует придерживаться разумной длины соединений и минимального числа длинных линий.
3) Формы символов, установленные настоящим стандартом, должны служить руководством для фактически используемых символов. Не должны изменяться углы и другие параметры, влияющие на соответствующую форму символов. Символы должны быть, по возможности, одного размера.
4) Символы могут быть вычерчены в любой ориентации, но, по возможности, предпочтительной является горизонтальная ориентация.
5) Минимальное количество текста, необходимо для понимания
функции данного символа, следует помещать внутри данного символа. Текст для чтения должен записываться слева направо и сверху вниз независимо от направления потока.
6) Если объем текста, помещаемого внутрь символа, превышает его размеры, следует использовать символ комментария.
7) В схемах может использоваться идентификатор символов. Это связанный с данным символом идентификатор, который определяет символ для использования в справочных целях в других элементах документации (например, в листинге программы). Идентификатор символа должен располагаться слева над символом.
8) В качестве первого и последнего символа алгоритма должен быть использован символ указателя конца.
Правила выполнения соединений:
1) Потоки данных или потоки управления в схемах показываются линиями. Направление потока слева на право и сверху вниз считаются стандартным. В случаях, когда необходимо внести большую ясность в схему (например, при соединениях), на линиях используют стрелки. Если поток имеет направление, отличное от стандартного, стрелки должны указывать это направление.
2) В схемах следует избегать пересечение линий. Пересекающиеся линии не имеют логической связи между собой, поэтому изменения направления в точках пересечения не допускаются.
3) Две или более входящие линии могут объединяться одну исходящую линию. Если две или более линий объединяются в одну линию, место объединения должно быть смещено.
4) Линии в схемах должны подходить к символу либо слева, либо сверху, а исходить либо справа, либо снизу. Линии должны быть направлены к центру символа.
5) При необходимости линии в схемах следует разрывать для избежания излишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц. Соединитель в начале разрыва называется внешним соединителем, а соединитель в конце разрыва - внутренним соединителем.
6) Ссылки к страницам могут быть приведены совместно с символом комментария для их соединителей.
ПРИМЕНЕНИЕ СИМВОЛОВ
Символ | Наименование символа | |||||
Символы данных | ||||||
Основные | Данные | + | + | + | + | + |
Запоминаемые данные | + | - | + | + | + | |
Специфические ОЗУ | + | - | + | + | + | |
ЗУ с послед. выборкой | + | - | + | + | + | |
ЗУ с прямым доступом | + | - | + | + | + | |
Документ | + | - | + | + | + | |
Ручной ввод | + | - | + | + | + | |
Карта | + | - | + | + | + | |
Бумажная лента | + | - | + | + | + | |
Дисплей | + | - | + | + | + | |
Символы процесса | ||||||
Основные | Процесс | + | + | + | + | + |
Специфические | Предопределенный процесс | - | + | + | + | - |
Ручная операция | + | - | + | + | - | |
Подготовка | + | + | + | + | - | |
Решение | - | + | + | - | - | |
Параллельные действия | - | + | + | + | - | |
Граница цикла | - | + | + | - | - | |
Символы линий | ||||||
Основные | Линия | + | + | + | + | + |
Специфические | Передача управления | - | - | - | + | - |
Канал связи | + | - | + | + | + | |
Пунктирная линия | + | + | + | + | + | |
Специальные символы | Соединитель | + | + | + | + | + |
Терминатор | + | + | + | - | - | |
Комментарий | + | + | + | + | + | |
Пропуск | + | + | + | + | + |
Примечание. Знак "+" указывает, что символ используют в данной схеме, знак "-" - не используют.
1 - Схема данных;
2 - Схема программы;
3 - Схема работа системы;
4 - Схема взаимодействия программ;
5 - Схема ресурсов системы;
ОЗУ - оперативное запоминающее устройство;
ЗУ - запоминающее устройство.
Примеры построения алгоритмов
Алгоритмы бывают: линейные, разветвляющиеся, циклические. Линейный алгоритм не содержит логических условий, имеет одну ветвь обработки и изображается линейной последовательностью связанных друг с другом блоков. Разветвляющийся алгоритм содержит одно или несколько логических условий и имеет несколько ветвей обработки. Разветвляющиеся алгоритмы могут иметь несколько структур:
- неполная альтернатива, обработка производится при выполнении условия в противном случае обработка не производится;
- полная альтернатива, обработка производится при выполнении условия по ветви 1, в противном случае по ветви 2;
- конструкция выбора, обработка производится при выполнении одного из нескольких различных условий по соответствующей ему ветви.
Блок - Решение имеет один вход и несколько выходов, которые следует показывать:
1) несколькими линиями от данного символа к другим символам;
2) одной линией от данного символа, которая затем разветвляется в соответствующее число линий.
3) каждый выход из символа должен сопровождаться соответствующими значениями условий, чтобы показать логический путь, который он представляет, с тем, чтобы эти соответствующие ссылки были идентифицированы.