К ВОПРОСУ О МЕТОДИКЕ ОБУЧЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОМУ ПРОГРАММИРОВАНИЮ В ШКОЛЬНОМ КУРСЕ ИНФОРМАТИКИ

Статья опубликована в рамках: Международной научно-практической интернет-конференции «Актуальные проблемы методики обучения информатике и математике в современной школе» (Россия, г.Москва, МПГУ, 22 — 26 апреля 2019г.)

К ВОПРОСУ О МЕТОДИКЕ ОБУЧЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОМУ ПРОГРАММИРОВАНИЮ В ШКОЛЬНОМ КУРСЕ ИНФОРМАТИКИ

Фоминых Ирина Анатольевна,
кандидат педагогических наук, доцент,
Марийский государственный университет

Аннотация: В работе рассмотрены возможности использования сочетания методов обучения: наглядного, практического и гностического при обучении программированию на этапе закрепления теоретического материала. Приводятся конкретные примеры реализации при обучении объектно-ориентированному программированию.

Ключевые слова: школьный курс информатики, объектно-ориентированное программирование, наглядный метод обучения, практическая работа, эвристический метод.

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

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

  • структурное программирование, которое представляет задачу в виде иерархии подзадач простейшей структуры;
  • объектно-ориентированное программирование (ООП) представляющее собой технологию создания программного обеспечения, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств;
  • визуально-событийное программирование, представляющее собой определение интерфейса пользователя на экране с помощью доступных графических объектов и написание для каждого возможного события обрабатывающего метода.

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

Изучение программирования на углубленном уровне помимо общеразвивающей преследует и профориентационую цель, а именно: дать представление о профессиональном программировании. Поэтому авторами рассматривается объектно-ориентированное программирование с дальнейшим выходом на визуально-событийное программирование в интегрированной среде разработки программного обеспечения. Например, в учебнике для 11 класса И.Г. Семакина, Е.К. Хеннера, Л.В. Шестаковой углубленного уровня, ООП рассматривается в главе «Методы программирования». А в учебнике для 11 класса углубленного уровня К.Ю. Полякова и Е.А. Еремина вопросы, связанные с ООП разбираются в главе «Объектно-ориентированное программирование». В обоих случаях коды фрагментов программ рассматриваются на языке Object Pascal. В качестве среды разработки программного обеспечения предлагается использовать Delphi, Free Pascal или Lazarus.

Принципы ООП в основном поясняются на примерах фрагментов консольных приложений в тексте учебника. На практике сразу предлагается разработка оконных приложений, где уже используются компоненты VCL. В связи с этим принципы ООП так и остаются некоторой абстракцией, неопробованной учащимися. Понятно, что трудоемкость разработки, сложность материала и обычная нехватка времени не позволяет предлагать учащимся с разными способностями разрабатывать с нуля программы с использованием собственных классов. Что можно предпринять в такой ситуации? Как организовать закрепление теоретического материала?

По классификации Ю.К. Бабанского в группе методов обучения для организации и осуществления учебно-познавательной деятельности выделяются следующие методы: перцептивные, словесные, наглядные, практические, логические, гностические и самоуправления учебными действиями [2]. На наш взгляд, наиболее оптимальным при обучении сложным темам по программированию, в частности принципам ООП, является сочетание наглядного, практического и гностического методов обучения.

Еще Я.А.Коменский провозгласил «золотое правило дидактики»: «Если мы намерены насаждать в учащихся истинные и достоверные знания, то мы должны стремиться обучать всему при помощи личного наблюдения и чувственной наглядности». В качестве наглядного материала мы уже много лет предлагаем обучаемым демонстрационные примеры, то есть программы-заготовки.

Использование метода демонстрационных примеров при обучении программированию базируется на концепции известного методиста в обучении программированию Н.Вирта. Считая программирование искусством конструирования, он предлагал тщательно отбирать и рассматривать характерные примеры [1]. Метод демонстрационных примеров подробно рассмотрен в докторской диссертации М.В.Шведского. М.В.Швецкий демонстрационные примеры для обучения программированию подразделяет на четыре типа [3]:

1) примеры, иллюстрирующие определенные аспекты синтаксиса и семантики выбранного языка программирования;
2) примеры, демонстрирующие реализацию классических алгоритмов (поиск, сортировка, обходы деревьев и т.д.);
3) примеры, демонстрирующие реализацию структур данных с помощью средств изучаемого языка программирования;
4) примеры, демонстрирующие реализацию объектов в изучаемом студентами языке программирования.

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

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

  • предварительный инструктаж;
  • выполнение работы;
  • поэтапный контроль выполнения с озвучиванием необходимого результата;
  • проверку и оценивание.

Задания в практической работе нами выстраиваются на основе гностического метода обучения, а именно частично-поискового (эвристического). В эвристическом методе особая роль отводится эвристическим вопросам, которые задают стратегию творческого поиска. Каждое задание формулируется и затем к нему выстраивается последовательность наводящих (эвристических) вопросов.

Таким образом, мы используем сочетание наглядного (привлечение демонстрационных примеров), практического (проведение практической работы) и гностического (последовательность эвристических вопросов) методов. В качестве примера приведем печатный раздаточный материал для практической работы «Принципы ООП: инкапсуляция и полиморфизм» (Раздаточный материал) и листинги предоставляемых программ (Листинг 1, Листинг 2) для среды PascalABC.NET.

Раздаточный материал – Практическая работа. Принципы ООП (инкапсуляция, наследование)

  1. Скопируйте в текущий каталог среды PascalABC.NET файлы pas, z_oop.pas. Откройте файл unit_Person.pas, ознакомьтесь с содержанием модуля unit_Person (какой класс описан, какие секции представлены в описании, как реализована процедура). Проведите компиляцию программы. Удостоверьтесь, что в текущем каталоге создан файл unit_Person.pcu.
  2. Откройте файл z_oop.pas, ознакомьтесь с его содержанием. Запустите программу z_oop.pas. Каковы результаты ее выполнения? Измените примеры тестирования модуля unit_Person.
  3. Добавьте в содержание модуля unit_Person еще один метод, доступный пользователю и реализующий приветствие с объектом класса Person

Наводящие вопросы:

  • Чем отличаются секции private и public в описании типа class?
  • В какой из этих секций описываются методы, доступные пользователю?
  • Что представляет собой описание метода для типа class?
  • В каком разделе модуля представляется реализация метода?
  1. Вновь сохраните и проведите компиляцию pas. Протестируйте измененный модуль, а именно: в файл z_oop.pas добавьте обращение к новому методу (процедуре); запустите программу; проанализируйте изменения.
  2. Дополните текст модуля unit_Person описанием класса-наследника student с дополнительной характеристикой – учебным заведением (УЗ):

Наводящие вопросы:

  • Как в описании класса-наследника указывается базовый (родительский) класс?
  • Нужно ли дублировать описание полей и свойств базового класса в классе-наследнике?
  • К какой категории относится дополнительная характеристика УЗ: поле, свойство, метод?
  • В какой секции дополнительная характеристика УЗ должна быть описана?
  • Нужны ли изменения в конструкторе Create?
  • В случае описания дополнительной характеристики УЗ в разделе Private как организовать возможность ее изменения?
  • Какие из методов нужно переопределить (представить измененное описание)?
  1. Вновь сохраните и проведите компиляцию pas. Протестируйте измененный модуль, а именно: в файл z_oop.pas добавьте создание объекта нового класса и обращение к его методам; запустите программу; проанализируйте изменения.

Использование сочетания наглядного, практического и гностического методов обучения в представленной реализации обеспечивает более эффективное использование учебного времени, а также активизацию учебно-познавательной деятельности обучаемых. Оно в полной мере отвечает требованиям ФГОС в плане использования деятельностного в обучении. Это сочетание может быть с успехом использовано и при обучении другим темам по программированию.

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

ЛИТЕРАТУРА:

  1. Вирт Н. Систематическое программирование. Введение. Пер. с англ., Издательство «Мир». Москва 1977
  2. Педагогика. / Под ред. Ю.К. Бабанского. — М.: Просвещение, 1983.
  3. Швецкий М.В. Методическая система фундаментальной подготовки будущих учителей информатики в педагогическом вузе в условиях двухступенчатого образования. : дисс. … докт. пед. наук. –СПб., 1994.-446с.
avatar
  Подписаться  
newest oldest most voted
Уведомить о
Дмитрий Павлов
Дмитрий Павлов

Добрый день.
Подскажите пожалуйста, вы считаете Object Pascal подходящим и достаточным средством для освоения в школе основ ООП, в частности с прицелом на будущую профориентацию школьников, а также с учётом требований международных конкурсов и олимпиад по программированию?

Вадим Дженжер
Вадим Дженжер

Добрый день! Я, правда, не автор публикации, но захотелось ответить. Видимо, потому, что вопросы поставлены так, словно задающий их на самом деле знает все правильные ответы. Тем не менее. (1) Примеры в тексте не на устаревшем Object Pascal, а на современном PascalABC.NET. Автор об этом сообщил. (2) PascalABC.NET, несомненно, подходящий язык для преподавания программирования в школе. (3) PascalABC.NET подходит для изучения ООП в такой же степени, как и C#, поскольку является полноценным NET-языком. Кстати, для участия в олимпиадах знание ООП вообще не требуется. (4) «Будущая профориентация школьников» не является основной целью линии «Алгоритмизация и программирование» в школе. Есть более значимые… Read more »

С.Ю. Сафронова

Хороший ответ! Полностью с Вами согласна как преподающий учитель информатики.

М.А. Федотенко
М.А. Федотенко

Добрый вечер, уважаемая Ирина Анатольевна!
Благодарю Вас за такую интересную, а главное такую практико-ориентированную статью! И отдельная благодарность за последний абзац, ведь переход к проектированию пользовательского интерфейса — важнейший шаг к пониманию школьниками основных принципов ООП и его прикладного значения в целом.

Очень интересно Ваше мнение об этом самом «продолжении» — какая интегрированная среда разработки на Ваш взгляд лучше всего подходит для обучения ООП в школе в условиях нашей вечной нехватки времени?