|
Контрольные файлы (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,
связанный с отключенным файлом вариантов.
|