Свойства алгоритма.

В математике для решения типовых задач мы используем определенные правила, описывающие последовательности действий. Например, правила сложения дробных чисел, решения квадратных уравнений и т. д. В повседневной жизни инструкции и правила представляют собой последовательность действий, которые необходимо выполнить в определенном порядке. Для решения любой задачи надо знать, что дано, что следует получить, какие действия и в каком порядке следует для этого выполнить.

Суть состоит в том, что если алгоритм разработан, то его можно вручить для выполнения любому исполнителю, не знакомому с решаемой задачей, и точно следуя правилам алгоритма, исполнитель получит ее решение.

Алгоритм удовлетворяет следующим основным свойствам:

· конечность (дискретность) команд и выполняемых по ним действий алгоритма.

· выполнимость в определенной операционной среде (в определенном классе исполнителей).

· результативность отдельных команд и всего алгоритма.

· применимость алгоритма ко всем возможным входным данным конкретного класса задач.

· определенность (детерминированность) команд и всего алгоритма для всех входных данных.

· формализованное, конструктивное описание (представление) команд алгоритма.

· минимальная полнота системы команд алгоритм.

· непротиворечивость любых команд алгоритма на любом наборе входных данных.

Любой алгоритм ориентирован на некоторый общий метод решения класса задач и представляет собой формализованную запись метода, процедуры.

Алгоритм, записанный на некотором алгоритмическом, формальном языке, состоит из заголовка алгоритма (описания параметров, спецификаций класса задач) и тела алгоритма (последовательности команд исполнителя, преобразующих входные параметры в выходные).

Для записи, исполнения, обмена и хранения алгоритмов существуют различные средства: языки (словесный способ), псевдокоды, блок-схемы, структурограммы (схемы Нэсси-Шнайдермана), Р-схемы, школьный алгоритмический язык (ШАЯ), различные языки программирования.

Словесный способ записи алгоритмов использует средства обычного языка, но с тщательно отобранным набором слов, фраз, не допускающим повторений, синонимов, двусмысленностей, лишних слов. Недостатком такого способа записи алгоритма является отсутствие более или менее строгой формализации и наглядности вычислительного процесса. Вместе с тем с помощью данного способа можно описывать алгоритмы с произвольной степенью детализации.

Формульно-словесный способ записи алгоритма основан на задании инструкций о выполнении конкретных действий с использованием математических символов и выражений в сочетании со словесными пояснениями.

Графический способ представления алгоритма использует элементы блок-схем. Блок-схемой называется графическое изображение структуры алгоритма, в котором каждый этап процесса переработки данных представляется в виде геометрических фигур (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций. Последовательность выполнения пунктов алгоритма, описываемого блок-схемой, устанавливается путем упорядоченного размещения блоков на схеме и объединения их линиями потока информации.

В таблице приведены наиболее часто употребляемые символы.

Название символа Обозначение и пример заполнения Пояснение
Процесс Вычислительное действие или последовательность действий
Решение Проверка условий
Модификация Начало цикла
Предопределенный процесс Вычисления по подпрограмме, стандартной подпрограмме
Ввод-вывод Ввод-вывод
Пуск-останов Начало, конец алгоритма, вход и выход в подпрограмму
Документ Вывод результатов на печать

Блок-схема является исключительно наглядным и простым способом записи алгоритма. При этом не накладывается никаких ограничений на степень детализации в изображении алгоритма. Выбор ее целиком лежит на программисте. Однако необходимо иметь в виду, что излишне общий характер блок-схемы нежелателен из-за малой информативности, а очень детальная блок-схема проигрывает в наглядности. Поэтому для сложных и больших алгоритмов целесообразно составлять несколько блок-схем разной степени детализации. Блок-схема первого уровня отображает весь алгоритм целиком. Блок-схемы второго уровня раскрывают логику отдельных блоков схемы первого уровня. При необходимости могут быть составлены блок-схемы последующих уровней с еще большей степенью детализации.