Свойства алгоритмов
Мы уже говорили, что алгоритм является некоторым сообщением исполнителю, однако не всякое сообщение, содержащее указания исполнителю о выполнении некоторых действия, является алгоритмом. Для того чтобы такое сообщение было записью алгоритма на некотором языке, оно должно обладать определенными свойствами.
Дискретность. Выполнение алгоритма разбивается на последовательность элементарных действий – шагов. Каждое действие должно быть закончено исполнителем прежде, чем он перейдет к выполнению следующего действия.
Точность, или детерминированность. Запись алгоритма должна быть такой, чтобы, выполнив очередную команду, исполнитель точно знал, какую команду надо выполнять следующей. Это приводит к тому, что алгоритм всегда выдаёт один и тот же результат для одних и тех же исходных данных.
Понятность. Каждый алгоритм строится в расчете на конкретного исполнителя, который должен быть в состоянии выполнить каждую команду алгоритма в строгом соответствии с ее назначением. Поэтому алгоритм должен включать только те команды, которые доступны исполнителю, то есть входят в его систему команд.
Результативность. При точном исполнении всех предписаний алгоритма процесс должен завершиться за конечное число шагов и при этом должен быть получен какой-либо ответ на поставленную задачу. В качестве одного из возможных ответов может быть установление того факта, что задача не имеет решения.
5. Массовость. С помощью одного и того же алгоритма можно решать однотипные задачи и делать это неоднократно. Алгоритм должен быть применим к разным наборам исходных данных, допустимым в решаемой задаче. Свойство массовости значительно увеличивает практическую ценность алгоритмов.
Способы представления алгоритмов
Любой исполнитель может понимать и исполнять алгоритм только в том случае, если он представлен в виде, понятном исполнителю. Любая форма представления алгоритма должна обеспечивать свойства алгоритма: дискретности, точности, понятности, результативности и массовости.
Существуют три основных способа представления алгоритмов.
Использование естественного языка.
В этом случае последовательность предложений языка описывает последовательность действий исполнителя, которым может быть в большинстве случаев только человек. Никаких специальных правил и требований к таким записям алгоритмов не предъявляется. Главное, что бы выполнялись требования, предъявляемые к алгоритмам, о которых говорилось выше. Иногда такая запись включает некоторые языковые конструкции известных алгоритмических языков или языков программирования.
Графически способ..
В графической форме алгоритм представляется в виде геометрических фигур. Обычно они связываются линиями, которые показывают последовательность исполнения отдельных шагов алгоритма. Существует несколько вариантов графического представления алгоритмов, но наиболее широкую известность получило представление в виде блок-схем. Метод блок-схем был разработан Фон Нейманом – одним из первых разработчиков вычислительных машин. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа.
Ниже приведены наиболее часто встречающиеся блочные символы.
Процесс.
Решение.
Предопределенный процесс.
Ввод-вывод.
Пуск-останов.
Документ.
Использование алгоритмических языков.
Алгоритмический язык – это формальный язык, используемый для записи алгоритмов. Запись алгоритма на алгоритмическом языке является формализованной и подчиняется строгим требованиям синтаксиса используемого языка. В отличие от большинства языков программирования, алгоритмический язык не привязан к архитектуре компьютера, и не содержит деталей, связанных с его устройством.
Алгоритм на алгоритмическом языке в общем виде записывается в следующей форме:
алг название алгоритма (аргументы и результаты)
дано условия применимости алгоритма
надо цель выполнения алгоритма
нач описание промежуточных величин
| последовательность команд (тело алгоритма)
кон
В записи алгоритма ключевые слова обычно подчёркиваются либо выделяются полужирным шрифтом. Для выделения логических блоков применяются отступы, а парные слова начала и конца блока соединяются вертикальной чертой.
Пример записи алгоритма вычисления суммы квадратов целых чисел:
алг Сумма квадратов (арг цел n, рез цел S)
дано n > 0
надо S = 1*1 + 2*2 + 3*3 + … + n*n
|нач цел i
| |ввод n; S:=0
| | |нц для i от 1 до n
| | | S := S + i * i
| | |кц
| |вывод "S = ", S
|кон