Алгоритм — это строгая конечная последовательность четко определенных действий, приводящая к определенному результату. Слово «алгоритм» происходит от имени математика аль-Хорезми (Alhorithmi), жившего в 783–850 гг.
Формы записи алгоритма:
– словесная;
– языки программирования (например, С, С++ и др.);
– графическая (структурограммы (схемы Насси-Шнейдермана), блок-схемы).
Правила выполнения блок-схем алгоритмов определяются документом ГОСТ 19.701–90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения». Этот стандарт содержит указания к правилам составления блок-схем, их внешнему виду, а также описывает условные обозначения для каждого структурного элемента алгоритма.
Для наглядности рассмотрим пример построения блок-схемы алгоритма решения полного квадратного уравнения .
Необходимо записать алгоритм в виде блок-схемы. Стрелки указывают на порядок действий, заданных блоками. Прямоугольники задают блоки вычислений, параллелограммы — блоки ввода и вывода информации, ромбы задают условия и имеют две исходящие стрелки, управление по которым передается в зависимости от истинности условия. Начало и конец алгоритма задаются закругленными блоками. Блок-схема алгоритма приведена на рис. 1.
Рис. 1. Вычисление корней квадратного уравнения. Блок-схема
Диаграмма Насси-Шнейдермана — это графический способ представления структурированных алгоритмов и программ, разработанный в 1972 году Беном Шнейдерманом и Айзеком Насси.
В некоторых случаях структурограммы применять удобнее, чем блок-схемы по следующим причинам:
– Отсутствие стрелок позволяет сделать запись более компактной.
– При записи алгоритма гарантируется соблюдение принципов структурного программирования.
Для обозначений в структурограммах применяются блоки. Прямоугольниками задаются основные конструкции. Так, последовательно идущие вычисления будут располагаться в прямоугольниках, выровненных по ширине, располагающихся последовательно друг за другом снизу вверх.
Структура простого ветвления изображается в виде прямоугольника, разделенного вертикальной чертой на две части. В верхней части располагается условие, а в нижней — две ветки, разделенные вертикальной чертой. Структура множественного выбора задается аналогично, только вариантов деления прямоугольника на структурные части будет несколько.
Цикл задается в виде прямоугольника, в который вписано условие цикла, и вложенного в него прямоугольника с телом цикла.
На рис.2. представлен пример структурограммы алгоритма вычисления факториала числа.
Рис. 2. Вычисление факториала числа. Структурограмма
Структурограмма менее распространена как графический способ записи алгоритмов, блок-схемы используются чаще.
Запись алгоритма в виде блок-схем более привычна и понятна, особенно для начинающих программистов, поскольку стрелками задается последовательность выполнения действий.
При этом схемы Насси-Шнейдермана позволяют записать алгоритм более компактно, отражая агрегирование мелких блоков более крупными. Такой способ очень удобен при задании алгоритмов с большим количеством вложенных циклов и условий.
Литература:
- Ben Shneiderman. A short history of structured flowcharts (Nassi-Shneiderman Diagrams). / Draft, May 27, 2003.
- ГОСТ 19.701–90 (ИСО 5807–85) «Единая система программной документации».
- Алгоритм. Свойства алгоритма \ https://pro-prof.com/archives/578