Что такое алгоритм и блок-схема
Разбираемся, что такое алгоритм и исполнитель, какими пятью свойствами обладает любой алгоритм, как его записывают и почему блок-схема — самый наглядный способ. С двумя живыми схемами и запускаемым кодом.
Представь, что ты объясняешь другу, как дойти от школы до твоего дома. «Выйди из ворот, поверни налево, иди до светофора, перейди дорогу, третий подъезд». Поздравляем — ты только что составил алгоритм. Вся информатика начинается с этого простого умения: разбивать задачу на чёткие шаги.
Откуда взялось слово. «Алгоритм» — это искажённое имя учёного. В 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)
Это уже разветвляющийся алгоритм. Подробно фигуру ромба и ветвления мы разберём в отдельной статье, а пока запомни: как только в алгоритме есть «если… то…», на схеме появляется ромб с двумя выходами.
Частые заблуждения
- «Алгоритм — это только про компьютеры». Нет. Рецепт, инструкция, маршрут — тоже алгоритмы. Компьютер просто самый требовательный исполнитель.
- «Блок-схемы нужны только в школе». Нет. Инженеры и программисты рисуют схемы, чтобы продумать сложную логику до написания кода и объяснить её коллегам.
- «У алгоритма всегда один правильный вид». Нет. Одну задачу можно решить разными алгоритмами, а каждый алгоритм — записать четырьмя способами.
- «Если инструкция длинная, это уже алгоритм». Не обязательно. Без определённости и результативности это просто текст: «думай о хорошем, пока не повезёт» — не алгоритм.
Словарь терминов
| Термин | Значение |
|---|---|
| Алгоритм | Конечная последовательность точных команд, ведущая от данных к результату |
| Исполнитель | Тот, кто выполняет команды алгоритма (человек, робот, компьютер) |
| Система команд | Набор действий, которые исполнитель умеет выполнять |
| Блок-схема | Графическая запись алгоритма из фигур и стрелок |
| Псевдокод | Полуформальная запись алгоритма, похожая на программу |
Где это пригодится на экзамене
Тема входит в программу ОГЭ и ЕГЭ по информатике. В заданиях просят прочитать готовую блок-схему и сказать, что выведет алгоритм, определить значение переменной после выполнения или, наоборот, подобрать исходные данные под нужный результат. Поэтому главный навык здесь — не рисовать схемы красиво, а трассировать их: проходить по шагам и следить за переменными. Этим мы займёмся в статье про трассировку.
Что мы узнали
- Алгоритм — конечная последовательность точных команд, ведущая к результату.
- Исполнитель выполняет алгоритм и понимает только команды из своей системы команд.
- У алгоритма пять свойств: дискретность, понятность, определённость, результативность, массовость — и каждое можно «сломать».
- Алгоритм можно записать словами, псевдокодом, блок-схемой или программой.
- Блок-схема — наглядный и точный способ записи: фигуры обозначают действия, стрелки — порядок, а ромб — выбор.