Programming Taskbook


E-mail:

Пароль:

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

 

ЮФУ

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

©  М. Э. Абрамян (Южный федеральный университет), 1998–2022

 

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

PrevNext


Контрольные файлы (check-файлы)

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

Электронный задачник Programming Taskbook не в состоянии проконтролировать способ, которым решалась та или иная задача. Тем не менее, во многих случаях такой контроль необходим (например, если задачу требуется решить с помощью процедуры или функции с заданным набором параметров, если при решении задания не следует использовать вспомогательные массивы и т. д.), и он, очевидно, должен проводиться самим преподавателем. В задачнике Programming Taskbook предусмотрено средство, упрощающее подобный контроль: это контрольные файлы (check-файлы).

Контрольный файл имеет фиксированное имя check.dat. Он создается с помощью конструктора вариантов PTVarMaker и содержит список заданий, требующих контроля со стороны преподавателя, и связанные с ними трехсимвольные коды. Одновременно с файлом check.dat создается текстовый файл check.txt, содержащий список кодов в отформатированном виде и строку заголовка с датой и временем создания check-файла и его уникальным 10-символьным идентификатором.

Если преподаватель желает, чтобы некоторые задания засчитывались только после того, как он просмотрит текст соответствующей программы, ему надо скопировать в каталог учащегося созданный файл check.dat (при работе с группой учащихся действия с check-файлами удобно выполнять с помощью команд меню «Check-файлы» контрольного центра преподавателя; кроме того, начиная с версии задачника 4.15, средства работы с check-файлами предусмотрены в программном модуле PT4Load — см. далее соответствующий раздел). Теперь при успешном проведении требуемого количества тестовых испытаний для любого из указанных заданий в окне задачника вместо сообщения «Задание выполнено!» будет выведено сообщение «Верное решение. Покажите преподавателю текст программы» (кроме того, будет выведена краткая информация об использованном файле check.dat: дата и время его создания, а также начальная часть его идентификатора). После появления такого сообщения можно ввести с клавиатуры трехсимвольный код, соответствующий данному заданию в check-файле (на экране вместо введенного кода изображаются символы «#»). При правильно указанном коде выводится сообщение «Задание выполнено!#», которое заносится в файл результатов учащегося. При неправильно указанном коде информация о выполнении задания в файл результатов не заносится.

Таким образом, при появлении на экране сообщения «Верное решение. Покажите преподавателю текст программы» учащийся должен показать свою программу преподавателю. После этого, если текст программы удовлетворяет всем требованиям, сам преподаватель еще раз запускает эту программу и в ответ на сообщение о верном решении вводит код, соответствующий заданию, пользуясь предварительно напечатанным списком кодов (напомним, что этот список автоматически создается при создании check-файла и записывается в текстовый файл check.txt). Появившееся сообщение «Задание выполнено!#» служит подтверждением правильности введенного кода. Знак «#» используется в тексте сообщения для того, чтобы в дальнейшем, после расшифровки файла результатов, можно было определить, какие задания были протестированы только задачником (сообщения об их выполнении будут иметь вид «Задание выполнено!»), а какие были дополнительно просмотрены преподавателем (для них сообщение о выполнении будет содержать знак «#»).

Если файл check.dat испорчен (например, в результате его непосредственного редактирования), то в окне задачника рядом с информацией об этом файле выводится слово «CORRUPTED». Проверку состояния check-файлов и восстановление тех из них, которые оказались испорчены, удобно выполнять с помощью контрольного центра преподавателя (см. команду «Check-файлы | Проверить»).

Начиная с версии задачника 4.18, при успешном прохождении всех тестов (но до ввода кода преподавателем) в файл результатов заносится специальное сообщение «Задание проверено задачником». При последующем вводе правильного кода оно заменяется на сообщение «Задание выполнено!#», а при отсутствии правильного кода остается в файле результатов, что позволяет в дальнейшем подтвердить по содержимому файла результатов факт успешной проверки задачником данного задания.

Идентификаторы контрольных файлов

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

При генерации каждый контрольный файл получает уникальный 10-символьный идентификатор, представляющий собой набор латинских букв и цифр, например, h08YgXD49S. Текст идентификатора никак не связан с содержимым контрольного файла и определяется случайным образом. Когда преподаватель регистрирует задание как выполненное, вводя код из контрольного файла, в файл результатов заносится не только сообщение «Задание выполнено!#», но и идентификатор того контрольного файла, с помощью которого задание было зарегистрировано.

При расшифровке файла результатов в окне модуля PT4Results идентификаторы контрольных файлов не отображаются. Получить доступ к ним можно только из контрольного центра преподавателя с помощью команды «Check-файлы | Просмотреть файл check.inf». Эта команда отображает на экране содержимое вспомогательного файла check.inf, который автоматически создается в каталоге преподавателя при добавлении к группе check-файла и впоследствии дополняется при просмотре результатов учащихся данной группы. Созданный файл check.inf содержит поясняющий текст и имя идентификатора контрольного файла, подключенного к группе:

% ------------------------------------------------------------------------------------
% Файл check.inf содержит список идентификаторов check-файлов. С его помощью можно
% проверить, какие check-файлы использовались при проверке заданий учащихся (эта
% информация содержится в файлах результатов, однако доступ к ней возможен только
% из контрольного центра преподавателя). Если некоторое задание было засчитано
% с помощью check-файла, идентификатор которого еще не содержится в файле check.inf,
% то при просмотре результатов информация об этом задании заносится в файл check.inf.
%
% Если удалить или закомментировать символом % строку TM-ALL, то в файл check.inf
% будут также записываться идентификаторы тех групп заданий, которые использовались
% учащимися и были засчитаны самим задачником.
% ------------------------------------------------------------------------------------

TM-ALL

C1-h08YgXD49S   (C1 30/11/2005 12:52 (h08Y))

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

C1-h08YgXD49S   (C1 30/11/2005 12:52 (h08Y))
C1-uTNFQ9PnNu Сергеев Константин:10     Minmax8     d20/10 19:16
C1-uTNFQ9PnNu Сергеев Константин:10     Matrix30    d24/11 19:19

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

Следует заметить, что при очередных просмотрах файлов результатов в файл check.inf будут занесены данные только о тех идентификаторах, которые отсутствуют в файле check.inf. Это позволяет избежать дублирования информации и, соответственно, разрастания файла check.inf. С помощью команды «Check-файлы | Просмотреть файл check.inf» можно также отредактировать файл check.inf, удалив «лишние» строки, содержащие информацию об одном и том же идентификаторе.

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

Если для проверки правильности выполнения задания не используются check-файлы, то задание регистрируется как выполненное после успешного прохождения требуемого числа тестовых испытаний, проведенных подряд. В этом случае в файл check.inf может быть записан идентификатор группы, к которой принадлежит выполненное задание. Для этого следует закомментировать или удалить строку TM-ALL, присутствующую в файле check.inf (см. выше). Подобная возможность позволяет распознать ситуацию, когда при выполнении заданий требуемая группа подменяется другой группой с тем же именем (эта ситуация крайне маловероятна, однако в принципе возможна, поскольку, начиная с версии 4.8 задачника, стандартный набор заданий можно дополнять новыми группами).

Генерация и просмотр контрольных файлов

Для создания контрольных файлов в конструкторе вариантов предназначены команды «Действия | Создать check-файл» и «Действия | Создать комбинированный check-файл».

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

Впрочем, check-файлы можно использовать и независимо от var-файлов, например, если учащиеся не получают различные варианты индивидуальных заданий, однако преподаватель все же желает проверять текст некоторых выполненных заданий. Если ему требуется подготовить набор исходных данных, рассчитанный только на создание check-файлов, то он может включить в каждое семейство заданий любое количество номеров (а не только 1, 2, 3, 4, 6 или 12 номеров, как при генерации вариантов). Например, для подготовки check-файла, содержащего коды всех заданий по темам Begin и Integer, преподаватель может использовать следующий набор данных:

% Все задания по теме Begin и Integer
Begin 1-40
Integer 1-30

Перечислим условия, которым должны удовлетворять исходные данные:

  • количество различных тем не должно превосходить 100;
  • название темы должно содержать от 1 до 9 символов — цифр и латинских букв, оно не должно оканчиваться цифрой;
  • номера заданий должны лежать в диапазоне от 1 до 999.

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

Если при выполнении команды «Создать check-файл» конструктор вариантов обнаружит, что check-файл на основе текущего набора данных уже существует, то он выведет запрос на подтверждение замены существующего check-файла.

Check-файл при создании шифруется; незашифрованной остается только его первая строка, содержащая информацию об этом файле в следующем формате: «<префикс> <дата и время создания файла> (<начальная часть идентификатора check-файла>)». В качестве префикса указывается буква C и цифра, определяющая версию формата check-файла (например, С1 или C2). Аналогичная (только более полная) информация записывается в первой строке соответствующего текстового файла check.txt со списком кодов.

В качестве примера приведем содержимое текстового файла check.txt, созданного при обработке конструктором вариантов указанного выше набора исходных данных:

Файл check.txt (создан 05/11/2015 12:38, идентификатор C1-0iMnL81ngd)
Begin     1:p44   2:pw2   3:hfm   4:p95   5:w5u   6:mo5   7:cjp   8:f3u   9:kry
         10:3kq  11:psc  12:meo  13:48m  14:vam  15:qmg  16:ctw  17:nva  18:rad
         19:yqk  20:kp6  21:wsj  22:kuk  23:fpf  24:0c8  25:1c2  26:731  27:w1b
         28:5vx  29:f8z  30:ru7  31:c9u  32:v70  33:mrt  34:pw6  35:jsv  36:620
         37:vo7  38:dcz  39:469  40:hcu
Integer   1:h2y   2:ndz   3:tn3   4:9kk   5:bk7   6:ohy   7:km0   8:8fo   9:cpg
         10:kmm  11:dm4  12:3k7  13:teb  14:qmx  15:266  16:4hm  17:x88  18:jwt
         19:3s3  20:ks6  21:arm  22:gup  23:y2o  24:q5r  25:py2  26:8r5  27:s2v
         28:xmn  29:q24  30:q7w

Просмотреть созданный файл check.txt можно с помощью команды конструктора вариантов «Действия | Просмотреть текущий check-файл» (данная команда будет доступна только при наличии check-файла, связанного с текущим набором исходных данных). Заметим, что при выполнении данной команды выполняется проверка правильности содержимого соответствующего файла check.dat; результаты этой проверки отображаются в нижней части окна с текстом файла check.txt.

Созданные файлы check.dat и check.txt сохраняются в подкаталоге того каталога, в котором содержится файл с расширением .ptv (или .var), являющийся источником данных для этих файлов; при этом подкаталог получает имя, совпадающее с именем использованного ptv-файла, и расширение .vardata. Например, при использовании файла VarDemo.ptv из каталога VARFILES в качестве источника данных для создания check-файла, созданные файлы check.dat и check.txt будут сохранены в подкаталоге VARFILES\VarDemo.vardata.

Начиная с версии 3.0 конструктора вариантов, помимо описанных выше файлов check.dat и check.txt создается копия файла check.dat, имеющая имя, совпадающее с именем файла-источника данных, и расширение .chk, причем эта копия сохраняется в том же каталоге, что и файл-источник. Если продолжить приведенный выше пример, то при использовании версии 3.0 конструктора вариантов будет дополнительно создан файл VarDemo.chk, который сохранится в каталоге VARFILES. Файлы с расширением .chk используются программой PT4Load при одновременном подключении к рабочему каталогу файла вариантов и связанного с ним check-файла.

Генерация комбинированных check-файлов

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

При выполнении данной команды на экран выводится окно со списком флажков. Этот список включает имена всех ptv-файлов, находящихся в том же каталоге, что и ptv-файл, загруженный в редактор (при необходимости можно перейти к другому каталогу). Требуется пометить те элементы списка, данные из которых надо использовать при генерации check-файла. При этом в нижней части окна будет формироваться имя того подкаталога, в котором будут сохранены созданные файлы check.dat и check.txt (по умолчанию это имя получается из имен использованных ptv-файлов, объединенных знаками «+»). После завершения выбора наборов исходных данных имя подкаталога можно отредактировать.

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

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

Управление check-файлами из программного модуля PT4Load

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

1. Добавление с помощью команды «Настроить каталог обновлений». Достаточно определить каталог обновлений, содержащий файл check.dat. При очередном получении данных из каталога обновлений указанный check-файл будет скопирован в рабочий каталог.

2. Добавление с помощью команды «Подключить файл вариантов». Если в том же каталоге, в котором размещен выбранный файл вариантов (var-файл), находится одноименный файл с расширением .chk, то при подключении выбранного файла вариантов в рабочему каталогу учащегося в этот каталог одновременно будет добавлен одноименный chk-файл (под именем check.dat). Таким образом, к каталогу учащегося будут одновременно подключены var-файл и check-файл, связанные с одним и тем же набором заданий. Заметим, что в дальнейшем при отключении файла вариантов (командой «Отключить файл вариантов») одновременно из рабочего каталога будет удален и файл check.dat, связанный с отключенным файлом вариантов.


PrevNext

 

Рейтинг@Mail.ru

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

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