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

Ключ
Эти линии были удалены. Это слово было удалено.
Эти линии были добавлены. Это слово было добавлено.

Просмотр истории страницы


Есть 3 изменений. Просмотреть первое изменение .

 h1. Библиотека DL_I и стандартный чекер для интерактивных задач
  
 *{_}Применение._* Библиотека {{DL_I}} реализует базовые функции player'а при тестировании интерактивных задач; другими словами, она подключается player'ом при компиляции и сокращает объём вводимого с нуля кода.
  
 На данный момент библиотека реализована на Pascal и C++.
  
 h2. Pascal
  
 *{_}Подключение._* Подключение библиотек делается командой +Uses список_через_запятую;+ в начале текста программы:
 {code}
 Uses
  DL_I;
 {code}
 После подключения библиотеку следует инициализировать (см. _Интерфейс_).
  
 *{_}Интерфейс._* Библиотека предоставляет следующие строковые константы:
 * {{Failed}} \- пометка о непринятом тесте (см. {{RageExit}});
 * {{Success}} \- пометка о принятом тесте и выводимое чекером сообщение по умолчанию при принятом тесте (см. {{Succeed}});
 * {{TesterFail}} \- сообщение, выводимое чекером при преждевременном завершении player'а (при ошибке);
 * {{BadIO}} \- сообщение о некорректном вводе, предназначенное для использования с {{RageExit}};
 * {{OutOfRange}} \- сообщение о некорректном значении введённой величины, предназначенное для использования с {{RageExit}}.
  
 Также предоставлены следующие процедуры:
 {code}
 Procedure Init (OutFileName : AnsiString);
 {code}
 \- процедура инициализации библиотеки, должна быть запущена самой первой (параметр - имя выходного файла player'а).
 {code}
 Procedure RageExit (ErrMsg : AnsiString); OverLoad;
 Procedure RageExit (ErrMsg1 : AnsiString; Number : LongWord; ErrMsg2 : AnsiString); OverLoad;
 {code}
 \- процедура, выводящая в выходной файл пометку о непройденном тесте и сообщение ErrMsg, которое чекер выводит в комментарии (туда можно поместить информацию о причине отрицательного результата). Для удобства процедура перегружена с параметрами строка-число-строка, на случай, если потребуется вывести число в середине строки; при необходимости более сложных выводов следует пользоваться процедурой +WriteStr+ стандартной библиотеки:
 {code}
 WriteStr(S, 'Немного текста ', (Pi*R*R):0:10, '/', R*R:10);
  RageExit(S);
 {code}
 {code}
 Procedure Succeed (Comment : AnsiString = Success); OverLoad;
 Procedure Succeed (Comment1 : AnsiString; Number : LongWord; Comment2 : AnsiString); OverLoad;
 {code}
 \- процедура, выводящая в выходной файл пометку о пройденном тесте и сообщение Comment, по умолчанию равное Success, которое чекер выводит в комментарии (туда можно поместить дополнительную информацию о результате).
  
 h2. C+\+
  
 *{_}Подключение._* Подключение библиотеки делается командой +\# include <название>+ в начале текста программы:
 {code}
 # include <DL_I.h>
 {code}
 После подключения библиотеку следует инициализировать (см. _Интерфейс_).
  
 *{_}Интерфейс._* Библиотека предоставляет следующие строковые константы:
 * {{Failed}} \- пометка о непринятом тесте (см. {{RageExit}});
 * {{Success}} \- пометка о принятом тесте и выводимое чекером сообщение по умолчанию при принятом тесте (см. {{Succeed}});
 * {{TesterFail}} \- сообщение, выводимое чекером при преждевременном завершении player'а (при ошибке);
 * {{BadIO}} \- сообщение о некорректном вводе, предназначенное для использования с {{RageExit}};
 * {{OutOfRange}} \- сообщение о некорректном значении введённой величины, предназначенное для использования с {{RageExit}}.
  
 Также предоставлены следующие функции:
 {code}
 void Init (const char* OutFileName);
 {code}
 \- процедура инициализации библиотеки, должна быть запущена самой первой (параметр - имя выходного файла player'а).
 {code}
 void RageExit (const char* ErrMsg, ...);
 {code}
 \- процедура, выводящая в выходной файл пометку о непройденном тесте и сообщение ErrMsg, которое чекер выводит в комментарии (туда можно поместить информацию о причине отрицательного результата). ErrMsg может быть шаблоном строки; можно добавлять любое число дополнительных параметров (параметры такие же, как и у +printf+):
 {code}
 RageExit("Немного текста %.10lf/%10ld", (double)Pi()*R*R, (long)R*R);
 {code}
 {code}
 void Succeed ();
 void Succeed (const char* Comment, ...);
 {code}
 \- процедура, выводящая в выходной файл пометку о пройденном тесте и сообщение Comment (по умолчанию = Success), которое чекер выводит в комментарии (туда можно поместить дополнительную информацию о результате).
  
 h2. Дополнительно
  
 *{_}Чекер._* Для обработки вывода DL_I существует стандартный чекер. Исходный код: [здесь|].
  *{_}Чекер._* Для обработки вывода DL_I существует [стандартный чекер|http://dl.gsu.by/images/agulenko/DL_I_checker.exe] ([исходный код|http://dl.gsu.by/images/agulenko/DL_I_checker.pas]).
  
 *{_}Важные моменты._* Стандартный чекер для интерактивных задач не позволяет тестировать интерактивные задачи, в которых существует возможность
 частичного принятия теста (качественная оценка результата). Также, чекер предназначен для player'ов, делающих вывод в формате {{DL_I}}; так что для
 player'ов, не использующих эту библиотеку (в частности, сторонних) он неприменим. Поэтому в подобных случаях приходится реализовывать другой чекер
 (впрочем, проще всего сделать модификацию этого); файл вывода player'а должен содержать информацию, на основе которой чекер сможет определить результат
 тестирования (опять же, за основу можно взять функции из кода {{DL_I}}).
  
*{_}Исходный код{_}* библиотеки содержится [здесь|].
  *{_}Исходный код{_}* библиотеки содержится [здесь|http://dl.gsu.by/images/agulenko/DL_I.rar].
  
 *{_}Пример{_}* player'а, написанного с использованием библиотеки {{DL_I}}, содержится [здесь|].
  *{_}Пример{_}* player'а, написанного с использованием библиотеки {{DL_I}}, содержится [здесь|http://dl.gsu.by/images/agulenko/DL_I_player.pas].
  
 В этом примере тестируемая программа должна угадать натуральное число в заданных пределах; 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) - Ошибка/новая особенность - Свяжитесь с Администраторами