Programming Taskbook


E-mail:

Пароль:

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

 

ЮФУ SMBU

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

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

 

Teacher Pack | Общие сведения | Сводные группы учебных заданий

PrevNext


Сводные группы учебных заданий

Общее описание

В версии 4.8 универсального варианта задачника Programming Taskbook появился новый инструмент: конструктор учебных заданий PT4TaskMaker, с помощью которого любой преподаватель программирования может разрабатывать свои группы учебных заданий, а также перегруппировывать задания имеющихся групп, создавая сводные группы заданий. Сводные группы могут оказаться полезными при подготовке индивидуальных наборов заданий или наборов, предлагаемых на проверочных работах. Помимо возможности изменения порядка следования заданий и объединения в одну группу заданий из нескольких базовых групп (или базовой группы и дополнительных групп, посвященных этой же теме), сводные группы позволяют «скрыть происхождение» заданий (поскольку задания в них имеют другие имена) и тем самым затрудняют для недобросовестных учащихся использование готовых решений (по крайней мере, на проверочных работах, когда время на выполнение заданий ограничено). Кроме того, при составлении сводной группы преподаватель имеет возможность добавлять свои комментарии, связанные как с группой в целом, так и с ее подгруппами, т. е. с наборами родственных заданий, объединенных общим подзаголовком.

Сводные группы заданий, в отличие от групп, содержащих новые задания, можно разрабатывать, не создавая для них специального программного кода, который затем должен компилироваться в dll-файл. Достаточно лишь подготовить текстовый файл, включающий всю необходимую информацию о создаваемой сводной группе, и обработать его в программе PTVarMaker («Конструктор вариантов»). В результате будет автоматически сгенерирован требуемый dll-файл, а также вспомогательный html-файл, содержащий полный текст созданной сводной группы. После создания dll-файла со сводной группой его достаточно скопировать в подкаталог Lib системного каталога задачника Programming Taskbook; в результате эта сводная группа будет интегрирована в задачник и станет доступной для выполнения наряду с базовыми группами заданий. При этом информация о сводной группе появится в программных модулях PT4Demo и PT4Load, что позволит просматривать задания данной группы в демонстрационном режиме и создавать программы-заготовки для выполнения требуемых заданий.

Можно также скопировать dll-файл со сводной группой в рабочий каталог учащегося; в этом случае задания сводной группы будут доступны только для данного учащегося. Заметим, что для копирования файлов сводных групп в каталоги учащихся удобно использовать команду «Программы | Дополнительные файлы...» программы «Контрольный центр преподавателя». Начиная с версии 4.15 задачника, для копирования вспомогательных файлов в рабочие каталоги учащихся удобно также использовать средства, связанные с каталогами обновлений (см. описание команды «Настроить каталог обновлений» для программного модуля PT4Load).

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

Подготовка исходных данных для генерации сводной группы

Простейший набор исходных данных

Исходные данные для сводных групп удобнее всего создавать в редакторе конструктора вариантов PTVarMaker. В этом случае обеспечивается синтаксическое выделение различных элементов набора исходных данных; кроме того, созданный набор можно немедленно протестировать и создать на его основе как сам dll-файл сводной группы, так и html-файл с ее полным описанием (см. команду «Действия | Создать сводную группу заданий»).

Любой текстовый файл с данными для сводной группы должен содержать три обязательных элемента:

  • имя создаваемой сводной группы (строка длины от 1 до 9 символов, содержащая только латинские буквы и цифры и оканчивающаяся буквой);
  • краткое описание группы, которое одновременно будет заголовком html-файла с ее полным описанием (непустая текстовая строка длины не более 80 символов; точка в конце описания не ставится);
  • ключ создаваемой сводной группы, позволяющий однозначно идентифицировать задания этой группы (непустая текстовая строка, содержащая не более 80 символов). На основе этого ключа генерируется уникальный идентификатор группы, который записывается в файл результатов вместе с информацией о выполнении задания из этой группы. Анализ идентификаторов групп дает возможность распознать ситуацию, когда учащийся выполнял задание из другой группы с тем же именем (для просмотра идентификаторов групп предназначена команда «Check-файлы | Просмотреть файл check.inf» программы «Контрольный центр преподавателя»).

Обязательные элементы сводной группы должны располагаться в указанном выше порядке, причем каждый элемент должен размещаться в отдельной строке после символа «=», например:

=GroupDemo
=Демонстрационная сводная группа
=1ret567fgd23KL56

Кроме этих элементов файл должен содержать список заданий, которые будут включены в данную сводную группу. Каждая строка в списке заданий должна начинаться с названия группы, после которого идет список номеров заданий из этой группы. Название группы должно соответствовать одной из существующих групп, регистр букв может быть произвольным. Номера заданий отделяются друг от друга и от названия группы одним или несколькими пробелами. Наряду с отдельным номером можно указывать диапазон номеров, разделяя начальный и конечный номер символом «–».

Приведем в качестве примера список заданий из двух базовых групп задачника:

Begin  1  2  4-6
Array 131-134

В сводной группе можно использовать не более 100 различных названий групп; общее количество заданий не должно превышать 999. Задания включаются в сводную группу в том порядке, в котором они указываются в наборе исходных данных.

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

Созданный набор данных, содержащий обязательные элементы сводной группы и список включаемых в нее заданий, надо сохранить в файле с расширением .ptt; наличие такого расширения указывает конструктору вариантов, что данный набор предназначен для создания сводной группы (в отличие от наборов, которые сохраняются в файлах с расширением .ptv и предназначены для создания файлов вариантов). По умолчанию созданный файл предлагается сохранить в специальном каталоге VARFILES (подкаталоге того каталога, в котором размещена программа «Конструктор вариантов»).

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

Вернемся к описанному ранее набору исходных данных для сводной группы:

=GroupDemo
=Демонстрационная сводная группа
=1ret567fgd23KL56

Begin  1  2  4-6
Array 131-134

Сводная группа, созданная на основе этого набора, будет иметь название GroupDemo и состоять из 9 заданий с именами от GroupDemo1 до GroupDemo9; при этом первые 5 заданий будут взяты из группы Begin, а последние 4 — из группы Array. Независимо от имени ptt-файла, содержащего приведенный набор исходных данных, dll-файл с созданной сводной группой будет иметь имя PT4GroupDemo.dll, поскольку имя любого файла с группой заданий должно совпадать с названием группы заданий, дополненным префиксом PT4 (суффикс, определяющий локаль группы, т. е. язык ее интерфейса, в данном случае не используется). Этот файл будет создан в том же каталоге, в котором находится ptt-файл с исходными данными.

В этом же каталоге будет создан и файл PT4GroupDemo.html с полным описанием данной группы (html-файл, как и dll-файл, автоматически создается при успешном выполнении команды «Действия | Создать сводную группу заданий», при этом он сразу отображается на экране в веб-браузере, используемом на данном компьютере по умолчанию). Полное описание рассмотренной выше сводной группы будет иметь следующий вид:

Добавление преамбулы к сводной группе и ее подгруппам

Сводные группы, помимо формулировок заданий, могут содержать поясняющий текст. Поясняющий текст к группе (преамбула группы) располагается непосредственно после ее заголовка. Кроме того, поясняющий текст может указываться и для каждой подгруппы сводной группы, т. е. раздела группы, снабженного заголовком второго уровня. Подобный текст (преамбула подгруппы) располагается после заголовка подгруппы.

Раздел набора исходных данных, в котором указывается преамбула группы, необходимо предварять строкой, содержащей единственный символ «–» (тире). Такая же строка должна завершать фрагмент с текстом преамбулы, например:

-
Данная группа является примером \Iсводной группы\i,
включающей некоторые из заданий базовых групп Begin и Array.
-

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

Текст преамбулы может содержать управляющие последовательности, позволяющие добавлять в текст индексы и специальные символы, форматировать фрагменты текста, переходить к новому абзацу в тексте и настраивать выравнивание абзацев. Большинство управляющих последовательностей начинается с символа «\». В примере использованы парные управляющие последовательности \I и \i, выделяющие фрагмент, который будет выведен курсивом. Полный список управляющих последовательностей приводится в соответствующем разделе описания конструктора учебных заданий PT4TaskMaker.

Каждая строка, задающая текст преамбулы, должна содержать не более 80 символов.

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

Просматривая описание созданной сводной группы, можно заметить, что все задания, взятые из группы Begin, объединены в подгруппу с заголовком «Ввод и вывод данных, оператор присваивания». Для этой подгруппы, как и для всей сводной группы, можно определить преамбулу. Преамбулы подгрупп должны определяться после преамбулы группы, при этом в строке, отмечающей начало преамбулы подгруппы, следует указать не только символ-тире, но и текст заголовка данной подгруппы, например:

- Ввод и вывод данных, оператор присваивания
Эта подгруппа содержит задания из группы Begin.
-

Текст заголовка в редакторе конструктора вариантов выводится зеленым цветом, как и предшествующий ему символ-тире.

После этого добавления начало описания сводной группы будет выглядеть следующим образом:

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

-
Данная группа является примером \Iсводной группы\i,
включающей некоторые из заданий базовых групп Begin и Array.
- Ввод и вывод данных, оператор присваивания
Эта подгруппа содержит задания из группы Begin.
-

Количество строк с текстом всех преамбул, входящих в сводную группу, не должно превосходить 50.

Имеется возможность добавлять в преамбулу текст из преамбулы уже имеющейся группы или подгруппы. Для добавления текста преамбулы существующей группы достаточно указать в начале строки символ-звездочку, а затем — имя группы, преамбулу которой требуется добавить. В качестве примера добавим к преамбуле подгруппы «Ввод и вывод данных, оператор присваивания» текст из преамбулы группы Begin:

- Ввод и вывод данных, оператор присваивания
Эта подгруппа содержит задания из группы Begin.\P
* Begin
-

В результате заголовок данной подгруппы вместе с преамбулой примет следующий вид:

Для перехода к началу нового абзаца в преамбуле была использована управляющая последовательность \P.

Как легко определить по описанию нашей сводной группы, включенные в нее задания Array131–Array134 взяты из подгруппы группы Array с заголовком «Одномерные массивы: множества точек на плоскости». Для добавления к этой подгруппе преамбулы из одноименной подгруппы группы Array достаточно определить раздел с заголовком этой подгруппы и указать в нем строку, содержащую две звездочки и имя исходной группы:

- Одномерные массивы: множества точек на плоскости
** Array
-

В результате подгруппа «Одномерные массивы: множества точек на плоскости» нашей сводной группы тоже получит преамбулу, импортированную из одноименной подгруппы группы Array:

Отметим, что если бы мы указали не две, а одну звездочку, то в преамбулу был бы добавлен текст из преамбулы ко всей группе Array.

Итак, для того чтобы разработанная сводная группа и обе входящие в нее подгруппы были снабжены поясняющим текстом, достаточно добавить в ptt-файл следующий фрагмент:

-
Данная группа является примером \Iсводной группы\i,
включающей некоторые из заданий базовых групп Begin и Array.
- Ввод и вывод данных, оператор присваивания
Эта подгруппа содержит задания из группы Begin.\P
* Begin
- Одномерные массивы: множества точек на плоскости
** Array
-

Поправки к ссылкам и комментарии

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

Array 116-118 120 124-126

Фрагмент описания сводной группы GroupDemo, соответствующий этим заданиям, будет иметь следующий вид:

Из приведенного описания видно, что если в тексте задания имеется ссылка на другое задание этой же группы, то в сводной группе эта ссылка корректируется таким образом, чтобы вместо имени исходной группы заданий (в нашем случае группы Array) указывалось имя создаваемой сводной группы (в нашем случае — GroupDemo). Кроме того, корректируется и номер задания. Однако этот номер будет указан правильно только в случае, если в сводную группу были добавлены все задания, заключенные между тем заданием, в котором имеется ссылка, и тем, на которое эта ссылка указывает. Так, в нашем примере ссылки на задание Array116 будут правильно пересчитаны для заданий Array117–Array118. В задании Array120 номер ссылки будет на 1 меньше, чем требуемый (GroupDemo9 вместо GroupDemo10). Еще больше будет отличаться от требуемого номер ссылки в заданиях Array124–Array126: вместо GroupDemo10 в них будет указана ссылка GroupDemo6.

Отмеченные несоответствия связаны с тем, что в сводную группу не были включены некоторые задания, расположенные между заданиями, которые содержат ссылки, и заданием Array116, на которое эти ссылки должны указывать. Так как между Array120 и Array116 было пропущено только одно задание, ссылка отличается от требуемой на 1. Поскольку между группой заданий Array124–Array126 и Array116 было пропущено 4 задания, именно на эту величину отличаются ссылки для заданий данной группы.

Для корректировки подобных ошибок следует приписать к номеру ошибочного задания поправку для ссылки, отделив эту поправку от номера задания символом #. В нашем случае для задания Array120 надо указать поправку, равную 1, а для заданий Array124–Array126 — поправку, равную 4:

Array 116-118 120#1 124-126#4

Теперь во всех заданиях подгруппы «Одномерные массивы: серии целых чисел» сводной группы GroupDemo будут указываться верные ссылки на задание GroupDemo10 — первое задание этой подгруппы.

Приведенный пример показывает, что поправку для ссылки можно указывать как для отдельного задания, так и для диапазона заданий. Допустимо указывать как положительные, так и отрицательные поправки; значения поправок должны лежать в диапазоне от –50 до 50.

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

Текст комментариев выделяется в редакторе конструктора вариантов синим цветом и курсивным начертанием.

В заключение данного раздела приведем полный текст разработанной сводной группы, снабдив его комментарием:

% ======================================================================
% ДАННЫЕ ДЛЯ ДЕМОНСТРАЦИОННОЙ СВОДНОЙ ГРУППЫ УЧЕБНЫХ ЗАДАНИЙ.
% Предназначены для генерации сводной группы заданий с именем GroupDemo.
% Группа сохраняется в файле PT4GroupDemo.dll.
% ======================================================================

=GroupDemo
=Демонстрационная сводная группа
=1ret567fgd23KL56

Begin  1  2  4-6
Array 131-134
Array 116-118 120#1 124-126#4

-
Данная группа является примером \Iсводной группы\i,
включающей некоторые из заданий базовых групп Begin и Array.
- Ввод и вывод данных, оператор присваивания
Эта подгруппа содержит задания из группы Begin.\P
* Begin
- Одномерные массивы: множества точек на плоскости
** Array
-

Заметим, что файл GroupDemo.ptt с данной сводной группой, снабженный дополнительными комментариями, можно автоматически создать и загрузить в конструктор вариантов, выполнив команду «? | 2 Пример сводной группы» (в версиях 2.х конструктора вариантов эта команда имела название «Демонстрационная сводная группа»).


PrevNext

 

Рейтинг@Mail.ru

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

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