О преподавании программирования

в общеобразовательной школе

ГУ «Школа-гимназия №10 города Рудного»

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

  В общеобразовательных школах при наличии небольшого объема учебного времени, программирование  в рамках  базового  курса может изучаться лишь на уровне введения. Изучение происходит на примерах простых программ на языке Паскаль. Показывается, как организуется простейший диалог компьютера с человеком: компьютер спрашивает, ученик отвечает, компьютер реагирует на ответ в соответствие с его содержанием.

  Такое  программирование на любительском уровне с практической точки зрения не представляет интереса. Используя прикладные программы можно сделать гораздо больше, чем с помощью языков программирования на ученическом уровне. Поэтому учащимся непонятно, зачем прописывать команды диалога вручную, когда можно пользоваться уже  готовыми диалогами с компьютером. Очень часто на уроках по программированию учащиеся задают вопрос «Зачем нам  это надо?».

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

НЕ нашли? Не то? Что вы ищете?

  В школах чаше всего изучают Паскаль. На первом уроке по программированию (не тот, где изучаются алгоритмы, а тот, где начинают изучать язык программирования) обычно учителя начинают рассматривать структуру программы в виде :

program <nameProgram>;

tipe {раздел описания типов}

const  {раздел описания констант}

var {раздел описания переменных}

label  {раздел описания меток}

begin  {начало раздела команд}

end.  {конец раздела команд}

  Ученики, которые в первый раз слышать все эти новые для них понятия, не представляют, как эта структура реализуется в действительности, и уже с первых уроков программирование может стать для них совершенно скучной и непонятной наукой. Ещё одна трудность понимания программирования состоит в том, что у учеников, знакомых с офисными программами или другими, имеющими оконно-кнопочный интерфейс, уже сложилось определенное представление о понятии «программа». На уроках же программирования им приходится иметь дело с голубым экраном (большинство версий Паскаля), писать какие-то непонятные символы, команды, и это называть «программой».  Отсюда вывод: не надо давать учащимся сразу много понятий, и структуру программы необходимо подать максимально упрощенной.  Я предлагаю такую структуру:

Program <Имя программы>;
<Раздел описаний величин>
Begin {начало программы}
<Тело программы>
End. {конец программы}

  Затем в ходе изучения величин ввожу понятие переменных и констант.

Часто  приходится демонстрировать текст  программы и,  для сравнения, работу скомпилированного модуля.

  В общеобразовательных школах в одном классе чаще всего учатся дети  с разной степенью умственного развития. Чтобы обеспечить усвоение учебного материала по программированию всеми учащимися,  необходимо, чтобы оно проходило в форме, наиболее соответствующей видам деятельности, являющимися ведущими для данного ученика.

  В освоении практических навыков в программировании я  выделила следующие уровни творческой активности учащихся:

Взаимосвязь умений в программировании  от  уровня творческой активности


Уро-вень

Мотив

Активность

Умения в программировании

Г

Потребность познавательной деятельности

Творческий уровень

Структурирование задач с нестандартными условиями. (теоретическое мышление)

В

Устойчивый интерес

Эвристический уровень

Конструирование задач, предполагающих некоторый анализ условий.

Б

Ситуативный интерес

Интерпретирующий уровень

Конструирование задач со стандартными условиями

(конкретное мышление)

А

Индифферент-ность

Воспроизводящий  уровень

Ориентировка в программных текстах


  Каждая последующая ступень требует более высокой творческой активности.

  Уровень Г в общеобразовательной школе можно реализовать  только при изучении  профильных или прикладных  курсов информатики.  А  для того, чтобы подготовить учащихся к олимпиадам по программированию, даже таких курсов бывает недостаточно.

В связи с этим, задания для практических занятий на уроках по программированию в общеобразовательных классах  я подбираю соответственно только 3 уровням:

Уровень А: Работа с тестовыми заданиями, анализ программных текстов

Примерные виды заданий для учащихся:

- Выполнить тест

- Написать комментарии к готовой программе

- Объяснить действия операторов в программе.

Уровень Б:  Программирование стандартных ситуаций


  Во время объяснения нового материала не так много разбирается различных примеров. Тем более важно, чтобы предлагаемые примеры программ ученики увидели в действии. Разбираю с учащимися пример, предлагаю посмотреть работу программы на компьютере  и  изменить в программном тексте какие-либо операторы, чтобы программа стала выполнять другую задачу.

Пример:

Дана программа вычисления площади прямоугольника. Изменить текст программы так, чтобы в ней происходило вычисление  периметра прямоугольника.

Или:

Дан текст программы с циклом repeat. Заменить цикл repeat на цикл while, или наоборот.

Уровень В: Конструирование задач, предполагающих некоторый анализ условий.

  Учащимся предлагаются задачи, в которых они самостоятельно должны разработать алгоритм решения и определить переменные.

  Учащиеся сами определяют уровень, с заданиями которого они могут справиться. За выполнение заданий уровня А и Б учащиеся получают оценки «удовлетворительно» и «хорошо», а тем, кто справляется с уровнем В, я выставляю оценку «отлично»

  Такой подход к оцениванию является полностью прозрачным и снимает все вопросы и недоразумения между учителем и учащимися.

  Конечно, программирование является трудно воспринимаемой наукой, но ошибочно было бы ориентировать курс только на практическое освоение работы с текстовыми редакторами, электронными таблицами, базами данных и пр. Тогда информатика быстро бы потеряла значение как самостоятельная учебная дисциплина. Алгоритмизация и программирование развивают у детей  навыки абстрактного мышления, способность видеть структуру решаемой задачи, что, несомненно, очень важно для их дальнейшего развития.