…aut discede

Алгоритмы

Как в литературе, по мнению Кристофера Букера, есть только семь основных сюжетов 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)
Программистский фольклор