Программирование для непрограммистов: три основы алгоритмов
Алгоритм - это рецепт решения задачи. Следуя ему мы приходим к нужному результату при условии, что, во-первых, алгоритм верен, во-вторых, все необходимые условия выполняются. Алгоритм может записываться как пошаговая инструкция, и такой пример я уже приводил.
Любой алгоритм можно представить в виде комбинации трёх элементов: последовательное выполнение, ветвление, и цикл. Давайте резберёмся с этими понятиями.
Вообще, обычно при обучении программирования циклы (loops) и ветвления изучают отдельно, но я ведь пишу про программирование для непрограммистов.
Последовательное выполнение
Самое простое понятие. Шаги, которые выполняются последовательно. Сначала делаем первый шаг, потом второй, и так далее. Здесь всё просто, но нужно помнить, что порядок шагов может быть важен. Вот, например, простой алгоритм похода в магазин:
1) Одеться
2) Взять кошелёк
3) Дойти до магазина
Ветвление
Эта операция ещё называется "условный переход". Иногда нужно проверить какое-то логическое условие, чтобы понять, что делать дальше. Например, при расчёте того же среднего можно проверить, а сколько у нас значений вообще? А вдруг их ноль? Тогда ведь мы не сможем поделить на ноль: ошибка выйдет.
Как это выглядит на примере похода в магазин:
1) Одеться
2) Взять кошелёк
3) Если идёт дождь
- то взять зонт
4) Дойти до магазина
На третьем шаге мы проверяем логическое условие и, соответственно, выполняем или не выполняем заданное действие. Приведённый пример - т.н. неполное ветвление, тут мы совершаем действие только если условие выполняется. Полное ветвление выглядело бы так:
Если идёт дождь
- то взять зонт
, иначе взять солнцезащитные очки
То есть, мы совершаем одно действие, если условие выполняется, и другое - если не выполняется.
Естественно, действий может быть больше чем одно в каждой ветке, но не будем усложнять пример.
Цикл
Когда нам необходимо совершить много одинаковых действий, циклы приходят на помощь. Давайте сразу перейдём к примеру похода в магазин:
1) Одеться
2) Взять кошелёк
3) Идти в сторону магазина
4) Если не дошли до магазина
- то повторить шаг 3
Как видно, здесь совершается условный переход, но в качестве указанного действия - повторения предыдущего шага. Таким образом, пока мы не дойдём до магазина, мы будем идти в его сторону.
Это не единственный вид циклов. то же такое действие мы можем записать следующим образом:
1) Одеться
2) Взять кошелёк
3) Пока не дошли до магазина
- идти в сторону магазина
В третьем шаге тоже описан цикл, но менее наглядно. Важное отличие от предыдущего варианта заключается в том, что здесь мы сначала проверяем выполнение условия, а потом совершаем действие, а в предыдущем - сначала совершаем действие, а потом начинаем проверять выполнение условий. В реальной жизни мы, возможно, и не увидим особой разницы, но когда дело касается программирования - она есть.