Для установки таких задач необходимы три файла (кроме самого условия): task.in – входные данные тестов, task.out – выходные данные тестов, task.cfg – конфигурация задачи (одинаковый для всех задач этого типа). Все файлы в кодировке windows, в файлах не должно быть пустых строк.
Для задач с выбором правильного ответа следует использовать следующий файл task.cfg:
TYPE = USERS
CHECKER =
'D:\DelTA\Checkers\MathCheck.exe $SOLUTION$ task.out $MAXPOINT$'
CHECKFILES =
{task.out}
CHECKSUBJECT =
FILE
EXTTYPE = 'Пользовательская'
Первая строка файла должна содержат символ H (horizontal) или V (vertical) – вертикальный или горизонтальный фрейм и далее через пробел – число, размер фрейма в процентах, относительно условия задачи. Пример первой строки: V 21%
Любая из последующих строчек может быть либо текстом, либо полем ввода, и так далее:
Формат строки |
Пример строки |
Назначение |
HDIV Текст |
HDIV Тест 1 |
Разделитель тестов. Обычный текст, выделенный цветом. |
TEXT Текст |
TEXT 2+2= |
Обычный текст. |
|
EDIT ans1 Ответ: |
Поле ввода текста среднего размера (8..20 символов) |
|
SEDIT ans2 Ответ: |
Поле ввода текста малого размера (до 8 символов) |
|
|
Поле ввода текста большого размера (более 20 символов) |
|
|
Поле ввода текста очень большого размера (ровно на всю ширину окна) |
EDT Код |
EDT ans3 Ответ: |
Поле ввода текста среднего размера, без перевода строки. |
COMBO Код Вариант1| Вариант2|… |
COMBO ans4
No|Yes |
Выбор из нескольких вариантов. |
RADIO Код Вариант1 |
RADIO ans5 2+2=3 RADIO ans5 2+2=4 |
Выбор из нескольких вариантов. |
CHECK Код Тест |
CHECK ans6 2+2=4 |
Выбор варианта |
Пример:
V 38%
TEXT Обычный текст
TEXT И еще текст
HDIV Проверка сложения
CHECK ans1 2+2=4
HDIV Проверка умножения
RADIO ans2 2*2=3
RADIO ans2 2*2=4
HDIV Проверка деления
TEXT 25/5=
COMBO ans3 5|4|3
HDIV Сколько будет 2<sup>2</sup>?
SEDIT ans4
HDIV Сколько будет 2<sup>20</sup>?
EDIT ans5
HDIV Сколько будет 2<sup>40</sup>?
LEDIT ans6
Первая строка файла должна быть
countby=task (если балы даются за полностью решенную задачу) или
countby=test (если балы даются за каждый верный ответ).
case=sensitive (опциональная строка, которая форсирует регистрозависимое сравнение пользовательских ответов с правильными).
Далее идут блоки тестов. Каждый блок начинается со строки
[N] (здесь N – номер теста). Далее необходимо указать правильные ответы:
Код=Правильный ответ
В конце блока теста следует количество баллов за тест:
score[N]=баллов
После всех тестов должна быть формула для вычисления баллов за всю задачу. В ней разрешено использовать операции сложения и умножения:
total=score[N1]+score[N2]*score[N3]…
Пример (для приведенного выше файла task.in):
countby=test
[1]
ans1=1
score[1]=1
[2]
ans2=2
score[2]=1
[3]
ans3=1
score[3]=1
[4]
ans4=4
score[4]=1
[5]
ans5=1048576
score[5]=1
[6]
ans6=1099511627776
score[6]=1
total=score[1]+score[2]+score[3]+score[4]+score[5]+score[6]
Внимание! Знак равенства в каждом случае должен следовать сразу за "переменной". Пробелы недопустимы.
В строчках, задающих правильные ответы, все, что находится после знака "=" вплоть до перевода строки, трактуется, как принадлежащее ответу (в т.ч. начальные и конечные пробелы).
Возможны также несколько правильных вариантов ответа. Для этого достаточно перечислить их все:
[1]
ans1=мышь
ans1=мышка
score[1]=1
Если Вас не устраивает наш стандартный интерфейс пользователя, вы можете создать свой. Для этого достаточно скрыть панель с ответами, поставив в файле task.in строке V 0% и в файле с условием составить свои формы для посылки. Пример такого приема можно увидеть в курсе «Пропедевтика информатики».
New! Широкие возможности по выбору желаемого интерфейса, а также использованию готовых шаблонов предоставляет новый формат диалоговых задач.
Рисунок 6 – Нестандартный интерфейс ввода
В системе DLB часто проводятся параллельно олимпиады по программированию и информатической математике. Причем условия задач по математике такие же, как и в задачах по программированию. Разница лишь в том, что в задаче по программированию ученику необходимо написать программу, которая бы давала ответ при любых входных данных, а в математической задаче ученик должен находить ответ сам.
Для проведения таких олимпиад можно использовать одинаковый набор тестов (для математиков большие и трудоемкие тесты можно опускать).
Мною создана программа, которая по существующим тестам для программистов создает тесты для математических задач.
Перед запуском программы должны быть созданы файлы task.cfg, 1.in, 1.out, …
Параметры запуска:
/число : обрабатывать первых n тестов
/H : горизонтальный фрейм (по умолчанию - вертикальный)
/Sчисло: размер фрейма в % (по умолчанию - 21%)
/T : балы даются по тестам (по умолчанию - за всю задачу)
/C : форма для вопроса – COMBO
Полученные файлы task.in и task.out необходимо скопировать в каталог тестов. Туда же надо скопировать стандартный для математических задач task.cfg.
Данную программу всегда можно найти в каталоге \\NIT_SERVER\NIT\PROJECTS\DL\TST2MATH