Что такое алгоритм
Алгоритм — это понятный и точный план действий из отдельных шагов, который приводит к результату за конечное число шагов. Важно, что его может выполнить не только автор, но и кто-то другой — человек или машина.
Слово «алгоритм» звучит сложно, но ребёнок сталкивается с алгоритмами каждый день. Утром он чистит зубы по одному и тому же плану, в школе решает пример по правилу, в игре проходит уровень по заученному маршруту. Разница с программированием в одном: компьютер не догадывается, что вы имели в виду. Если в алгоритме пропущен шаг, машина его не выполнит. Джаннетт Винг назвала умение составлять такие планы вычислительным мышлением и предложила считать его базовым навыком для всех, а не только для программистов[1].
Объяснять алгоритмы детям лучше через игру, а не через определение. Попробуйте простую игру: ребёнок даёт вам команды, как дойти от двери до стола, а вы выполняете их буквально. «Иди вперёд» — и вы идёте, пока не упрётесь в стену. Уже после двух-трёх попыток становится ясно, почему в алгоритме нужны числа, повороты и условия остановки.
Исполнитель и система команд
Исполнитель — это тот, кто выполняет алгоритм: человек, робот, компьютер или персонаж на экране. У каждого исполнителя есть система команд — список действий, которые он умеет выполнять, и других команд он не понимает.
Например, у робота в лабиринте ниже всего несколько команд: «вперёд», «повернуть налево», «повернуть направо», а также блоки повторения и условия. Попросить его «обойти стену» нельзя — такой команды нет, её придётся собрать из простых. В школьной информатике по программе 8 класса изучают исполнителей Робот, Черепашка и Чертёжник[2], и у каждого своя небольшая система команд.
| Исполнитель | Пример команд | Результат |
| Робот в лабиринте | вперёд, повернуть налево, повторить 3 раза | Доходит до флажка |
| Черепашка | вперёд 100, направо 90, опустить перо | Рисует фигуру |
| Повар | нарезать, смешать, жарить 5 минут | Готовое блюдо |
| Компьютер с Python | print(), input(), for, if | Работающая программа |
Чем меньше команд у исполнителя, тем важнее их порядок. Эту идею развивал Сеймур Пейперт: в его языке Logo ребёнок управлял черепашкой и учился, представляя себя на её месте[5]. Учебные исполнители из федеральной образовательной программы продолжают ту же линию. Именно поэтому учебные исполнители так полезны: внимание ребёнка уходит на сам алгоритм, а не на поиск нужной кнопки.
Свойства хорошего алгоритма
У хорошего алгоритма 4 главных свойства: он понятен исполнителю, точен, состоит из отдельных шагов и заканчивается за конечное число шагов, выдавая результат.
- Понятность. Каждая команда входит в систему команд исполнителя.
- Точность. Команда понимается однозначно: «немного пройди» — не команда, «пройди 3 клетки» — команда.
- Дискретность. Алгоритм разбит на отдельные шаги, которые выполняются по очереди.
- Конечность и результат. Рано или поздно алгоритм заканчивается и даёт то, ради чего его писали.
Проверьте любой домашний «алгоритм» по этому списку. «Собери портфель» не годится: непонятно, что именно положить. «Положи в портфель дневник, пенал и учебники по расписанию на завтра» — уже почти алгоритм. Для алгоритмов детям 8–10 лет такое разбирательство превращается в игру: найди, где инструкция неточная, и исправь её.
Линейный алгоритм
Линейный алгоритм — это алгоритм, в котором все команды выполняются по очереди, по одному разу, без пропусков и повторов. Это самый простой вид, с него начинают и в Scratch, и в Python.
Пример линейного алгоритма — приготовить чай: налить воду, вскипятить, положить пакетик, залить кипятком, подождать 3 минуты. Порядок менять нельзя, и это первое, что стоит показать, объясняя линейные алгоритмы детям: если сначала залить пакетик холодной водой, а потом кипятить чашку, результат будет другим. В Python линейная программа выглядит как несколько строк подряд:
imya = input("Как тебя зовут? ")
print("Привет,", imya)
print("Сейчас посчитаем: 7 * 8 =", 7 * 8)
Каждая строка выполняется один раз, сверху вниз. Если поменять местами первые две строки, Python сообщит, что переменной ещё нет. Это хороший первый урок: компьютер выполняет ровно то, что написано, и именно в том порядке. Официальная документация Python описывает это правило так же: инструкции выполняются последовательно, если их не меняет условие или цикл.
Ветвление: если — иначе
Ветвление — это место в алгоритме, где исполнитель проверяет условие и выбирает один из двух путей. В жизни это звучит как «если идёт дождь, возьми зонт, иначе надень кепку».
Без ветвлений алгоритм одинаково ведёт себя в любой ситуации, а реальный мир так не работает. Робот в лабиринте не знает заранее, где стена, поэтому ему нужна команда «если путь впереди свободен — иди вперёд, иначе поверни». В Python ветвление записывают словами if и else:
temp = int(input("Сколько градусов на улице? "))
if temp < 0:
print("Надень шапку и варежки")
else:
print("Можно идти в кепке")
Обратите внимание на двоеточие и отступ: всё, что сдвинуто вправо, относится к своей ветке. Подробно условные конструкции разобраны в уроке про условия if в Python.
Цикл: повторить несколько раз
Цикл — это часть алгоритма, которая повторяется несколько раз подряд: заданное число раз или пока верно условие. Вместо «шаг, шаг, шаг, шаг» пишут «повторить 4 раза: шаг».
Циклы делают алгоритм короче и понятнее. Чтобы нарисовать квадрат, Черепашке нужно 8 команд без цикла и всего 2 команды внутри «повторить 4 раза». Брэннан и Резник относят циклы к ключевым понятиям вычислительного мышления наряду с последовательностями, событиями и условиями[3]. Есть два вида повторений: «повторить N раз», когда число повторов известно заранее, и «повторять, пока не…», когда исполнитель сам проверяет, пора ли остановиться.
for i in range(3):
print("Шаг вперёд")
print("Пришли!")
Эта программа трижды выводит «Шаг вперёд», а затем один раз «Пришли!». Разобраться в записи поможет урок о цикле for в Python, а в блочной форме то же самое показано в статье про циклы в Scratch.
Бытовые алгоритмы для детей: примеры из жизни
Чтобы понять алгоритм, не нужен компьютер: подойдут 5 обычных домашних дел. В каждом легко найти линейные шаги, условия и повторения.
| Дело | Линейные шаги | Условие | Повторение |
| Почистить зубы | взять щётку, выдавить пасту | если паста закончилась — взять новую | чистить 2 минуты |
| Перейти дорогу | подойти к переходу | если зелёный — идти, иначе ждать | ждать, пока не загорится зелёный |
| Полить цветы | набрать лейку | если земля сухая — полить | для каждого горшка |
| Собрать конструктор | открыть инструкцию | если детали нет — найти | шаг за шагом до последней страницы |
| Сделать зарядку | встать, вытянуть руки | если устал — передохнуть | 10 приседаний |
Бытовые алгоритмы детям понятнее любых определений. Попросите ребёнка записать один такой алгоритм на бумаге, а потом выполнить его «как робот» — строго по написанному. Ошибки в записи обнаружатся сами собой, и это весело. Больше подобных игр — в материале о программировании без компьютера.
Робот в лабиринте: как проходить уровни с циклами
Лабиринт вверху страницы — это 4 уровня с циклами (уровни 5–8): робот должен дойти до флажка, а команды для него собирают из блоков «вперёд», «повернуть налево/направо», «повторить N раз» и «повторять, пока не у флажка».
- Посмотрите на поле. Посчитайте, сколько клеток робот проходит по прямой до поворота.
- Найдите повторяющийся кусок. Если путь похож на лестницу «вперёд, налево, вперёд, направо», этот кусок можно положить в «повторить».
- Соберите программу и нажмите «▶ Запустить». Робот выполнит команды по очереди.
- Не получилось — нажмите «Сначала». Проследите, на каком шаге робот свернул не туда, и исправьте только этот блок.
Главная цель уровней с циклами — уложиться в меньшее число блоков. Такой лабиринт продолжает идею учебных исполнителей из программы 8 класса по ФОП ООО, а на ОГЭ по материалам ФИПИ задание 15 тоже требует составить программу для исполнителя в среде КуМир. Если программа из 12 блоков работает, попробуйте сократить её до 4–5 с помощью повторения. Остальные уровни и правило правой руки описаны на странице о роботе в лабиринте.
Когда игра в алгоритмы не поможет
Если цель — научиться писать настоящие программы, одних игр с карточками и лабиринтами не хватит. Вот 4 ситуации, где они не помогут.
- Ребёнку 13–14 лет и он готовится к ОГЭ. Нужны задачи на языке программирования, а не только блоки.
- Все 12 уровней лабиринта пройдены. Дальше пора переходить к Scratch-проекту или к Python.
- Ребёнку 4 года и он ещё не различает «право» и «лево». Сначала игры на ориентацию, команды потом.
- Занятие длится больше 40 минут подряд. Внимание падает, и разбор ошибок превращается в угадывание.
«Алгоритмическое мышление автоматически сделает ребёнка отличником по математике». Это не подтверждается: метаанализ Scherer и соавторов показал средний положительный эффект обучения программированию, но перенос на другие навыки не происходит сам собой — нужен продуманный урок[4].
«Алгоритмы — это только для компьютеров». Миф: исполнителем может быть человек, а записать план можно на обычном листе бумаги.
Чего делать нельзя
Нельзя превращать знакомство с алгоритмами в зубрёжку определений: ребёнок должен сам составлять и проверять планы. Вот 6 правил для взрослых.
- Нельзя подсказывать готовый маршрут в лабиринте — пусть ребёнок ошибётся и найдёт шаг сам.
- Не следует начинать с циклов, пока не освоены простые линейные команды.
- Не стоит давать «команды», которых нет в системе исполнителя — это ломает саму идею.
- Не допускается ругать за неудачный запуск: ошибка — нормальный шаг отладки.
- Нельзя проверять только результат — спросите, почему программа работает.
- Не стоит сидеть над одним уровнем больше 15 минут — сделайте перерыв и вернитесь позже.
Источники
[1] Wing J. M. Computational thinking // Communications of the ACM. 2006. Vol. 49, № 3. P. 33–35.
[2] Приказ Минпросвещения России от 18.05.2023 № 370 «Об утверждении федеральной образовательной программы основного общего образования».
[3] Brennan K., Resnick M. New frameworks for studying and assessing the development of computational thinking // Proceedings of the 2012 Annual Meeting of the American Educational Research Association. Vancouver, 2012.
[4] Scherer R., Siddiq F., Sánchez Viveros B. The cognitive benefits of learning computer programming: A meta-analysis of transfer effects // Journal of Educational Psychology. 2019. Vol. 111, № 5. P. 764–792.
[5] Papert S. Mindstorms: Children, Computers, and Powerful Ideas. New York: Basic Books, 1980.
Вопросы и ответы
С какого возраста объяснять алгоритмы детям?
Простые игры с командами «шаг вперёд, повернись» подходят уже дошкольникам, если ребёнок различает право и лево. Записывать планы и проходить лабиринт удобнее с 7–8 лет.
Чем алгоритм отличается от программы?
Алгоритм — это план, его можно записать словами или нарисовать. Программа — тот же план, записанный на языке, который понимает компьютер, например на Python.
Нужно ли учить названия свойств наизусть?
Для школьной контрольной — да, но важнее уметь объяснить их на примере. Если ребёнок понимает, почему «немного пройди» — плохая команда, термин запомнится легко.
Что делать, если ребёнок застрял на уровне лабиринта?
Предложите пройти маршрут пальцем по экрану и проговорить каждый шаг вслух. Обычно ошибка находится на первом же повороте.
Можно ли изучать алгоритмы без компьютера?
Да, бумага, карточки с командами и игра «робот-родитель» дают ту же идею. Компьютер нужен, когда хочется проверить план быстро и много раз.
Какой язык выбрать после лабиринта?
Для 8–11 лет удобен Scratch с его блоками, для 11–13 лет и старше — Python. Идея команд, условий и повторений в обоих одинаковая.