Programming Taskbook


E-mail:

Пароль:

Регистрация пользователя   Восстановление пароля

 

ЮФУ SMBU

Электронный задачник по программированию

©  М. Э. Абрамян (Южный федеральный университет, Университет МГУ-ППИ в Шэньчжэне), 1998–2024

 

Teacher Pack | Общие сведения | Файлы вариантов

PrevNext


Файлы вариантов (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]

PrevNext

 

Рейтинг@Mail.ru

Разработка сайта:
М. Э. Абрамян, В. Н. Брагилевский

Последнее обновление:
01.01.2024