Что такое алгоритм и блок-схема

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

Представь, что ты объясняешь другу, как дойти от школы до твоего дома. «Выйди из ворот, поверни налево, иди до светофора, перейди дорогу, третий подъезд». Поздравляем — ты только что составил алгоритм. Вся информатика начинается с этого простого умения: разбивать задачу на чёткие шаги.

Откуда взялось слово. «Алгоритм» — это искажённое имя учёного. В IX веке в Багдаде жил математик аль-Хорезми (полное имя Мухаммад ибн Муса аль-Хорезми). Его трактаты о вычислениях перевели на латынь, и автора назвали Algorithmi. Так способ пошаговых вычислений и получил имя «алгоритм». А из заглавия другой его книги — «аль-джабр» — выросло слово «алгебра».

Что такое алгоритм

Алгоритм — это конечная последовательность точных команд, которая приводит исполнителя от исходных данных к нужному результату. Каждое слово в этом определении важно:

  • конечная — шагов не бесконечно много, алгоритм когда-нибудь завершится;
  • точных — каждая команда понимается однозначно, без «ну ты понял»;
  • исполнителя — того, кто выполняет команды;
  • результату — алгоритм пишут не просто так, а чтобы что-то получить.

Исполнитель — это тот, кто выполняет алгоритм: человек, робот, компьютер. У каждого исполнителя есть система команд — набор действий, которые он умеет делать. Роботу-пылесосу можно сказать «поверни направо», но бесполезно говорить «приготовь борщ»: такой команды в его системе нет.

Компьютер — самый педантичный исполнитель на свете. Он не догадывается, не додумывает и не прощает неточностей. Именно поэтому алгоритмы для него приходится записывать особенно строго.

Алгоритмы вокруг нас

Слово звучит «по-компьютерному», но алгоритмы окружают нас с утра до вечера. Любая чёткая инструкция, которую можно выполнить шаг за шагом, — это алгоритм.

Алгоритм из жизниИсходные данныеРезультат
Рецепт борщаПродукты, кастрюляГотовый суп
Инструкция к шкафу IKEAДетали, ключ, шурупыСобранный шкаф
Маршрут до домаТочка стартаТы у подъезда
Утренняя рутинаСонный тыГотов к выходу

У всех этих примеров общая черта: есть исходные данные, есть последовательность шагов и есть результат. Ровно так устроен и алгоритм для компьютера — только исполнитель у него электронный, а команды нужно записать без единой двусмысленности.

Пять свойств алгоритма

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

СвойствоЧто означаетЧто будет, если нарушить
ДискретностьАлгоритм разбит на отдельные шаги, которые выполняются по очереди«Сделай красиво» — непонятно, с чего начать и где конец шага
ПонятностьКаждая команда входит в систему команд исполнителя«Приготовь борщ» роботу-пылесосу — команды нет, исполнитель встанет
ОпределённостьКаждый шаг понимается однозначно, никакой двусмысленности«Посоли по вкусу» — у каждого вкус свой, результат непредсказуем
РезультативностьАлгоритм завершается за конечное число шагов и даёт результат«Дели на ноль, пока не надоест» — зацикливание, ответа не будет
МассовостьАлгоритм решает не одну задачу, а целый класс похожих«Сложи 2 и 3» работает ровно один раз и больше ни для чего

Про массовость стоит сказать отдельно. Алгоритм «сложи 2 и 3» не очень ценен. А вот алгоритм «сложи два любых числа» работает и для 2 и 3, и для 100 и 500, и для любых других чисел. Хорошие алгоритмы пишут «про запас» — сразу для всех похожих случаев.

Как записывают алгоритмы

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

1. Словесно

Обычным человеческим языком:

Возьми первое число. Возьми второе число. Сложи их. Сообщи сумму.

Понятно человеку, но легко допустить двусмысленность: а если чисел три? а «сообщи» — это вслух или записать?

2. Псевдокодом

Полуформальная запись — уже похоже на программу, но без строгих правил языка:

ввод a
ввод b
s ← a + b
вывод s

3. Блок-схемой

Рисунок из фигур и стрелок. Нажимай на шаги — увидишь, как исполнитель движется по схеме и как меняются переменные:

a = int(input("Первое число"))
b = int(input("Второе число"))
s = a + b
print("Сумма:", s)

Обрати внимание: данные сначала вводятся, потом обрабатываются, потом выводится результат. По такому плану — ввод → обработка → вывод — устроено большинство алгоритмов.

4. Программой

На настоящем языке программирования. Вот тот же алгоритм на Python — нажми «Запустить» и посмотри результат:

a = 7
b = 5
s = a + b
print("Сумма:", s)

Вывод:

Сумма: 12

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

Зачем нужны блок-схемы

Блок-схема — это графическое изображение алгоритма. Каждый шаг рисуется фигурой определённой формы (форма подсказывает, что за действие), а стрелки показывают, в каком порядке шаги выполняются.

Блок-схемы хороши тем, что:

  • видна структура алгоритма: где он идёт прямо, где разветвляется, где крутится в цикле;
  • они не привязаны к языку программирования — схему можно превратить и в Python, и в Pascal;
  • по ним удобно искать ошибки ещё до того, как написан код;
  • они встречаются в заданиях ОГЭ и ЕГЭ — уметь их читать обязательно.

Алгоритм сложения шёл строго по прямой. Но как только в задаче появляется выбор, схема разветвляется. Вот алгоритм, который находит большее из двух чисел: ромб задаёт вопрос, и от ответа зависит, по какой стрелке пойдёт исполнитель. Прогони его с разными числами:

a = int(input("Первое число"))
b = int(input("Второе число"))
if a > b:
    print("Наибольшее:", a)
else:
    print("Наибольшее:", b)

Это уже разветвляющийся алгоритм. Подробно фигуру ромба и ветвления мы разберём в отдельной статье, а пока запомни: как только в алгоритме есть «если… то…», на схеме появляется ромб с двумя выходами.

Частые заблуждения

  • «Алгоритм — это только про компьютеры». Нет. Рецепт, инструкция, маршрут — тоже алгоритмы. Компьютер просто самый требовательный исполнитель.
  • «Блок-схемы нужны только в школе». Нет. Инженеры и программисты рисуют схемы, чтобы продумать сложную логику до написания кода и объяснить её коллегам.
  • «У алгоритма всегда один правильный вид». Нет. Одну задачу можно решить разными алгоритмами, а каждый алгоритм — записать четырьмя способами.
  • «Если инструкция длинная, это уже алгоритм». Не обязательно. Без определённости и результативности это просто текст: «думай о хорошем, пока не повезёт» — не алгоритм.

Словарь терминов

ТерминЗначение
АлгоритмКонечная последовательность точных команд, ведущая от данных к результату
ИсполнительТот, кто выполняет команды алгоритма (человек, робот, компьютер)
Система командНабор действий, которые исполнитель умеет выполнять
Блок-схемаГрафическая запись алгоритма из фигур и стрелок
ПсевдокодПолуформальная запись алгоритма, похожая на программу

Где это пригодится на экзамене

Тема входит в программу ОГЭ и ЕГЭ по информатике. В заданиях просят прочитать готовую блок-схему и сказать, что выведет алгоритм, определить значение переменной после выполнения или, наоборот, подобрать исходные данные под нужный результат. Поэтому главный навык здесь — не рисовать схемы красиво, а трассировать их: проходить по шагам и следить за переменными. Этим мы займёмся в статье про трассировку.

Что мы узнали

  • Алгоритм — конечная последовательность точных команд, ведущая к результату.
  • Исполнитель выполняет алгоритм и понимает только команды из своей системы команд.
  • У алгоритма пять свойств: дискретность, понятность, определённость, результативность, массовость — и каждое можно «сломать».
  • Алгоритм можно записать словами, псевдокодом, блок-схемой или программой.
  • Блок-схема — наглядный и точный способ записи: фигуры обозначают действия, стрелки — порядок, а ромб — выбор.
Проверьте себя
1. Какое определение алгоритма верное?
AЛюбая инструкция, написанная на бумаге
BКонечная последовательность точных команд, ведущая от данных к результату
CПрограмма на языке Python
DРисунок из фигур и стрелок
2. Робот-пылесос не умеет варить борщ. Какое свойство алгоритма «приготовь борщ» для него нарушено?
AДискретность
BМассовость
CПонятность
DРезультативность
3. Команда «посоли по вкусу» нарушает свойство алгоритма. Какое?
AОпределённость
BКонечность
CМассовость
DДискретность
4. Чем блок-схема удобнее словесной записи алгоритма?
AОна короче любого текста
BЕё понимает только компьютер
CВ ней наглядно видна структура: где прямой ход, где ветвление, где цикл
DЕё нельзя превратить в программу
5. В алгоритме появилось условие «если a больше b, то…». Какая фигура отвечает за это на блок-схеме?
AПрямоугольник
BРомб
CПараллелограмм
DОвал
Поддержать проект