Алгоритмы

Алгоритм – точная конечная последовательность команд, приводящая от исходных данных к искомому результату за конечное число шагов. (Слово происходит от имени великого математика IX в. Мухаммеда ибн Мусы аль-Хорезми.)

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

Классификация алгоритмов

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

Линейный алгоритм

Описывает команды, следующие в определенной последовательности одна за другой и выполняемые только один раз.

Разветвляющийся алгоритм

Позволяет описать действия, которые выполняются в зависимости от условия. В простей­шем случае, это ответ на вопрос «Да» или «Нет». Во всех языках программирования эта возможность реализована при помощи оператора ветвления If...[Else]...EndIf. Может иметь как полную форму, когда действия описаны для обеих ветвей, так и частичную, когда действия производятся только для положительного либо, наоборот, только для отрицательного ответа.

Циклический алгоритм

В некоторых языках программирования могут использоваться специализированные циклы: для обхода всех элементов набора объектов (For Each) или для просмотра всех записей в таблице базы данных (Scan).

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

Вспомогательный алгоритм (подпрограмма)

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

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

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

Способы (формы) записи алгоритмов

Словесно-пошаговый способ записи алгоритмов

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

Школьный алгоритмический язык (ШАЯ)

Язык программирования

Блок-схема

Обозначения в блок-схемах

Оформление блок-схем должно производиться с соблюдением правил ГОСТа.

Таблица

Дополнительные аспекты

См. также Невозможность исчерпывающего алгоритма.

Вопросы и задачи

  1. Найти гипотенузу прямоугольного треугольника по двум известным катетам.
  2. Найти катет прямоугольного треугольника по известным гипотенузе и второму катету.
  3. Построить алгоритм нахождения всех натуральных решений уравнения y = x2, для y < 100.
  4. Построить алгоритм нахождения всех натуральных решений уравнения y = x3, для y < 100.

Copyright © 1993–2020 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.