Алгоритмы

Алгоритмы #

Как в литературе, по мнению Кристофера Букера, есть только семь основных сюжетов1, так и в программировании базовых алгоритмов всего три. Это те “кубики”, из которых создаются программы.

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

Линейный #

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

действие 1
действие 2
действие 3

Шаг вперёд-назад, влево-вправо! Шаг вперёд-назад, влево-вправо!

Шаг вперёд-назад! Шаг вперёд-назад! Шаг вперёд-назад!.2

Условный (ветвление) #

При помощи ветвления можно задать разное поведение программы в разных условиях.

ЕСЛИ условие ТО
    действие
ИНАЧЕ
    другое действие

К сведению: отступы не имеют никакого значения и использованы исключительно для наглядности3.

Условие - это логическое выражение, исчислимая формула. Всю теорию множеств можно уместить в вычисление логических выражений, но нам сейчас важно только то, что результатом этого вычисления будет 1 или 0. В первом случае выполнится “команда”, во втором - “другая_команда”.

Если ясный день - это хорошо,

А когда наоборот - плохо. 4

Цикл #

Циклический алгоритм позволяет выполнять команды многократно. Сколько именно - зависит от условия повторения. В циклах с предусловием сначала проверяется условие, потом выполняется команда. В циклах с постусловием сначала выполняется команда, а потом проверяется условие.

ПОКА 0 ВЫПОЛНЯТЬ действие --> не выполнится
ВЫПОЛНЯТЬ действие ПОКА 0 --> выполнится один раз

Во время исполнения действия условие может измениться. В первом случае на исполнение алгоритма это не повлияет.

– А еще есть “синий цикл”…

– А почему он синий?

– Потому что - до посинения.5

ПОКА 1 ВЫПОЛНЯТЬ действие --> будет выполняться вечно
ВЫПОЛНЯТЬ действие ПОКА 1 --> будет выполняться вечно

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


  1. The Seven Basic Plots of Storytelling. Christopher Booker, 2006 ↩︎

  2. “Дискотека Авария”, 2000. ↩︎

  3. Если только вы не пишите на языке Python. ↩︎

  4. “Если добрый ты…” (песня кота Леопольда), Аркадий Хайт, 1982 ↩︎

  5. Программистский фольклор ↩︎