Особенности создания задач на программирование на образовательной платформе STEPIK
STEPIK – образовательная платформа, удобная для создания интерактивных уроков по программированию. В этой статье будут подробно рассмотрены шаги с задачами на написание программ. Шагами на STEPIK называются единицы учебного материала, из которых состоят уроки.
Владимир ШУБИНКИН,
учитель информатики
высшей квалификационной категории
лицея № 131 города Казани
Интерфейс редактора шага «Программирование» состоит из четырех основных частей: условие, тестовые данные, языки и шаблоны, расширенный редактор (рис. 1).

Рис. 1. Интерфейс редактора шага «Программирование»
Рассмотрим их подробно.
Условие. Этот раздел универсален для всех типов шагов. В поле записывается условие задачи. Поддерживается форматирование: полужирное, курсивное, подчеркнутое начертание, выделение кода программы, стили, цвет текста, нумерованные и маркированные списки, выравнивание. Кроме того, можно добавить ссылку, картинку, формулу TeX, таблицу, подсветку кода для конкретного языка программирования. Также присутствует возможность редактировать html-код условия.
Тестовые данные. В этом разделе заполняются данные, на которых будут тестироваться программы учащихся: входные данные и ожидаемый результат. В поле «Ввод» необходимо ввести то, что будет получать программа на вход. В поле «Вывод» указывается то, что программа должна вывести. Можно создать до 100 тестов. Важно, чтобы они проверяли все нюансы, заложенные в задаче, и программа с ошибкой не могла пройти хотя бы один тест. По умолчанию учащийся будет видеть данные только первого теста. Можно увеличить количество примеров, чтобы продемонстрировать различное поведение программы или поведение в крайних случаях. Последнее повышает вероятность самостоятельного решения. Можно совсем скрыть тесты. Например, если программа должна произвести расчет для конкретных данных и тест всего один. В этом случае учащийся теряет возможность запускать программу прямо на платформе и может только сдать ее для автоматической проверки.
Если в задаче важна оптимизация по времени или по памяти, то можно ограничить соответствующие параметры. Это важно, например, при проверке числа на простоту (простым называется число, которое делится только на себя и на единицу). Следует подобрать ограничение по времени так, чтобы решение с временной асимптотикой O(n) не принималось, но засчитывалось эффективное решение с асимптотикой O(√n).
Присутствует возможность вывести комментарии к верному и неверному ответам, чтобы похвалить учащегося, напомнить теорию или дать подсказку по решению.
Языки и шаблоны. По умолчанию учащимся доступны для использования все языки программирования, поддерживаемые платформой. Но на практике достаточно ограничиться одним-двумя языками. Например, запись
::python3.12
::c++
в поле «Шаблоны кода и допустимые языки» означает, что учащимся будут доступны на выбор языки программирования python3.12 и c++.
С помощью шаблонов можно написать часть кода за учащегося, чтобы ему осталось только доработать его или исправить ошибки как в примере на рис. 2.

Рис. 2. Использование шаблонов кода
Шаблоны кода могут быть скрытыми. Тогда они помещаются в разделах ::header и ::footer. Код из раздела ::header выполнится до кода учащегося, код из раздела ::footer – после. В примере на рис. 3 функция blackbox() не видна учащемуся, но доступна для вызова. На рис. 4 продемонстрировано, как можно использовать ::header и ::footer, чтобы сконцентрировать внимание учащегося на основной задаче, не думая о вспомогательных (в данном случае о вводе и выводе данных). Частым сценарием использования скрытых шаблонов кода является проверка функций, написанных учащимся. В задаче на рис. 5 требуется написать только функцию. Ее вызов вынесен во входные данные теста. В этом случае входные данные считываются с помощью стандартного потока ввода sys.stdin и выполняются с помощью функции exec() (рис. 6).

Рис. 3. Скрытый шаблон кода

Рис. 4. Шаблон с ::header и ::footer

Рис. 5. Задача на написание функции

Рис. 6. Шаблон кода для проверки функции
Расширенный редактор. Расширенный редактор содержит три функции, которые мы можем менять по своему усмотрению (рис. 7).

Рис.7. Интерфейс расширенного редактора
Функция generate() позволяет автоматически генерировать тесты, а не вводить их вручную в разделе «Тестовые данные». При этом можно комбинировать оба подхода. Например, поставлена задача: «Вводится целое число — номер месяца. Вывести время года, соответствующее этому месяцу (зима, весна, лето или осень). Если введен номер несуществующего месяца, вывести текст «Нет такого месяца!» (без кавычек)». Чтобы не создавать более двенадцати (по количеству месяцев) тестов вручную, воспользуемся функцией generate() как показано на рис. 8.

Рис. 8. Использование функции generate()
Функция позволила сгенерировать входные данные (соответствующие полю ввод в разделе «Тестовые данные») в виде списка строк. Чтобы создать ожидаемые выходные данные, можно использовать функцию solve(), которая принимает на вход элемент списка, созданного функцией generate() и возвращает строку-ответ (рис. 9).

Рис. 9. Использование функции solve()
Можно не использовать функцию solve(), тогда функция generate() должна возвращать не список строк, а список кортежей, в которых первым элементом будет входная строка, а вторым — выходная (рис. 10).

Рис. 10. Функция generate() возвращает входные и выходные данные
Функция check() сверяет ответ, выданный программой учащегося, с ответом из поля «Вывод» раздела «Тестовые данные» либо со значением, возвращаемым функцией solve(), если она определена. По умолчанию функция check() проверяет на полное соответствие без учета пробельных символов в начале и конце (рис. 11).

Рис. 11. Исходный вид функции check()
При этом тело функции check() может быть любым. Например, можно организовать проверку с точностью до 5 знаков после запятой (рис.12), разрешить вывод значений как в строку через пробел (или табуляцию), так и в столбик (рис.13) или разрешить вывод значений в произвольном порядке (рис. 14).

Рис. 12. Проверка с определенной точностью

Рис. 13. Проверка без учета разделяющих пробельных символов

Рис. 14. Проверка без учета порядка
Присутствует возможность вывести комментарий к решению. В этом случае функция check() должна возвращать кортеж, вторым элементом которого будет комментарий (рис. 15).

Рис. 15. Проверка с комментарием
Учащийся увидит комментарий для того теста, который не прошло его решение (рис. 16).

Рис. 16. Комментарий к неверному решению
Таким образом, платформа Stepik является многофункциональным инструментом для создания курсов по программированию (и не только): возможность автоматической проверки, выбор языков программирования, шаблоны кода, расширенные возможности по тестированию программ. Трансляция методических разработок по программированию на эту платформу повысил мотивацию обучающихся по информатике и упростил работу учителя. Теперь учащиеся всегда могут вернуться к теории и задачам, посмотреть закреплённое решение от учителя или задать вопрос в комментариях на платформе. На данный момент в моём курсе [4] доступны задания по программированию, рассчитанные на 8-е классы, в скором времени появятся задачи для 9-х классов. В будущем планируется разработка уроков и для 10–11-х классов.
Список источников
1. Документация TeΧ [Электронный ресурс]. – Режим доступа: https://en.wikibooks.org/wiki/LaTeX/Mathematics (дата обращения: 10. 10. 2025).
2. Образовательная платформа Stepik [Электронный ресурс]. – Режим доступа: https://stepik.org (дата обращения: 10. 10. 2025).
3. Шубинкин В.Н. Функциональные возможности образовательной платформы Stepik для обучения программированию в школе: сборник трудов конференции. // Образование, инновации, исследования как ресурс развития сообщества: материалы II Всеросс. науч.-практ. конф. (Чебоксары, 26 июня 2025 г.) / редколл.: Ж.В. Мурзина [и др.] – Чебоксары: ИД «Среда», 2025. – С. 53–56. – ISBN 978-5-907965-66-9. – DOI 10.31483/r-149776.
4. Шубинкин В.Н. Курс «Информатика. Уроки Владимира Николаевича» / В.Н. Шубинкин // Stepik [Электронный ресурс]. – Режим доступа: https://stepik.org/course/219675 (дата обращения: 10.





Комментарийлар