Difference between revisions of "Проверяющие программы"

From EjudgeWiki
Line 1: Line 1:
 
Проверяющие программы предназначены для проверки правильности ответа, выданного тестируемой программой.
 
Проверяющие программы предназначены для проверки правильности ответа, выданного тестируемой программой.
Проверяющие программы запускаются только если тестируемая программа уложилась в [[ошибка превышения лимита времени|ограничения времени работы на тесте]] (см. [[ошибка превышения лимита времени]]), уложилась в ограничения максимального размера памяти (см. [[ошибка превышения ограничения по памяти]]) и завершилась корректно (см. [[ошибка при работе программы]]).
+
Проверяющие программы запускаются только если тестируемая программа уложилась в [[ошибка превышения лимита времени|ограничения времени работы на тесте]], уложилась в [[ошибка превышения ограничения по памяти|ограничения максимального размера памяти]] и завершилась корректно (см. [[ошибка при работе программы]]).
  
Проверяющая программа должна диагностировать ошибку неправильного формата результата (см. [[ошибка неправильного формата результата]]) или неправильный ответ (см. [[неправильный ответ]]). В случае, если результат работы тестируемой программы выдан в правильном формате и верен, проверяющая программа уведомляет об этом тестирующую систему.
+
Проверяющая программа должна диагностировать [[ошибка неправильного формата результата|ошибку неправильного формата результата]] или [[неправильный ответ]]. В случае, если результат работы тестируемой программы выдан в правильном формате и верен, проверяющая программа уведомляет об этом тестирующую систему.
  
Формы взаимодействия проверяющей программы и тестирующей системы зависят от тестирующей системы. В системе ejudge проверяющая программа получает необходимые параметры в командной строке (см. [[параметры командной строки проверяющей программы]]) и возвращает вердикт с помощью кода завершения (см. [[коды завершения проверяющей программы]]). Вывод на стандартный поток вывода и стандартный поток ошибок проверяющей программы сохраняется в протоколе тестирования и доступен для последующего просмотра.
+
Формы взаимодействия проверяющей программы и тестирующей системы зависят от тестирующей системы. В системе ejudge проверяющая программа получает необходимые параметры в [[параметры командной строки проверяющей программы|командной строке]] и возвращает вердикт с помощью [[коды завершения проверяющей программы|кода завершения]]. Вывод на стандартный поток вывода и стандартный поток ошибок проверяющей программы сохраняется в протоколе тестирования и доступен для последующего просмотра.
  
Система ejudge предоставляет богатый набор стандартных проверяющих программ (см. [[стандартные проверяющие программы]]). В случае, когда требования на результат работы тестируемой программы не покрываются стандартными проверяющими программами необходимо написание специальной проверяющей программы для задачи.
+
Система ejudge предоставляет богатый набор [[стандартные проверяющие программы|стандартных проверяющих программ]]. В случае, когда требования на результат работы тестируемой программы не покрываются стандартными проверяющими программами необходимо написание специальной проверяющей программы для задачи.
  
 
Проверяющие программы могут быть написаны на любом языке программирования, программы на котором могут запускаться из командной строки. Это не обязательно C, C++, Pascal или Delphi, но и, например, Perl и т. п. Для облегчения разработки проверяющих программ и повышения их переносимости между разными тестирующими системами разработано несколько библиотек.
 
Проверяющие программы могут быть написаны на любом языке программирования, программы на котором могут запускаться из командной строки. Это не обязательно C, C++, Pascal или Delphi, но и, например, Perl и т. п. Для облегчения разработки проверяющих программ и повышения их переносимости между разными тестирующими системами разработано несколько библиотек.

Revision as of 11:34, 19 November 2006

Проверяющие программы предназначены для проверки правильности ответа, выданного тестируемой программой. Проверяющие программы запускаются только если тестируемая программа уложилась в ограничения времени работы на тесте, уложилась в ограничения максимального размера памяти и завершилась корректно (см. ошибка при работе программы).

Проверяющая программа должна диагностировать ошибку неправильного формата результата или неправильный ответ. В случае, если результат работы тестируемой программы выдан в правильном формате и верен, проверяющая программа уведомляет об этом тестирующую систему.

Формы взаимодействия проверяющей программы и тестирующей системы зависят от тестирующей системы. В системе ejudge проверяющая программа получает необходимые параметры в командной строке и возвращает вердикт с помощью кода завершения. Вывод на стандартный поток вывода и стандартный поток ошибок проверяющей программы сохраняется в протоколе тестирования и доступен для последующего просмотра.

Система ejudge предоставляет богатый набор стандартных проверяющих программ. В случае, когда требования на результат работы тестируемой программы не покрываются стандартными проверяющими программами необходимо написание специальной проверяющей программы для задачи.

Проверяющие программы могут быть написаны на любом языке программирования, программы на котором могут запускаться из командной строки. Это не обязательно C, C++, Pascal или Delphi, но и, например, Perl и т. п. Для облегчения разработки проверяющих программ и повышения их переносимости между разными тестирующими системами разработано несколько библиотек.

Самая распространённая среди таких библиотек - testlib. Эта библиотека разработана для языков программирования Pascal и Delphi. К сожалению, в настоящее время распространены несколько не совсем совместимых друг с другом версий библиотеки.

Для языка C++ существует адаптация библиотеки testlib, написанная М. Мирзаяновым.

В составе системы ejudge поставляется библиотека libchecker, предназначенная для написания проверяющих программ на языках C и C++. Эта библиотека поддерживает все расширенные возможности, предоставляемые системой ejudge при проверке программ.

При настройке турниров в системе ejudge с помощью CGI-интерфейса serve-control необходимая библиотека выбирается автоматически в зависимости от суффикса файла с исходным кодом проверяющей программы (см. автоматический выобор библиотеки для проверяющей программы).