О преподавании программирования
в общеобразовательной школе
ГУ «Школа-гимназия №10 города Рудного»
Преподавание программирования в средней школе является предметом обсуждений и споров. Результаты проводимых олимпиад по программированию показывают неуклонное падение интереса учащихся к этому роду деятельности. Привыкшим к пользовательскому удобному интерфейсу, который предлагает выбор уже готовых вариантов действий, им сложно переключиться на абстрактные мыслительные процессы, связанные с программированием.
В общеобразовательных школах при наличии небольшого объема учебного времени, программирование в рамках базового курса может изучаться лишь на уровне введения. Изучение происходит на примерах простых программ на языке Паскаль. Показывается, как организуется простейший диалог компьютера с человеком: компьютер спрашивает, ученик отвечает, компьютер реагирует на ответ в соответствие с его содержанием.
Такое программирование на любительском уровне с практической точки зрения не представляет интереса. Используя прикладные программы можно сделать гораздо больше, чем с помощью языков программирования на ученическом уровне. Поэтому учащимся непонятно, зачем прописывать команды диалога вручную, когда можно пользоваться уже готовыми диалогами с компьютером. Очень часто на уроках по программированию учащиеся задают вопрос «Зачем нам это надо?».
Мне хотелось бы поделиться некоторыми мыслями о том, как «подать» программирование на первых уроках, чтобы изучаемый материал был понятен учащимся.
В школах чаше всего изучают Паскаль. На первом уроке по программированию (не тот, где изучаются алгоритмы, а тот, где начинают изучать язык программирования) обычно учителя начинают рассматривать структуру программы в виде :
program <nameProgram>;
tipe {раздел описания типов}
const {раздел описания констант}
var {раздел описания переменных}
label {раздел описания меток}
begin {начало раздела команд}
end. {конец раздела команд}
Ученики, которые в первый раз слышать все эти новые для них понятия, не представляют, как эта структура реализуется в действительности, и уже с первых уроков программирование может стать для них совершенно скучной и непонятной наукой. Ещё одна трудность понимания программирования состоит в том, что у учеников, знакомых с офисными программами или другими, имеющими оконно-кнопочный интерфейс, уже сложилось определенное представление о понятии «программа». На уроках же программирования им приходится иметь дело с голубым экраном (большинство версий Паскаля), писать какие-то непонятные символы, команды, и это называть «программой». Отсюда вывод: не надо давать учащимся сразу много понятий, и структуру программы необходимо подать максимально упрощенной. Я предлагаю такую структуру:
Program <Имя программы>;
<Раздел описаний величин>
Begin {начало программы}
<Тело программы>
End. {конец программы}
Затем в ходе изучения величин ввожу понятие переменных и констант.
Часто приходится демонстрировать текст программы и, для сравнения, работу скомпилированного модуля.
В общеобразовательных школах в одном классе чаще всего учатся дети с разной степенью умственного развития. Чтобы обеспечить усвоение учебного материала по программированию всеми учащимися, необходимо, чтобы оно проходило в форме, наиболее соответствующей видам деятельности, являющимися ведущими для данного ученика.
В освоении практических навыков в программировании я выделила следующие уровни творческой активности учащихся:
Взаимосвязь умений в программировании от уровня творческой активности
Уро-вень | Мотив | Активность | Умения в программировании |
Г | Потребность познавательной деятельности | Творческий уровень | Структурирование задач с нестандартными условиями. (теоретическое мышление) |
В | Устойчивый интерес | Эвристический уровень | Конструирование задач, предполагающих некоторый анализ условий. |
Б | Ситуативный интерес | Интерпретирующий уровень | Конструирование задач со стандартными условиями (конкретное мышление) |
А | Индифферент-ность | Воспроизводящий уровень | Ориентировка в программных текстах |
Каждая последующая ступень требует более высокой творческой активности.
Уровень Г в общеобразовательной школе можно реализовать только при изучении профильных или прикладных курсов информатики. А для того, чтобы подготовить учащихся к олимпиадам по программированию, даже таких курсов бывает недостаточно.
В связи с этим, задания для практических занятий на уроках по программированию в общеобразовательных классах я подбираю соответственно только 3 уровням:
Уровень А: Работа с тестовыми заданиями, анализ программных текстов
Примерные виды заданий для учащихся:
- Выполнить тест
- Написать комментарии к готовой программе
- Объяснить действия операторов в программе.
Уровень Б: Программирование стандартных ситуаций
Во время объяснения нового материала не так много разбирается различных примеров. Тем более важно, чтобы предлагаемые примеры программ ученики увидели в действии. Разбираю с учащимися пример, предлагаю посмотреть работу программы на компьютере и изменить в программном тексте какие-либо операторы, чтобы программа стала выполнять другую задачу.
Пример:
Дана программа вычисления площади прямоугольника. Изменить текст программы так, чтобы в ней происходило вычисление периметра прямоугольника.
Или:
Дан текст программы с циклом repeat. Заменить цикл repeat на цикл while, или наоборот.
Уровень В: Конструирование задач, предполагающих некоторый анализ условий.
Учащимся предлагаются задачи, в которых они самостоятельно должны разработать алгоритм решения и определить переменные.
Учащиеся сами определяют уровень, с заданиями которого они могут справиться. За выполнение заданий уровня А и Б учащиеся получают оценки «удовлетворительно» и «хорошо», а тем, кто справляется с уровнем В, я выставляю оценку «отлично»
Такой подход к оцениванию является полностью прозрачным и снимает все вопросы и недоразумения между учителем и учащимися.
Конечно, программирование является трудно воспринимаемой наукой, но ошибочно было бы ориентировать курс только на практическое освоение работы с текстовыми редакторами, электронными таблицами, базами данных и пр. Тогда информатика быстро бы потеряла значение как самостоятельная учебная дисциплина. Алгоритмизация и программирование развивают у детей навыки абстрактного мышления, способность видеть структуру решаемой задачи, что, несомненно, очень важно для их дальнейшего развития.


