ИСПОЛЬЗОВАНИЕ ОБОБЩЕННЫХ СХЕМ ПРИ КОНСТРУИРОВАНИИ ДИДАКТИЧЕСКИХ МАТЕРИАЛОВ ПО ПРОГРАММИРОВАНИЮ

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

ИСПОЛЬЗОВАНИЕ ОБОБЩЕННЫХ СХЕМ ПРИ КОНСТРУИРОВАНИИ ДИДАКТИЧЕСКИХ МАТЕРИАЛОВ ПО ПРОГРАММИРОВАНИЮ

Добровольская Наталья Юрьевна
кандидат педагогических наук, доцент,
Кубанский государственный университет

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

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

Современные требования к профессиональной подготовке учителей информатики предполагают внедрение IT-технологий во все элементы учебного процесса. Одной из составляющих профессиональной деятельности будущего учителя является конструктивная деятельность, которая включает отбор учебного материала и формирование наборов заданий оценивания знаний. Сочетание педагогических и компьютерных технологий на этой стадии деятельности позволяет решать указанные педагогические задачи более качественно, с меньшими временными затратами. В связи с этим профессиональная компетенция магистров будущих учителей информатики (специальность 01.04.01 Математика, направленность «Преподавание математики и информатики») – способность к преподаванию физико-математических дисциплин и информатики в общеобразовательных организациях, профессиональных образовательных организациях и организациях дополнительного образования – должна быть расширена умением конструировать компьютерные дидактические материалы. Компьютерная форма дидактического обеспечения учебного курса не только позволяет использовать различные формы тестирования и визуализации учебной информации, но и автоматизирует процесс построения больших наборов разноуровневых заданий, обеспечивая тем самым индивидуализацию обучения. Такие задания отвечают формату заданий компьютерной дидактики, большой вклад в развитие которой внесла Архипова А.И. [1]. Технологии компьютерной дидактики позволяют разрабатывать как компьютерные учебно-методические комплексы, так и локальные задания.

Формирование компетенции конструирования компьютерных дидактических материалов по разделу «Программирование», направленных на развитие навыков алгоритмизации обучаемых, реализуется нами в рамках курса «Информатика в современном профессиональном образовании» у магистров первого года обучения. Дидактические материалы могут быть как теоретического, так и тестового содержания. Основой конструирования дидактических материалов являются обобщенные схемы алгоритмов [2].

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

Вне зависимости от конкретного языка программирования учебная дисциплина «Основы программирования», читаемая на первом курсе вуза или соответствующий раздел курса школьной информатики содержит набор типовых тем: вычисление арифметических выражений, обработка последовательности чисел, определение свойства числа, работа с массивом, с матрицей и т.д. Для каждой темы сконструировано несколько обобщенных схем, которые легко модифицируются при использовании конкретного языка программирования. Обобщенная схема представляет собой фрагмент алгоритма на некотором языке программирования, включающим постоянные элементы и варьируемые. Наполнение варьируемых элементов схемы конкретными значениями позволяет решить определенную задачу [3].

Магистрам, будущим учителям информатики, предлагается разработать по некоторой теме раздела «Программирование» набор обобщенных схем. Далее обобщенная схема заполняется вариантами значений варьируемых полей, в зависимости от условия задания [5]. Обобщенные схемы применяются для формирования умения у обучаемых решать задачи по программированию данного раздела и для тестирования приобретенных навыков.

Приведем пример обобщенной схемы по теме «Обработка одномерных массивов».

Схема 1. Однотипная обработка элементов массива (язык программирования Pascal).

var a : array[1..100] of integer; i, s : integer;
begin
readln (n);
for i:=1 to n do readln(a[i]);
Z(s);
for i:=1 to n do
if (Q(a[i])) then R(s, a[i]);
writeln(s);
end.

В схеме присутствует три варьируемых поля, заданные функциями. Z(s) представляет собой инициализацию переменной s. Функция Q(a[i]) проверяет элемент массива a[i] на заданное свойство. Функция R(s, a[i]) определяет действие над элементом массива a[i] с использованием переменной s.

Для поля Z(s) возможны следующие конкретные значения: s=0; s=1; для инициализации вычисления суммы, количества или произведения элементов.

Поле Q(a[i]) определяет свойство элемента массива, например, является ли число положительным a[i]>0, оканчивается ли число цифрой 3 a[i] mod 10=3 и т.д. Причем, при дальнейшем изучении учебного материала в качестве Q(a[i]) можно использовать отдельно реализованную функцию.

Поле R(s, a[i]) задает действие над элементами массива, например, поиск количества элементов массива s:=s+1; вычисление суммы чисел s:=s+a[i]; и т.д.

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

Таблица 1. Значения варьируемых полей

Задание Z(s) Q(a[i]) R(s, a[i])
В массиве целых чисел найти количество отрицательных элементов. s:=0; a[i]<0 s:=s+1;
В массиве целых чисел найти сумму нечетных элементов. s:=0; a[i] mod 2<>0 s:=s+a[i];
В массиве целых чисел найти произведение элементов, оканчивающихся на 7. s:=1; a[i] mod 10=7 s:=s*a[i];

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

Тестовые задания на основе обобщенной схемы строятся магистрами в двух формах: открытой и закрытой. В первом случае значение одного из варьируемых полей задается неверно и обучаемый должен предложить в качестве ответа верную строку-замену. Во втором случае варьируемое поле не заполняется, но предлагается ряд различных значений поля и обучаемый должен указать номер верного ответа. Все задания легко автоматизируются с помощью макросов MS Excel [4].

Приведем пример задания. Рассматривается тема «Обработка последовательностей чисел». Магистр предложил обобщенную схему на языке программирования С++.

Схема 2. Последовательность чисел содержит N вводимых значений.

cin >> n;
Z(s);
for (i=0; i<n; i++;)
{
cin>>x;
if (Q(x))
    R(s, x);
}
cout<<s;

Здесь введены три варьируемых поля, заданные функциями. Z(s) представляет собой инициализацию переменной s. Функция Q(x) соответствует условному выражению для числа x. R(s, x) определяет действие над числом x.

Для поля Z(s) возможны следующие конкретные значения: s=0; s=1; для инициализации суммы, количества или произведения чисел.

Поле Q(x) определяет свойство числа, например, проверку четности числа x%2==0, проверку делимости на 3 x%3==0, является ли число положительным x>0, оканчивается ли число цифрой 3 x%10!=3 и т.д.

Поле R(s, x) задает действие над числами, вычисление количества чисел s++; вычисление суммы чисел s+=x; произведения чисел s*=x;

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

Пример 1. Дана последовательность, состоящая из N целых чисел. Необходимо найти сумму четных чисел последовательности.

cin >> n;
int s=0;
for (i=0; i<n; i++;)
{
cin>>x;
if (x%2==0)
    s+=x;
}
cout <<s;

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

cin >> n;
int s=0;
for (i=0; i<n; i++)
{
cin>>x;
if (x>0)
   s+=x;
}
cout <<s;

Такая форма задания предполагает открытую форму ответа. Обучаемый должен указать неверную строку и предложить строку-замену.

Далее магистры конструируют обобщенные схемы более высокого уровня абстракции, независящие от языка программирования. Рассмотрим подобную конструкцию соответствующую схеме 1.

Схема 3. Обработка последовательности чисел, содержащей N вводимых значений.

Ввод количества чисел n;
Z(s);
Цикл с параметром
{
Ввод числа x;
Если (Q(x)) то R(s, x);
}
Вывод результата s;

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

Схема 4. Последовательность чисел содержит N вводимых значений. Схема для языка программирования Pascal.

readln(n);
Z(s);
for i:=1 to n do
begin
readln(x);
if (Q(x)) then
    R(s, x);
end;
writeln(s);

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

ЛИТЕРАТУРА:

  1. Грушевский С.С., Архипова А.И. Электронные образовательные ресурсы инновационной компьютерной дидактики как средство информатизации педагогического образования // Историческая и социально-образовательная мысль. 2014. N С. 75-81.
  2. Добровольская Н.Ю. Формирование умения формального исполнения алгоритма как основы алгоритмических навыков учащихся. // Преподавание математики и информатики в школе и вузе. Материалы межвузовской научно-практической конференции. Краснодар: Изд-во Куб.гос.ун-та, 2017. C. 56-58.
  3. Добровольская Н.Ю., Харченко А.В. Применение технологии фасетов при изучении основ программирования // Математическое образование в школе и вузе: теория и практика (MATHEDU-2014): материалы IV Международной научно-практической конференции, посвященной 210-летию Казанского университета и Дню математики. (Казань, 28-29 ноября 2014 года). Казань: Изд-во Казан.ун-та, 2014. С. 231-233.
  4. Добровольская Н.Ю., Харченко А.В. Применение информационных технологий в обучении // Актуальные проблемы информационно-правового пространства. Сборник статей по материалам ежегодных Всероссийских научно-практических конференций. Краснодар: Юг, 2017. С. 28-31.
  5. Харченко А.В. Опыт творческой педагогической деятельности при конструировании учебных задач на основе фасетной технологии. // Проблемы современного педагогического образования. 2017. N 57(2). С.265-272.
avatar
  Подписаться  
newest oldest most voted
Уведомить о
Anna
Anna

Хорошая идея! Надо будет попробовать применить на практике.

Анна
Анна

Интересная статья, актуальная в рамках повсеместного внедрения IT технологий.

Сергей Александрович
Сергей Александрович

Что имеется ввиду в фразе автора «… конструируют обобщенные схемы более высокого уровня абстракции, независящие от языка программирования…» ?
Как понятие «абстракция» и «обобщенные схемы» связаны между собой?
Как можно учить программированию на суррогатной нотации, употребляя конкретный язык, например С++? Или обучаемый уже знает языковую нотацию конкретного языка программирования, тогда зачем ему суррогатный? Для С++ уже есть, например, STL, в том числе, и с готовым набором алгоритмов, которые собственно уже и служат для решения задач, если под программированием понимается метод решения задач обработки данных на компьютере.

Наталья
Наталья

Предлагаемая методика опробировалась на студентах 1 курса и школьниках 10-11 классов. Обучаемым давались основные конструкции языка (С++ для студентов и Паскаль для школьников). А вот конкретные приемы построения стандартных алгоритмов давались с помощью так называемых обобщенных схем (проверка массива на упорядоченность, поиск заданного элемента и т.д.). На схемах показывалось, каким образом их можно модифицировать для решения близких задач. Безусловно, речь не идет о суррогатном языке, приводятся только общие приемы алгоритмизации. К сожалению, на первом году изучения программирования достаточно сложно донести учащимся любого уровня традиционные приемы алгоритмизации

Наталья
Наталья

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