|
Файлы вариантов (var-файлы)
Общее описание
Одним из распространенных способов организации практических занятий
по программированию является система индивидуальных заданий: каждый учащийся
получает набор учебных заданий, который требуется выполнить в течение
определенного срока. При этом варианты индивидуальных заданий должны быть
примерно одинакового уровня сложности и желательно, чтобы каждый учащийся имел
свой вариант индивидуального задания. Задачник Programming Taskbook имеет
средства, позволяющие автоматизировать процесс разработки вариантов
индивидуальных заданий и сделать более удобным использование созданных
вариантов при проведении занятий с группой учащихся.
Основным элементом, обеспечивающим работу учащихся с вариантами
индивидуальных заданий, является файл вариантов (var-файл). Данный файл имеет
произвольное имя и расширение .var. Он создается программой PTVarMaker
(«Конструктор вариантов») на основе данных, подготовленных в
обычном текстовом формате и сохраненных в файле с расширением .ptv. В
дальнейшем var-файл, вместе с вспомогательным файлом variant.dat, созданным
программой «Контрольный центр преподавателя» на основе var-файла,
добавляется в каталоги учащихся и используется задачником Programming Taskbook
и программными модулями PT4Demo и PT4Results.
Начиная с версии 4.15 задачника, подключить файл вариантов к рабочему каталогу учащегося
(создав при этом файл variant.dat) можно с помощью команды «Подключить файл вариантов»
программного модуля PT4Load.
До версии 4.14 задачника включительно для возможности подключения файла вариантов к каталогу учащегося было необходимо,
чтобы в данных об учащемся, содержащихся в файле результатов, был указан номер
варианта. Номер варианта должен был располагаться после фамилии и имени учащегося и
отделяться от них двоеточием, например, «Иванов Петр:12».
Начиная с версии 4.15, при отсутствии в данных об учащемся явно указанного номера варианта этот номер
генерируется автоматически по имеющейся информации (фамилии и имени); сгенерированный таким образом вариант
будет лежать в диапазоне от 1 до 9999.
При успешном подключении файла вариантов в каталоге учащегося
создается не только вспомогательный двоичный файл variant.dat, но и текстовый
файл, в котором содержится список заданий, включенных в вариант с данным
номером (этот файл имеет имя var_N.txt, где N номер варианта, полученный
из results-файла учащегося). Преподаватель может также создать текстовый файл,
содержащий не только текст варианта с конкретным номером, но и тексты вариантов
из диапазона номеров; эта возможность предоставляется конструктором вариантов
(команда « Действия | Создать варианты»).
Используя контрольный центр преподавателя, файл вариантов можно связать со
всеми учащимися группы (при этом каждый учащийся получит свой вариант заданий
на основе того номера, который содержится в его файле результатов). Имеется
возможность связать с некоторыми учащимися другие, «персональные»
файлы вариантов (например, другого уровня сложности). Обе эти возможности реализуются
командой «Var-файлы | Добавить».
Начиная с версии 4.15, назначить варианты для всех учащихся группы можно и без применения контрольного центра
преподавателя, используя команду «Настроить каталог обновлений», появившуюся в программном модуле PT4Load.
Файл variant.dat, размещенный в каталоге учащегося вместе с var-файлом,
предоставляет учащемуся следующие дополнительные возможности:
- программный модуль PT4Demo в списке групп заданий создает дополнительную группу
с именем «Вариант N», где N номер варианта, присвоенный
учащемуся. При выборе данной группы на экране отображается окно задачника Programming Taskbook, позволяющее просмотреть все
задания, включенные в данный вариант. Эти задания можно циклически перебирать с помощью клавиш Enter и Backspace (а также кнопок
«Следующее задание» и «Предыдущее задание» в окне
задачника), просматривая их
формулировки и примеры исходных и результирующих данных;
- задачник Programming Taskbook может проверить, включено ли выполняемое
задание в список заданий для данного варианта; если задание не включено, то в
окне задачника выводится сообщение «ДАННОЕ ЗАДАНИЕ В ВАШ ВАРИАНТ НЕ
ВКЛЮЧЕНО» (что, однако, не препятствует выполнению данного задания). Для
заданий, входящих в вариант, выводится дополнительная информация, в частности,
количество баллов за выполнение этого задания (если в var-файле предусмотрено
начисление баллов за выполнение каждого задания);
- программный модуль PT4Results выводит дополнительную информацию о результатах выполнения заданий;
в частности, в сводке результатов указываются не только
выполненные задания и задания, которые учащийся пытался выполнить, но и те
задания, включенные в вариант, которые еще не выполнялись. Кроме того, при
наличии варианта индивидуальных заданий, в сводку результатов включаются только
те задания, которые содержатся в варианте, предложенном учащемуся, причем
указывается процент выполнения заданий по каждой группе заданий и по варианту в
целом, а при наличии баллов для каждого задания количество набранных баллов.
При наличии файла вариантов будет более подробной и информация, отображаемая
в контрольном центре преподавателя (см., в частности, описание команды
«Results-файлы | Сводная информация»).
Заметим, что контрольный центр преподавателя (как и программный модуль PT4Load, начиная с версии 4.15)
следит за наличием в каталогах учащихся файлов, связанных с вариантами индивидуальных заданий,
и при необходимости автоматически восстанавливает их.
Подготовка исходных данных для генерации файла
вариантов
Простейший набор исходных данных
Исходные данные для файлов вариантов удобнее всего создавать в редакторе
конструктора вариантов PTVarMaker. В этом случае обеспечивается синтаксическое
выделение различных элементов набора исходных данных; кроме того, созданный
набор можно немедленно протестировать и создать на его основе как сам файл
вариантов (var-файл), так и тексты вариантов с требуемыми номерами (см.
команду «Действия | Создать варианты»).
Напомним, что имя задания в задачнике Programming Taskbook состоит из двух
элементов: названия темы (например, «Begin») строки длиной от 1
до 9 символов, состоящей из латинских букв,
и номера задания в пределах этой темы целого числа в диапазоне от 1 до 999.
Для того чтобы обеспечить одинаковый уровень сложности различных вариантов,
каждое задание, включаемое в тот или иной вариант, необходимо выбирать из
некоторого семейства однотипных заданий. Поэтому при
подготовке исходных данных следует прежде всего определить подобные семейства.
Семейство заданий должно удовлетворять двум обязательным условиям:
- все задания одного семейства должны иметь одно и то же название темы;
- семейство должно состоять из 1, 2, 3, 4, 6 или 12 заданий (среди которых могут быть и одинаковые).
Таким образом, каждое семейство можно описать, указав имя темы
(общее для всех заданий семейства) и перечислив номера заданий.
Приведем примеры допустимых семейств:
Begin 1 2 4-7
Begin 23 24
Begin 35-37
В набор исходных данных может входить не более 250 семейств.
При вводе исходных данных в редакторе конструктора вариантов
каждое семейство необходимо указывать на отдельной строке (начальные и конечные
пробелы, а также пустые строки не учитываются). Номера заданий отделяются друг
от друга и от имени темы одним или несколькими пробелами. Вместо подряд идущих
номеров можно указать их диапазон. Созданный набор исходных данных надо
сохранить в файле с расширением .ptv; наличие такого расширения указывает конструктору вариантов,
что данный набор предназначен для совместного использования с задачником
Programming Taskbook (имеется также возможность создавать с помощью
конструктора PTVarMaker наборы вариантов, не связанные с задачником; эта
возможность описывается далее в пункте «Генерация вариантов, не связанных
с задачником Programming Taskbook»). По умолчанию созданный файл
предлагается сохранить в специальном каталоге VARFILES (подкаталоге того
каталога, в котором размещена программа «Конструктор вариантов»).
При генерации вариантов индивидуальных заданий, сформированных на основе
приведенных выше трех семейств, каждый вариант будет содержать три задания (по
количеству семейств), причем первым заданием в варианте будет одно из шести
заданий, указанных в первом семействе, вторым заданием либо Begin23, либо
Begin24, а третьим заданием одно из трех заданий, указанных в последнем
семействе.
Естественно ожидать, что задания каждого семейства будут входить в варианты
с равной вероятностью (для заданий первого семейства вероятность равна 1/6, для
второго 1/2, для третьего 1/3). Однако конструктор вариантов PTVarMaker
обеспечивает большее: если разбить все варианты на дюжины, отнеся к первой
дюжине варианты с номерами от 1 до 12, ко второй с номерами от 13 до 24 и т.д.,
то можно гарантировать, что в каждой дюжине вариантов все задания,
входящие в семейство, будут появляться одинаковое число раз (в нашем случае
каждое задание первого семейства будет появляться в любой дюжине ровно 2 раза,
каждое задание второго семейства 6 раз, а третьего 4 раза). Если бы мы
использовали семейство из 12 заданий, то все они по одному разу встретились бы
в каждой дюжине вариантов.
Приведем в качестве примера вариант 1, созданный конструктором вариантов на
основе приведенных выше трех семейств:
ВАРИАНТ 1
Begin: 6, 23, 35
Для создания этого варианта достаточно создать в конструкторе
вариантов новый файл данных с расширением .ptv
(см. команду «Файл | Создать»), ввести в окно редактора
приведенные выше три семейства и выполнить команду «Действия | Создать
варианты», указав в появившемся окне «Создание вариантов»
номер требуемого варианта, т. е. число 1.
Дополнительные разделы и заголовки
При генерации вариантов список заданий по каждой новой теме располагается на
новой строке (образует новый раздел в наборе заданий). Имеется возможность
разбить на несколько разделов задания по одной теме. Предположим, например, что
мы хотим добавить в каждый вариант три задания по теме Integer, выделив в отдельный раздел
последнее из заданий (имеющее повышенную сложность). Для этого набор исходных данных
надо дополнить следующим образом:
Begin 1 2 4-7
Begin 23 24
Begin 35-37
Integer 9 10 12-15
Integer 21-23
-
Integer 24-28 28
Строка, начинающаяся с символа «», является признаком перехода
к новому разделу варианта (начальные пробелы в данной строке игнорируются).
Теперь текст сгенерированного варианта 1 будет иметь следующий вид:
ВАРИАНТ 1
Begin: 6, 23, 35
Integer(1): 10, 23
Integer(2): 28
Разделы варианта, содержащие задания по одной теме, снабжаются нумерацией.
Заметим, что добавление в вариант новых заданий никак не сказалось на прежних
заданиях, поскольку прежние семейства не изменились. Однако надо иметь в виду,
что любое изменение семейства заданий (даже перемена местами номеров) приведет
в изменению результирующих вариантов.
Иногда может оказаться желательным снабдить некоторые разделы в вариантах
дополнительным поясняющим заголовком. Для этого достаточно набрать текст
заголовка в строке, предваряющей данный раздел (и начинающейся с символа
«»). Изменим соответствующим образом наш пример:
Begin 1 2 4-7
Begin 23 24
Begin 35-37
Integer 9 10 12-15
Integer 21-23
- Доп.задание
Integer 24-28 28
Текст сгенерированного варианта 1 изменится следующим образом:
ВАРИАНТ 1
Begin: 6, 23, 35
Integer(1): 10, 23
Integer(2) Доп.задание:
28
Для каждого раздела учитывается только одна строка с заголовком. Если в
тексте исходного набора данных идут подряд несколько строк с заголовками
(начинающихся с символа «»), то все они, кроме последней,
игнорируются.
Снабдить заголовком можно и весь набор вариантов. Такой общий заголовок
может состоять из нескольких строк (от 1 до 10). Признаком строк общего
заголовка является символ «=», находящийся в начале этих строк
(этот символ и предшествующие ему пробелы в результирующий заголовок не
включаются). Добавим общий заголовок в наш файл исходных данных:
= ВВОД И ВЫВОД ДАННЫХ.
= ОПЕРАТОР ПРИСВАИВАНИЯ.
= ТИПЫ REAL И INTEGER
= (6 заданий)
Begin 1 2 4-7
Begin 23 24
Begin 35-37
Integer 9 10 12-15
Integer 21-23
- Доп.задание
Integer 24-28 28
Текст варианта 1 примет следующий вид:
ВВОД И ВЫВОД ДАННЫХ.
ОПЕРАТОР ПРИСВАИВАНИЯ.
ТИПЫ REAL И INTEGER
(6 заданий)
ВАРИАНТ 1
Begin: 6, 23, 35
Integer(1): 10, 23
Integer(2) Доп.задание:
28
Перечислим правила, связанные с заголовками:
- длина заголовка раздела не должна превышать 60 символов; длина строки
общего заголовка не должна превышать 80 символов. Строки, имеющие большую
длину, урезаются справа;
- строки, составляющие общий заголовок, могут располагаться в различных
местах файла с исходными данными, однако в сгенерированных вариантах все они
переносятся в начало текста. Если строк, начинающихся с символа
«=», в файле более 10, то в заголовке указываются первые 10 строк,
а остальные строки игнорируются;
- в заголовки разделов не включаются начальные и конечные пробелы; в строки
общего заголовка также не включаются конечные пробелы, но начальные пробелы
(расположенные между символом «=» и текстом строки) в заголовок
включаются, что позволяет выравнивать строки общего заголовка нужным образом.
В редакторе конструктора вариантов строки заголовков выделяются зеленым
цветом, а строки общего заголовка дополнительно выделяются полужирным
начертанием;
Баллы и комментарии
Каждому заданию, включенному в вариант, можно присвоить некоторый
«вес» определенное количество баллов. Это позволяет определять
итоговую оценку по сумме набранных баллов («олимпиадный принцип»).
Кроме того, таким образом можно количественно характеризовать сложность того
или иного задания.
Чтобы присвоить заданию в варианте требуемое количество баллов, надо
указать это количество в соответствующем семействе исходных данных сразу после
имени темы, отделив его от имени символом «», например:
= ВВОД И ВЫВОД ДАННЫХ.
= ОПЕРАТОР ПРИСВАИВАНИЯ.
= ТИПЫ REAL И INTEGER
= (6 заданий)
Begin 1 2 4-7
Begin 23 24
Begin-60 35-37
Integer 9 10 12-15
Integer 21-23
- Доп.задание
Integer-90 24-28 28
Количество баллов должно лежать в диапазоне от 1 до 100. Если в каком-либо
семействе это количество не указано, то заданиям этого семейства присваивается
по умолчанию 50 баллов. В текстах сгенерированных вариантов значения баллов отображаются
только в том случае,
если некоторые задания имеют баллы, отличные от 50. В
нашем примере получим:
ВВОД И ВЫВОД ДАННЫХ.
ОПЕРАТОР ПРИСВАИВАНИЯ.
ТИПЫ REAL И INTEGER
(6 заданий)
ВАРИАНТ 1
Begin: 6[50], 23[50], 35[60]
Integer(1): 10[50], 23[50]
Integer(2) Доп.задание:
28[90]
В текст файла с исходными данными можно добавлять комментарии, которые
игнорируются при его обработке. Комментарии помечаются символом
«%». Если комментарий занимает всю строку, то символ
«%» должен располагаться в первой непустой позиции строки.
Комментарий также может располагаться после некоторого семейства заданий; в
этом случае он отделяется от самого семейства знаком «%». В
заголовках комментарии использовать нельзя; в них символ «%»
считается элементом заголовка. Приведем пример:
% ==============================================================
% ДЕМОНСТРАЦИОННЫЙ НАБОР УЧЕБНЫХ ЗАДАНИЙ.
% Обеспечивает генерацию вариантов заданий
% по темам Begin и Integer.
% ==============================================================
= ВВОД И ВЫВОД ДАННЫХ.
= ОПЕРАТОР ПРИСВАИВАНИЯ.
= ТИПЫ REAL И INTEGER
= (6 заданий)
Begin 1 2 4-7
Begin 23 24
Begin-60 35-37 % задания на обмен значений трех переменных
Integer 9 10 12-15
Integer 21-23 % задания на выделение цифр из целого числа
- Доп.задание
Integer-90 24-28 28
% ==============================================================
Текст комментариев выделяется в редакторе конструктора вариантов синим
цветом и курсивным начертанием.
Заметим, что демонстрационный набор исходных данных, подобный рассмотренному выше, можно
автоматически загрузить в редактор конструктора вариантов, выполнив команду
«? | 1 Пример набора заданий»
(в версиях 2.х конструктора вариантов эта команда имела название
«Демонстрационный набор заданий»).
Генерация вариантов, не связанных с задачником
Programming Taskbook
Возможность автоматической подготовки большого числа вариантов примерно
одинакового уровня сложности может оказаться полезной не только для курсов по
программированию, использующих задачник Programming Taskbook, но и для других
курсов, возможно, и не связанных с программированием. В этом случае,
разумеется, формат имен заданий может сильно отличаться от формата,
использованного в задачнике. В частности, тема в номере задания может
отсутствовать, а сам номер задания может состоять из более чем трех цифр, а
также включать буквы и знаки препинания.
Конструктор вариантов можно использовать для генерации текстов вариантов
и в случае, когда формат имен учебных заданий отличается от формата,
принятого в задачнике Programming Taskbook (заметим, что var-файлы в этом случае
не создаются, так как они предназначены исключительно для совместного
использования с задачником Programming Taskbook и его программными модулями).
Для того чтобы при подготовке набора исходных данных можно было использовать
«облегченные» правила, набор исходных данных надо сохранить в файле
с расширением .extv. В этом случае в качестве
номеров заданий можно указывать произвольные последовательности символов длины
от 1 до 6, причем символ «» не считается признаком диапазона
номеров (таким образом, в данном режиме диапазоны номеров указывать нельзя).
Имя темы может также содержать произвольные символы (за исключением символа
«») и иметь длину от 1 до 9. Символ «» в имени темы
по-прежнему используется для указания количества баллов, присваиваемых заданиям
из данного семейства. Кроме того, имя темы может быть пустым; для этого в
качестве имени темы надо указать символ «*» (звездочка).
Приведем пример дополнительного набора заданий, состоящего из трех семейств,
снабженных баллами, но имеющих пустые имена тем:
* 10a 10b 10c
*-60 1274 1275 1276-А 1276-Б 1276-В 1277
*-90 1.1.3 1.1.4 1.1.6 1.1.7
Вариант номер 1, сгенерированный на основе этого набора заданий, будет иметь
следующий вид:
ВАРИАНТ 1
10b[50], 1276-В[60], 1.1.6[90]
|