Алгоритм — это понятные инструкции, которые по шагам описывают, как решить задачу. По ним можно собрать школьный рюкзак, найти число в списке или провести игрового персонажа мимо препятствий. Для первого знакомства с алгоритмами хватит бумаги, карандаша и задачи, которую хочется решить.
Например, сборы в школу можно описать так:
- Открой расписание на завтра.
- Для каждого предмета проверь, какие учебники и тетради понадобятся.
- Положи их в рюкзак.
- Проверь, всё ли собрано.
Расписание здесь — входные данные, то есть информация, с которой начинается работа. Собранный рюкзак — результат. В программировании полученные результаты называют выходными данными.
Алгоритм описывает способ решения. Чтобы компьютер выполнил его, команды записывают в программе — например, блоками в Scratch или текстом на Python. Один алгоритм можно реализовать на разных языках программирования.
Порядок, условия и повторения
Начни с трёх основных конструкций. Они встречаются и в первых учебных проектах, и в больших программах.
| Конструкция | Как работает | Пример |
|---|---|---|
| Последовательность | Команды выполняются в заданном порядке. | Взять лист, нарисовать квадрат, раскрасить его. |
| Условие | Следующее действие зависит от результата проверки. | Если персонаж коснулся монеты — добавить очко. |
| Повторение, или цикл | Действия повторяются заданное количество раз или пока выполняется условие. | Повторить пять раз: сделать шаг вперёд. |
Порядок команд влияет на результат. Если проверить пустой рюкзак, а потом положить в него учебники, такая проверка не поможет узнать, всё ли ты собрал.
Условие удобно выразить словами «если… то… иначе…»: если идёт дождь — возьми зонт, иначе — выходи без него. Цикл сокращает запись: вместо пяти одинаковых команд «сделай шаг» можно написать «Повтори пять раз: сделай шаг». Самих шагов всё равно будет пять.
Чтобы хранить и менять данные, в программе используют переменные. Например, переменная «Счёт» сначала равна нулю. Поймал предмет — прибавил одно очко. Начал новую игру — снова установил ноль. Так программа отслеживает текущее количество очков.
Где ты уже встречаешь алгоритмы
Алгоритмы работают в привычных сервисах и играх:
- Google использует множество систем, чтобы находить подходящие страницы и определять порядок результатов поиска.
- YouTube подбирает рекомендации с учётом истории просмотров, реакций и других сигналов.
- Навигатор рассчитывает маршрут между начальной и конечной точками.
- Компьютерная игра проверяет столкновения, считает очки и выбирает действия противника.
Иногда в алгоритме предусмотрен случайный выбор: например, перемешать карточки или выбрать момент, когда персонаж подпрыгнет. Правила заданы заранее, но результаты разных запусков могут отличаться.
Первый алгоритм: проведи робота к звезде
Сначала определи цель: фишка должна добраться до звезды, не проходя через препятствия. Нарисуй поле 5 × 5 клеток. Поставь фишку в нижний левый угол и обозначь, что она смотрит вверх. Звезду нарисуй на три клетки выше и две клетки правее стартовой позиции.
Теперь составь маршрут:
- Договорись о командах. Например: «шаг вперёд», «поворот налево», «поворот направо». Шаг перемещает робота в соседнюю клетку, а поворот меняет направление — робот остаётся на месте.
- Запиши решение. У каждой команды должно быть одно понятное значение.
- Выполни команды по порядку. Следи, куда ведёт каждый шаг и в какую сторону смотрит робот после поворота.
- Исправь ошибки. Если фишка не дошла до звезды, найди команду, после которой маршрут пошёл не туда. Внеси правку и проверь всё с начальной позиции.
После успешной проверки добавь препятствие и составь новый маршрут. Друг или взрослый может сыграть робота: выполнять твои команды буквально, без подсказок и догадок.
Понятность инструкции зависит от исполнителя. Человеку достаточно сказать «возьми учебник», если он знает, где тот лежит. Роботу, который умеет только ходить и поворачиваться, потребуется точный маршрут.
Алгоритм можно записать списком или показать блок-схемой. Прямоугольники в ней обычно обозначают действия, ромбы — проверку условий, а стрелки показывают следующий шаг. У ромба с вопросом «Идёт дождь?» будут два выхода: «да» и «нет».
Как проверить, что алгоритм работает
Проверь не только результат, но и то, завершится ли выполнение задачи. Например: «Начни с нуля. Пока число меньше трёх, прибавляй к нему ноль». Такой цикл будет бесконечным: число останется нулём. Чтобы дойти до трёх, нужно менять число внутри цикла — например, прибавлять единицу.
Одна удачная попытка показывает, что решение сработало на конкретном примере. Другие исходные данные могут выявить ошибку. Особенно полезно проверять значения на границах условий.
Допустим, по правилам игры участвовать можно с 12 лет. Программа проверяет, что возраст больше 12, и не пропускает двенадцатилетнего игрока. Исправь условие и проверь три случая:
| Возраст | Ожидаемый результат |
|---|---|
| 11 лет | Участвовать нельзя. |
| 12 лет | Участвовать можно. |
| 13 лет | Участвовать можно. |
Здесь нужно условие «возраст больше или равен 12». Именно проверка возраста 12 лет помогает заметить разницу между «старше 12» и «с 12 лет».
В таких упражнениях ты учишься разбивать задачу на шаги, объяснять команды другому человеку, прослеживать их действие, находить ошибки и сравнивать решения. Всё это пригодится при создании игр, анимации и других программ.
Поиск и сортировка: разные способы решения
Одну задачу часто можно решить несколькими способами. Допустим, нужно найти число в списке. Можно проверять элементы по одному, начиная с первого. Это линейный поиск. Если в списке сто разных чисел и нужное стоит последним, потребуется сто проверок.
Если числа расположены по возрастанию, подойдёт бинарный поиск: посмотри на середину списка и продолжай искать только в той половине, где может находиться нужное число. После каждой неудачной проверки область поиска уменьшается примерно вдвое.
Попробуй этот способ в игре «Угадай число от 1 до 100». Друг загадывает целое число и после каждой попытки отвечает «больше», «меньше» или «угадал».
- Начни с 50.
- Если загаданное число больше, останется диапазон от 51 до 100. Следующая попытка — 75.
- Если число меньше 75, продолжай искать от 51 до 74. Каждый раз выбирай середину оставшегося диапазона.
При верных подсказках хватит максимум семи попыток. Но помни: бинарный поиск работает с упорядоченными данными. Если числа в списке перемешаны, проверка середины не позволит правильно отбросить половину вариантов.
А теперь разложи карточки с числами по возрастанию. Найди самую маленькую и положи первой. Среди оставшихся снова найди самую маленькую и положи следующей. Повторяй, пока карточки не закончатся. Это принцип сортировки выбором.
Где продолжить
Выбирай ресурс под то, что хочется попробовать: придумать историю, создать игру или подробнее разобраться в поиске и сортировке.
| Ресурс | Кому подойдёт | С чего начать |
|---|---|---|
| ScratchJr | Основная аудитория — дети 5–7 лет. | Собрать короткую историю с движением персонажей. |
| Scratch | Основная аудитория — дети и подростки 8–16 лет. | Создать игру со счётом, условиями и повторениями. |
| Code.org | Начинающим школьникам. | Пройти задания с командами, циклами и условиями. Есть материалы на русском. |
| Blockly Games | Начинающим без опыта программирования. | Решать лабиринты и задачи с блоками, постепенно переходя к текстовому коду. |
| CS Unplugged | Для занятий с другом или взрослым. | Попробовать игры и задачи по информатике с карточками и другими простыми предметами, без компьютера. |
| Khan Academy: Algorithms | Тем, кто готов разбираться глубже и читать на английском. | Изучить поиск, сортировку, рекурсию и работу с графами. |
У всех перечисленных проектов есть бесплатные инструменты или учебные материалы. Возрастные диапазоны ScratchJr и Scratch — ориентиры создателей, а не строгие ограничения.
Слово «алгоритм» связано с именем математика Мухаммада аль-Хорезми, жившего в IX веке. Сами пошаговые математические методы появились раньше: например, алгоритм Евклида позволяет находить наибольший общий делитель двух чисел.
