Научная статья на тему 'Метод представления заданий в обучающей среде по программированию'

Метод представления заданий в обучающей среде по программированию Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
85
37
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Лаптев Валерий Викторович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

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

УДК 004.588 + 004.023

МЕТОД ПРЕДСТАВЛЕНИЯ ЗАДАНИЙ В ОБУЧАЮЩЕЙ СРЕДЕ ПО

ПРОГРАММИРОВАНИЮ

Лаптев Валерий Викторович, к.т.н., доцент, Астраханский государственный технический университет, Россия, Астрахань, laptev@ilabsltd.com

Введение

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

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

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

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

Таким образом, в каждое задание по программированию представляет собой специальный объект в системе, включающий три элемента:

T = < D, S, M >,

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

• разработать механизм генерации вариантов на основе описания D;

• разработать средства представления сценария S и интерпретатор сценариев;

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

В данном докладе предлагается решение проблемы представления задания в едином формализме.

1. Предлагаемое решение описанной проблемы

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

140

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

Пусть в шаблоне определено n параметров и пусть количество значений параметра pi равно mi. Если параметры попарно независимы, то максимальное количество вариантов, которые может сгенерировать система по шаблону, определяется известной формулой:

N = mi х m2 х ... х mn

Реально количество вариантов будет немного меньше, поскольку параметры часто зависят друг от друга.

В качестве примера преобразования типового задания в параметризованный шаблон рассмотрим задание из главы о вводе-выводе в сборнике [3]:

Написать функцию, которая формирует файл, записывая в него 100 чисел в диапазоне от -50 до +50. Этот файл является входным для другой функции, которая формирует новый выходной файл, преобразуя числа входного файла. Вариант преобразования: добавить к каждому числу последнее число файла. Получение числа, необходимого для преобразования, реализовать в виде отдельной функции.

Параметризация начинается с того, что вместо конкретных числовых констант задаются числовые параметры К, хн, хк, причем эти параметры должны удовлетворять ограничениям: хн < хк, К > 0. Можно ограничить K и сверху, например K < 100.

Этих параметров недостаточно для генерации набора вариантов, поэтому задание подлежит дальнейшей параметризации. Очевидный параметр - вариант преобразования записей первого файла в записи второго файла. В сборнике [3] приведено 20 вариантов подобных преобразований. Конкретное значение данного параметра представляет собой текст, поэтому такой параметр называется текстовым. При генерации конкретного задания вариант преобразования можно выбирать случайным образом из множества хранимых в системе значений.

Для вышеуказанного задания можно определить еще несколько текстовых параметров:

1. Способ задания K;

2. Способ задания хн, хк;

3. Тип чисел из диапазона хн, хк;

4. Способ задания чисел из диапазона хн, хк;

5. Тип первого файла;

6. Способ задания имени первого файла;

7. Тип второго файла;

8. Способ задания имени второго файла

Например, способ задания K (и способ задания хн, хк) может принимать следующие значения: ввод с клавиатуры; ввод из текстового файла; параметр командной строки; случайное число. Ограничения для K, хн, хк относятся только к последнему способу задания - генерации случайного числа. Тип чисел может быть целый или вещественный, тип файла -текстовый или двоичный. Имя файла можно задавать самыми разнообразными способами: ввод имени с клавиатуры, как параметр командной строки, - все зависит от фантазии преподавателя. Таким образом, полный список параметров для данного задания будет таков:

1. Р0 : количество чисел K, K > 0;

2. Р1: способ получения K;

3. Р2 : диапазон чисел [хн, хк], хн < хк;

4. Р3 : тип чисел;

5. Р4 : способ получения хн, хк;

6. Р5 : тип первого файла;

141

7. P6: способ задания имени первого файла;

8. P7: тип второго файла;

9. P8: способ задания имени второго файла;

10. P9: способ обработки значений.

Пусть количество значений каждого параметра равно: mi = 4, m3 = 2, m4 = 4, m5 = 2, m6 = 2, m7 = 2, m8 = 3; m9 = 20. Для любого набора значений параметров генерируется 1 число K и 1 диапазон чисел хн, хк. Поэтому примем m0 = m2 = 1. Имя первого файла можно задавать либо посредством ввода с клавиатуры, либо как параметр командной строки. Имя второго файла можно задать, преобразовав имя первого файла, поэтому параметр р8 равен 3, а не 2. Следовательно, можно сгенерировать вариантов (значение 1 не используется):

N = 41 х 23 х 44 х 25 х 26 х 27 х 38 х 209 = 24 х 42 х 60 = 15360

Это количество вариантов является теоретическим максимумом, достигаемым при независимости параметров и при отсутствии ограничений. Если потребовать, чтобы для параметров одного вида (р1 и р4, р5 и р7, р6 и р8) генерировались обязательно разные значения, то число вариантов будет меньше:

N = 41 х 23 х 34 х 25 х 2б х 17 х 28 х 209 = 24 х 4 х 60 = 3840

Требование, чтобы для параметров одного вида генерировались обязательно разные значения, представляет собой пример ограничения для текстовых параметров. Такие ограничения, как правило, регламентируют допустимые сочетания значений текстовых параметров. Например, ограничение р5 = р7 означает, что в генерируемом варианте типы первого и второго файла должны совпадать; р1 Ф р4 - это означает, что в генерируемом варианте способ задания K и способ задания диапазона хн, хк должны быть различными. Следовательно, множество ограничений можно рассматривать как множество значений специального текстового параметра, который участвует в генерации варианта задания наравне с явно выделенными параметрами. Множество значений этого параметра имеет одно специальное значение - отсутствие всяких ограничений. Это означает, что параметр не участвует в генерации конкретного варианта.

Таким образом, описание задания D в системе представлено в виде шаблона, который включает три элемента: текст типового задания, список параметров и их возможных значений, список ограничений. Для представления шаблона в обучающей системе должен быть определен язык представления, который необходим и для представления сценария S выполнения, и для представления модели эталонного решения M.

Эталонное решение является программой, поэтому языком представления должен быть псевдокод. Однако на псевдокоде невозможно представить законченную программу. Более того, некоторые элементы эталонного решения представляют собой параметры шаблона. Например, в объявлении переменной-файла параметром является тип файла (см. выше параметры р5 и р7). Поэтому эталонное решение является шаблоном программы. При генерации конкретного варианта текста задания должен генерироваться и конкретный вариант программы на псевдокоде.

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

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

142

Заметим, что даже при одинаковых текстовых значениях в разных параметрах кодовые фрагменты могут отличаться. Например, для параметров p0 и p7 «ввод с клавиатуры» означает разные программные фрагменты: ввод целого числа и ввод строки.

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

функция Создать(имя файла:строка, К:целое, Хн: #р3, Хк:#р3) переменная F: файл #р5 выходной; переменная i: целая; #p3 xi;

Е.открыть(имя файла);

конец;

конец;

Е.закрыть(имя файла);

конец Создать;

В данном фрагменте эталонной программы параметры помечены префиксом # (решетка). Параметры #p3 и #p5 являются текстовыми. При генерации конкретного варианта и в текст задания, в код эталонной программы на место #p3 будет подставлено текстовое значение «целый» или «вещественный», а на место #p5 - значение «текстовый» или «двоичный». Параметр #p4 является программным, поэтому в шаблон текста задания будет подставлен один из вариантов получения чисел хн, хк. Например, выбран вариант «генерация случайного числа». В программу подставляется соответствующий этому значению фрагмент псевдокода:

xi := датчик()/(хк-хн)+хн;

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

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

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

<task> -- задание

<template> -- шаблон задания

i = 0; пока i < K

#р4

получить xi

если Хн ^ xi и xi ^ Xk F.вывод(xi); i := i + 1;

<param>

<р0>количество чисел K;

<type = number, integer/>

</p0>

<р1>способ получения K;

<type = text, select=value 1+value 2/> <code = value 1/>

</p1>

параметры

программный параметр тип и множество значений программный параметр

тип параметра

143

^5>тип первого файла; <type = text, select=value 3 /> </p5> -- тип и множество значений

^9>способ обработки значений; <limit> #p1 = p4 #p1!= p4 -- ограничения

#p6 = p8 #p6!= p8 </limit> <values> <value_1> #ввод с клавиатуры #параметр командной строки </value_1> -- значения текстовых параметров -- первое множество значений

<value 2> #генерация случайного числа </value 2> -- второе множество значений

<value_3> #текстовый #двоичный </value 3> -- третье множество значений

<value_5> #добавить к имени файла цифру 1 </value 5> -- второе множество значений

> </values> </param>

<text> -- текст шаблона задания

Написать функцию, которая формирует #p5 файл, записывая в него #p0 чисел типа #p3 в диапазоне #p2. Вариант получения #p0:#p1; вариант получения #p2:#p4; вариант получения имени файла:#p6. Этот файл является входным для другой функции, которая формирует новый выходной #p7 файл, преобразуя числа входного файла. Вариант получения имени файла:#p8; вариант

преобразования:#p9. Получение числа, реализовать в виде отдельной функции. </text> </template> необходимого для преобразования,

<code> <value 1> <cond: 0 < v < 100/> # ввод(v); # v = датчик()/100; </value 1> -- шаблон кода -- фрагменты кода

<template> функция Создать(имя файла:строка, К: переменная F: файл #p5 выходной; -- кодовый шаблон :целое, K^#p3, Хк:#p3)

конец Создать; функция Дай Число(имя файла:строка): переменная in: файл #p5 входной; переменная , #p3 xi; in.ввод(xi); #p4 конец Дай Число; : #p3;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

функция Обработать(имя файла 1:строка, имя файла 2:строка) переменная in: файл #p5 входной;;

144

переменная out: файл #p7 входной;;

пока не in-конецО in.ввод(xi);

#p9

out.вывод(xi); конец;

конец Обработать; функция Главная(параметры)

переменная К: целое; хн, хк: #p3;

#p6;

вызвать функцию Создать(имя файла 1, К, хн, хк);

#p8;

вызвать функцию Обработать(имя файла 1, имя файла 2); выход;

конец Главная;

</template>

</code>

</task>

Выводы

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

Литература

1. Лаптев В.В. Требования к современной обучающей среде по программированию // Объектные

системы-2010 (Зимняя сессия): материалы II Международной научно-практической

конференции. Россия, Ростов-на-Дону, 10-12 ноября 2010 г. / Под общ. Ред. П.П. Олейника. -Ростов-на-Дону, 2010. - с. 104-110.

2. Sergey Sosnovsky, Olena Shcherbinina, Peter Brusilovsky, Web-based Parameterized Question as a Tool for Learning, in Allison Rossett (ed): Proceedings of E-Learn 2003, Phoenix, Arizona USA, November 7-11, 2003, p. 2151-2154.

3. Лаптев В.В., Морозов А.В., Бокова А.В. C++. Объектно-ориентированное программирование. Задачи и упражнения. - СПб.: Питер, 2007. - 288 с.: ил.

УДК 004.4, 005

XML-СУБД КАК ВОЗМОЖНАЯ ОСНОВА ДЛЯ ОБЪЕКТНЫХ ТЕХНОЛОГИЙ ИС.

ТЕХНОЛОГИЯ MULTYF

Ермаков Илья Евгеньевич, преподаватель, Технологический институт им. Н.Н. Поликарпова "Государственный университет - учебно-научно-производственный комплекс", технический директор, НПО "Тесла", Россия, Орёл, ermakov@,metasvstems.ru

1. Проблемы прирождённых (native) ООСУБД

Несмотря на успешные применения, которые находит каждая из известных ООСУБД, их массовое применение в АСУ и ИС так и не сложилось.

Представляется, что тому причиной слишком прямолинейное понимание и реализация объектности, непосредственный перенос в СУБД представлений, сложившихся в области языков программирования.

Во-первых, плотно сопряжены между собой хранимые данные и программная логика, что ведёт к ориентации на конкретный язык или семейство языков и, кроме того, нагружает

145

i Надоели баннеры? Вы всегда можете отключить рекламу.