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

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

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


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

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