1. Программирование в школьном образовании
Попытки разработчиков школьной программы приобщить учащихся к программированию пока не имеют должного результата. Ученики не увлекаются программированием, за исключением тех, кто, встав на этот путь и заинтересовавшись профессиональными языками программирования, накопил определенный опыт и добился некоторых достижений в освоении этих языков. Но это исключения, как показывают результаты муниципальных олимпиад по информатике, где у многих участников нулевые или очень низкие баллы. Об этом свидетельствуют и аналитические таблицы результатов тренировочных ОГЭ по информатике: к заданиям 15–16 (программирование на языках КуМир и Python) приступило мало учащихся. Школьный курс информатики на базовом уровне затрагивает программирование только на одном из двух языков — Pascal или Python — и только в ознакомительном плане. Внеурочные курсы затрагивают визуальные языки программирования, такие как Blockly и Scratch (где не требуется освоение синтаксиса языка), а также основы программирования на Python. Но знакомство с этими языками очень поверхностное, а основной целью их изучения ставится создание своей компьютерной игры (особенно что касается Scratch). Это приводит к тому, что учащиеся, захотев создать игру и увидев, что она получается очень примитивной, теряют желание учиться программированию дальше.
2. Мышление программиста
Когда менеджер ставит задачи, он часто говорит абстрактно о тех возможностях, которые нужно реализовать в программном продукте, например: «Хочу, чтобы все спам-фотографии фильтровались автоматически». Программист преобразует это задание в нечто более конкретное: «Необходимо создать алгоритм, который будет обрабатывать фотографии и проверять их на соответствие следующим требованиям: …». Хороший программист умеет перевести задачу с человеческого языка на язык технологий и обратно.
Чтобы мыслить как программист, нужно как минимум:
— иметь алгоритмическое мышление;
— уметь мыслить абстрактно;
— знать синтаксис языков программирования.
Школьное образование в части преподавания дисциплин, связанных с информационными технологиями, должно ставить именно такую цель — развивать у учащегося мышление программиста. Если ученик имеет алгоритмическое мышление, мыслит абстрактно, то ему просто необходимо знать основы нескольких языков программирования. Он должен знать, что все они отличаются лишь структурой программ, синтаксисом и индивидуальными служебными словами, а в остальном одинаковы, потому что имеют общую алгоритмическую основу. Тогда останется лишь глубоко освоить один из профессиональных языков программирования и научиться преобразовывать все абстрактные задачи в алгоритмы, записывая их на этом языке.
3. Алгоритмический язык как старт в программировании
Алгоритмический язык — это формальный язык, предназначенный для записи, реализации и изучения алгоритмов. Он способен наглядно выразить последовательность операций для решения конкретной задачи. Использование служебных слов в алгоритмическом языке делает запись алгоритмов более наглядной и единообразной.
Для изучения основ алгоритмизации при изучении информатики в школах применяется школьный алгоритмический язык, использующий понятные школьнику слова на русском языке. Он был введен в употребление академиком А. П. Ершовым в середине 1980-х годов в качестве основы для безмашинного курса информатики. Школьный алгоритмический язык был впервые опубликован в 1985 году в учебнике «Основы информатики и вычислительной техники» (А. П. Ершов и другие), а с 1990 года использовался в учебнике «Основы информатики и вычислительной техники» для 9–10 классов (А. Г. Кушниренко и другие). В отличие от большинства языков программирования, школьный алгоритмический язык не привязан к архитектуре компьютера.
4. Окно создания программы на школьном алгоритмическом языке
Среда программирования «КуМир» (Комплект Учебных МИРов) — это бесплатное программное обеспечение для изучения школьного алгоритмического языка с русской лексикой и встроенными программными исполнителями. «КуМир» во время написания программы осуществляет постоянный полный контроль ее правильности, сообщая на полях обо всех обнаруженных ошибках. Там же при выполнении программы в пошаговом режиме «КуМир» выводит результаты операций присваивания и значения логических выражений. Это позволяет ускорить процесс освоения азов программирования. «КуМир» работает в различных операционных системах и подходит для обучения основам программирования в школе.
Рис. 1. Окно создания программы на школьном алгоритмическом языке («КуМир»)
Рис. 2. Алгоритм решения квадратного уравнения («КуМир»)
Рис.3 Алгоритм перевода десятичного числа в двоичную систему счисления («КуМир»)
5. Анализ одного задания из ОГЭ
Пример задания 6 из ОГЭ по информатике:
«Приведена программа, записанная на трех языках программирования.
Школьный алгоритмический язык |
Pascal |
Python |
алг нач цел s, t ввод s ввод t если s > 10 или t > 10 то вывод "YES" иначе вывод "NO" все кон |
var s, t: integer; begin readln(s); readln(t); if (s > 10) or (t > 10) then writeln('YES') else writeln('NO') end. |
s = int(input()) t = int(input()) if s > 10 or t > 10: print("YES") else: print("NO") |
Было проведено девять запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел: (1, 2); (11, 2); (1, 12); (11, 12); (–11, –12); (–11, 12); (–12, 11); (10, 10); (10, 5). Сколько было запусков, при которых программа напечатала „YES“?»
Задание требует понимания программы на каком-либо языке программирования, а точнее — на нескольких языках. Необходимо понимание того, что на разных языках программирования записан один и тот же алгоритм, но каждый язык имеет свою структуру программы, свой синтаксис и свои служебные слова. На этой основе у учащихся школ и будет развиваться мышление программиста.
6. Практические задания для программирования на школьном алгоритмическом языке
Задание 1 . Линейные алгоритмы.
1) Чему будет равно значение числовой переменной K после выполнения программы?
K:= 5
S:= K + 2
K:= S + 2
K:= K + 10
2) Чему будет равно значение символьной переменной L после выполнения программы?
X:= “2”
Y:= “5”
L:= X + Y
3) Составить программу, которая выводит на экран сумму цифр введенного трехзначного числа (задание на целочисленное деление).
Задание 2 . Ветвящиеся алгоритмы.
- Используя команду «если», составить программу, которая выводит на экран наибольшее из трех введенных чисел.
- Используя команду «выбор», составить программу, которая выводит на экран название дня недели по его введенному номеру.
- Составить программу, которая выводит на экран решение полного квадратного уравнения ax 2 +bx+c=0 по введенным значениям переменных a, b и c (следует учесть, что на ноль делить нельзя).
Задание 3 . Циклические алгоритмы.
- Используя цикл «пока», составить программу, которая выводит на экран сумму чисел от 1 до вводимого значения N.
- Используя цикл «N раз» (цикл со счетчиком), составить программу, которая выводит на экран сумму чисел от 1 до вводимого значения N .
- Используя вложенные циклы «N раз», составить программу, которая выводит на экран таблицу умножения.
7. Дополнительные возможности среды программирования «КуМир»
В среде программирования «КуМир» для перехода в графический режим встроены программные исполнители «Чертежник», «Робот» и «Черепашка», а для визуального программирования — «Кузнечик» и «Водолей».
Рис. 4. Окно среды программирования «КуМир» с запущенными программными исполнителями
8. Работа в графическом режиме с программными исполнителями.
1) Программный исполнитель «Чертежник».
Рис. 5. Алгоритм работы «Чертежника»
2) Программный исполнитель «Робот».
Рис. 6. Алгоритм работы «Робота»
3) Программный исполнитель «Черепашка».
Рис. 7. Алгоритм работы «Черепашки»
9. Что происходит с программированием в школе?
На онлайн-конференции учителей информатики, проведенной командой сотрудников платформы образования «Яндекс Учебник» 6 июля 2025 года, поднимался вопрос «Что происходит с программированием в школе?». Был сделан вывод, что учителя переходят на изучение языка Python ввиду его внешней легкости. Почему так получилось?
1) Конструирование программ. В языке Python есть много готовых встроенных и внешних функций и инструментов. Для решения задачи их просто копируют и вставляют в нужном порядке.
2) Натаскивание на ЕГЭ. Ученики заучивают решение задачи, не вникая в его суть. Поэтому задачи с малейшими изменениями условий вызывают большие сложности на экзамене.
3) Невидимая сложность. Python, как высокоуровневый язык, скрывает от учеников то, как он работает. Это неизбежная обратная сторона его простоты и удобства.
В результате, по словам одного из преподавателей московского вуза, «80 % студентов первого курса заваливают первый экзамен по программированию».
Есть несколько вариантов улучшения ситуации. Можно забыть «школьный» Python и начать изучать его заново, но это потребует много времени на исправление положения. Можно отказаться от Python и сразу перейти к изучению языка программирования C++, но это будет сложно и тоже потребует много времени. Лучший вариант — это научить школьников алгоритмическому мышлению и основам программирования на простейших языках программирования.
10. Заключение
Как показывает практика, обучение основам программирования следует начинать с развития алгоритмического мышления у учащихся школ, с чем хорошо справляется школьный алгоритмический язык. Далее следует ознакомиться со структурой программ и синтаксисами языков программирования Pascal и Python. И на их основе выпускникам школ, абитуриентам и будущим студентам вузов будет легче перейти на изучение высокоуровневого языка C++, продолжая развивать свое мышление программиста.
Литература:
- Что значит «думать как программист»? — Текст : электронный // Tproger : [сайт]. — URL: https://tproger.ru/articles/thinking-like-a-programmer (дата обращения: 11.07.2025).
- КуМир. — Текст : электронный // Система программирования КуМир : [сайт]. — URL: https://www.niisi.ru/kumir/ (дата обращения: 11.07.2025).
- Практические работы в программе «КуМир». — Текст : электронный // IT сервис : [сайт]. — URL: https://uservisa.ru/prakticheskie-raboty-v-programme-kumir/ (дата обращения: 11.07.2025).
- Конференция «Яндекс Учебника» для учителей информатики. — Текст : электронный // VK : [сайт]. — URL: https://vk.com/wall-194468859_752 (дата обращения: 11.07.2025).