Публикации Формирование вычислительного мышления через парадигму «Разделяй и властвуй»: методика «Матрёшка» как инструмент безбарьерного обучения рекурсии

Всероссийский сборник статей и публикаций института развития образования, повышения квалификации и переподготовки.


Язык издания: русский
Периодичность: ежедневно
Вид издания: сборник
Версия издания: электронное сетевое
Публикация: Формирование вычислительного мышления через парадигму «Разделяй и властвуй»: методика «Матрёшка» как инструмент безбарьерного обучения рекурсии
Автор: Бураков Александр Юрьевич

Аннотация

Статья посвящена одной из наиболее устойчивых дидактических проблем информатики — обучению рекурсивным алгоритмам. Констатируется, что традиционный подход, начинающийся с формального определения и немедленного перехода к синтаксису, провоцирует когнитивный диссонанс между линейным мышлением обучающегося и стековой природой выполнения рекурсии. Предлагается методика «Матрёшка», основанная на принципе поэтапной интериоризации: от физического моделирования вложенных структур через графическую нотацию «точек возврата» к формальной записи на языке программирования. Обосновывается эффективность отсроченного введения синтаксиса и приоритет структурной самоподобности задачи над технической реализацией.

Введение

Рекурсия традиционно признается одним из краеугольных камней вычислительного мышления. Способность представить задачу через её уменьшенную копию является маркером зрелости алгоритмического интеллекта. Однако практика преподавания демонстрирует парадоксальную ситуацию: студенты, успешно освоившие циклы и массивы, сталкиваются с практически непреодолимым барьером при переходе к рекурсивным функциям.

Анализ причин затруднений позволяет выделить два основных фактора. Во-первых, проявление «эффекта homunculus»: обучающийся склонен представлять, что вызываемая функция «знает», как решить задачу, не детализируя механизм этого знания. Во-вторых, разрыв между семантикой и операционной моделью: написание factorial(n-1) не сопровождается визуализацией создания нового экземпляра функции с собственным набором переменных.

Традиционная методика обучения вводит рекурсию через математическое определение (базовый случай + шаг индукции), немедленно подкрепляя его кодом. С точки зрения когнитивной психологии, это создает двойную нагрузку: студент одновременно пытается осмыслить новую парадигму и овладеть синтаксическим инструментарием. Цель настоящей работы — предложить и верифицировать методику «Матрёшка», в которой синтаксис языка отчуждается от логической структуры рекурсии на начальном этапе обучения.

Теоретическое обоснование

Методологической основой является теория поэтапного формирования умственных действий П.Я. Гальперина. Согласно ей, полноценное умственное действие формируется только после прохождения этапа материализованного (или материального) действия. Применительно к рекурсии это означает необходимость физического манипулирования вложенными объектами до того, как их свойства будут описаны средствами языка программирования.

Кроме того, мы опираемся на концепцию «понятийной метафоры» Дж. Лакоффа. Рекурсия часто преподносится через метафору «зеркала в зеркале», однако эта метафора бесконечна и не отражает критически важного понятия базового случая. Методика «Матрёшка», напротив, предлагает метафору конечной вложенности с обязательным «дном» — самой маленькой неразъёмной фигуркой.

Структура методики «Матрёшка»

Методика состоит из четырех последовательных этапов, прохождение которых обязательно. Переход к следующему этапу осуществляется только после верификации полного понимания предыдущего.

Этап 1. Материальный (физическая матрёшка)

Оборудование: наборы традиционных деревянных матрёшек (желательно с количеством вложений от 5 до 7). Каждая матрёшка снабжается стикером с уникальным идентификатором (буквой или цифрой).

Сценарий работы:

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

Ключевой педагогический момент: студент обязан проговаривать свои действия вслух: «Я открыл матрёшку А. Внутри матрёшка Б. Я откладываю А и работаю с Б». Это формирует речевую модель стекового поведения. Когда достигается самая маленькая матрёшка (базовый случай), студент объявляет: «Это дно. Начинаю закрывать». Далее в обратном порядке матрёшки собираются и пересчитываются.

На данном этапе полностью отсутствует терминология программирования. Используются только слова «открыть», «отложить», «вернуться», «дно».

Этап 2. Графический (нотация «точек возврата»)

Студент переходит за парту. Ему выдаётся бланк с задачей (например, вычисление суммы цифр числа) и чистый лист в клетку. Запрещено писать код.

Задача студента — изобразить процесс в виде «диаграммы состояний»:

  1. Нарисовать прямоугольник первого вызова, вписать в него значение параметра.
  2. Нарисовать стрелку вниз к следующему прямоугольнику.
  3. Зафиксировать место, куда вернётся результат (точка возврата), пометив её кружком с крестиком на ребре прямоугольника.
  4. Достигнув базового случая (например, число становится однозначным), обвести его двойной рамкой.
  5. Вручную промоделировать обратный ход, проставляя значения карандашом и двигаясь снизу вверх по стрелкам, сверяясь с точками возврата.

Данная техника превращает невидимый стек вызовов в видимый граф. Студент манипулирует не кодом, а архитектурой вызовов. Преподаватель в это время вводит термины «глубина рекурсии» и «базовый случай» как формальные обозначения уже освоенных на практике явлений.

Этап 3. Псевдокодовый (русскоязычный шаблон)

Только после того, как студент безошибочно строит диаграммы для задач разных типов (линейная рекурсия, древовидная рекурсия на примере чисел Фибоначчи), вводится шаблон на естественном языке:

text

Функция Решить(Задача):
Если Задача простая (базовый случай):
вернуть ОчевидныйОтвет
Иначе:
Часть = уменьшить Задачу
ПромежуточныйРезультат = Решить(Часть)
вернуть ПромежуточныйРезультат, скомбинировав с текущей частью

Студент заполняет этот шаблон для конкретной задачи, всё ещё не используя синтаксис конкретного языка. Например, для факториала: «Если n равно 1, вернуть 1. Иначе: часть = n-1. ПромРезультат = Решить(часть). Вернуть n умножить на ПромРезультат».

На этом этапе формируется алгоритмическая инвариантность: студент понимает, что рекурсивная структура не зависит от языка реализации.

Этап 4. Синтаксический (кодирование)

Финальный этап — перевод псевдокода в синтаксис Python (или иного языка). Поскольку логическая структура полностью сформирована, студент фокусируется исключительно на формальных правилах записи: двоеточия, отступы, ключевое слово return.

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

Экспериментальная проверка

Исследование проводилось в рамках курса «Алгоритмизация и программирование» на первом курсе педагогического университета. Выборка: 64 студента, разделённые на КГ (n=32) и ЭГ (n=32). В КГ обучение велось традиционным методом (определение, пример кода, упражнения). В ЭГ применялась методика «Матрёшка» в течение трех занятий (6 академических часов).

Диагностический инструментарий включал:

— Тест на понимание стекового механизма (отслеживание порядка вызовов на бумаге);

— Практическую задачу на написание рекурсивного алгоритма обхода бинарного дерева;

— Задачу на выявление ошибок в готовом рекурсивном коде.

Результаты:

— В тесте на понимание стека ЭГ показала средний балл 87% против 58% в КГ. Студенты КГ часто путали порядок возврата значений, демонстрируя непонимание дисциплины LIFO.

— С задачей на обход дерева успешно справились 78% студентов ЭГ и лишь 41% КГ. Характерно, что студенты ЭГ, даже допустив синтаксическую ошибку, демонстрировали верную логическую структуру, тогда как студенты КГ часто писали синтаксически корректный, но семантически неверный код (например, теряли ветку обхода).

— Отсроченный контроль (через 2 месяца) выявил наиболее значимое различие: в задаче на поиск ошибок студенты ЭГ в 2,5 раза чаще идентифицировали отсутствие базового случая как критическую проблему, что говорит о формировании устойчивого паттерна проверки краевых условий.

Обсуждение: феномен «Синтаксической тени»

Анализ ошибок в КГ подтвердил гипотезу о «синтаксической тени». Студенты, начавшие обучение сразу с кода, воспринимали рекурсию как особую форму цикла, где f(n-1) является загадочной командой перехода. Они пытались интерпретировать её в терминах уже известной императивной модели (присваивание, переход), что приводило к конфликту ментальных моделей.

Методика «Матрёшка» снимает этот конфликт, формируя новую ментальную модель «до» предъявления синтаксиса. Физическое манипулирование объектами создает сенсомоторный след в памяти, на который впоследствии накладывается формальная нотация. Это согласуется с концепцией «воплощённого познания» (embodied cognition), утверждающей, что абстрактное мышление укоренено в физическом опыте взаимодействия с миром.

Ограничения методики

Следует отметить, что методика эффективна преимущественно для линейной и древовидной рекурсии. При переходе к более сложным схемам (взаимная рекурсия, хвостовая рекурсия с аккумулятором) материальная метафора требует усложнения. Нами разрабатывается расширение методики с использованием «матрёшек с несколькими отделениями» для визуализации множественных рекурсивных вызовов, однако это требует дополнительной верификации.

Заключение

Методика «Матрёшка» демонстрирует, что основным препятствием к освоению рекурсии является не её объективная сложность, а преждевременное введение синтаксической формы. Отчуждение логической структуры от кода на начальном этапе позволяет студенту сформировать адекватную ментальную модель стековой машины, после чего изучение синтаксиса становится тривиальной задачей. Рекомендуется внедрение данной методики в курсы основ программирования для снижения порога вхождения и профилактики формализма знаний.