Рабочий стол > DL Руководство пользователя > ... > Вспомогательные средства установки задач по программированию > Библиотека DL_I и стандартный чекер для интерактивных задач > Просмотр
Библиотека DL_I и стандартный чекер для интерактивных задач Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлено Гуленко Алексей, последний раз изменено Гуленко Алексей Apr 07, 2013  (просмотр изменений)
Метки: 
(нет)

Библиотека DL_I и стандартный чекер для интерактивных задач

Применение. Библиотека DL_I реализует базовые функции player'а при тестировании интерактивных задач; другими словами, она подключается player'ом при компиляции и сокращает объём вводимого с нуля кода.

На данный момент библиотека реализована на Pascal и C++.

Pascal

Подключение. Подключение библиотек делается командой Uses список_через_запятую; в начале текста программы:

Uses
  DL_I;

После подключения библиотеку следует инициализировать (см. Интерфейс).

Интерфейс. Библиотека предоставляет следующие строковые константы:

  • Failed - пометка о непринятом тесте (см. RageExit);
  • Success - пометка о принятом тесте и выводимое чекером сообщение по умолчанию при принятом тесте (см. Succeed);
  • TesterFail - сообщение, выводимое чекером при преждевременном завершении player'а (при ошибке);
  • BadIO - сообщение о некорректном вводе, предназначенное для использования с RageExit;
  • OutOfRange - сообщение о некорректном значении введённой величины, предназначенное для использования с RageExit.

Также предоставлены следующие процедуры:

Procedure Init (OutFileName : AnsiString);

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

Procedure RageExit (ErrMsg : AnsiString);   OverLoad;
Procedure RageExit (ErrMsg1 : AnsiString;   Number : LongWord;   ErrMsg2 : AnsiString);   OverLoad;

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

WriteStr(S, 'Немного текста ', (Pi*R*R):0:10, '/', R*R:10);
  RageExit(S);
Procedure Succeed (Comment : AnsiString = Success);   OverLoad;
Procedure Succeed (Comment1 : AnsiString;   Number : LongWord;   Comment2 : AnsiString);   OverLoad;

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

C++

Подключение. Подключение библиотеки делается командой # include <название> в начале текста программы:

# include <DL_I.h>

После подключения библиотеку следует инициализировать (см. Интерфейс).

Интерфейс. Библиотека предоставляет следующие строковые константы:

  • Failed - пометка о непринятом тесте (см. RageExit);
  • Success - пометка о принятом тесте и выводимое чекером сообщение по умолчанию при принятом тесте (см. Succeed);
  • TesterFail - сообщение, выводимое чекером при преждевременном завершении player'а (при ошибке);
  • BadIO - сообщение о некорректном вводе, предназначенное для использования с RageExit;
  • OutOfRange - сообщение о некорректном значении введённой величины, предназначенное для использования с RageExit.

Также предоставлены следующие функции:

void Init (const char* OutFileName);

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

void RageExit (const char* ErrMsg, ...);

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

RageExit("Немного текста %.10lf/%10ld", (double)Pi()*R*R, (long)R*R);
void Succeed ();
void Succeed (const char* Comment, ...);

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

Дополнительно

Чекер. Для обработки вывода DL_I существует стандартный чекер (исходный код).

Важные моменты. Стандартный чекер для интерактивных задач не позволяет тестировать интерактивные задачи, в которых существует возможность
частичного принятия теста (качественная оценка результата). Также, чекер предназначен для player'ов, делающих вывод в формате DL_I; так что для
player'ов, не использующих эту библиотеку (в частности, сторонних) он неприменим. Поэтому в подобных случаях приходится реализовывать другой чекер
(впрочем, проще всего сделать модификацию этого); файл вывода player'а должен содержать информацию, на основе которой чекер сможет определить результат
тестирования (опять же, за основу можно взять функции из кода DL_I).

Исходный код библиотеки содержится здесь.

Пример player'а, написанного с использованием библиотеки DL_I, содержится здесь.

В этом примере тестируемая программа должна угадать натуральное число в заданных пределах; player выводит <H>, если искомое число больше предлагаемого, <L> - если меньше, <OK> - если программа угадала (в этом случае ей надлежит завершить работу).

Примеры установленных задач: [Pascal|], [C++|].

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами