<li>процедурный тип <ahref="tmaker_proc1.html#TInitTaskProc">TInitTaskProc</a>;
в библиотеке с группой заданий должна быть определена <i>основная процедура группы</i> типа TInitTaskProc,
позволяющая генерировать задание с требуемым номером;
<li>процедура CreateGroup, определяющая <ahref="tmaker_proc1.html#CreateGroup">общие характеристики</a> группы заданий;
<li>процедуры и константы, используемые для <ahref="tmaker_proc1.html#CreateTask">создания нового задания</a> и добавления в него
формулировки, а также исходных и контрольных данных базовых типов (логического, целочисленного,
вещественного, символьного строкового); обычно каждое задание оформляется в виде отдельной процедуры, которая вызывается
из основной процедуры группы;
<li>процедура <ahref="tmaker_proc1.html#UseTask">UseTask</a>, позволяющая импортировать в создаваемую
группу задания из других групп; эта процедура обычно вызывается в основной процедуре группы;
<li>процедуры, обеспечивающие <ahref="tmaker_proc1.html#CommentText">добавление комментариев</a>, оформляемых в виде <i>преамбулы</i> к группе и ее подгруппам;
<li>функции и константы, позволяющие определить <ahref="tmaker_proc1.html#PT4State">текущее состояние задачника</a>
(используемый язык программирования, текущую <i>локаль</i>
— русскую или английскую —, текущую версию задачника, а также номер текущего тестового испытания программы,
выполняющей задание);
<li>функции, предоставляющие разработчику заданий <ahref="tmaker_proc1.html#Sample">образцы слов, предложений и многострочных текстов</a>;
<li>процедуры, позволяющие включать в задание <ahref="tmaker_proc2.html#File">файловые данные</a>;
<li>процедуры, позволяющие включать в задание <ahref="tmaker_proc2.html#Dynamic">указатели и динамические структуры данных</a>
— линейные списки и деревья;
<li>процедуры для разработки заданий по <ahref="tmaker_proc2.html#MPI">параллельному MPI-программированию</a>.
<p>При определении новой группы заданий можно учитывать <i>текущий язык программирования</i>,
установленный для задачника, и в зависимости от этого языка по-разному инициализировать
некоторые задания группы. Эта возможность является особенно полезной при реализации
заданий, связанных с обработкой динамических структур данных, поскольку в языках Visual Basic и 1C
подобные задания должны быть недоступны, а в языках Pascal и C++ они должны оформляться по-другому, нежели в
языках платформы .NET, Python и Java. См. также <ahref="tmaker_samples.html#dynamic">пункт, посвященный динамическим структурам данных</a>, в разделе «Примеры».
</p>
<p>Разрабатываемые группы заданий желательно снабжать <i>дополнительными комментариями</i>. Эти комментарии не отображаются
в окне задачника, однако включаются в html-описание группы в виде <i>преамбулы группы</i> (html-описание
группы можно создать, либо вызвав в программе
процедуру Task с параметром вида '<<i>имя группы</i>>#', например, <code>'TMDemoAbc#'</code>, либо воспользовавшись
кнопкой <imgsrc="images\demo_3.png"> в окне среды PascalABC.NET.
Кроме того, большие группы заданий целесообразно разделять на
несколько подгрупп, в каждую из которых также можно добавлять комментарии (<i>преамбулы подгрупп</i>). В преамбулах, как
и в формулировках заданий, можно использовать специальные <ahref="tmaker_format.html">управляющие последовательности</a>,
которые позволяют отформатировать текст требуемым образом
(в частности, обеспечивают выделение переменных, позволяют
использовать в тексте верхние и нижние индексы, специальные символы и т. д.). Форматирование
используется и при отображении формулировки задания в окне задачника, и при генерации
html-страницы с описанием группы заданий.
См. также <ahref="tmaker_samples.html#comments">пункт,
посвященный добавлению комментариев</a>, в разделе «Примеры».
</p>
<h2><aname="debug"></a>Настройка проектов для языка PascalABC.NET и особенности их отладки</h2>
<p>Для разработки новой группы заданий в среде PascalABC.NET
достаточно подготовить pas-файл с именем, совпадающим с именем
создаваемой библиотеки, и структурой, описанной в
пункте <ahref="#structure">«Структура проекта с описанием группы заданий»</a>.
Для данного файла должен быть доступен модуль PT4TaskMakerNET; он может размещаться
в этом же каталоге или в подкаталоге Lib системного каталога среды PascalABC.NET.
</p>
<p>При нажатии клавиши [F9] будет создана динамическая библиотека с новой группой заданий.
</p>
<p>Поскольку в среде PascalABC.NET
не предусмотрены средства для определения главного приложения при разработке библиотек,
для тестирования новой группы заданий необходимо использовать еще одно приложение, заготовку
для которого можно создать с помощью программного модуля PT4Load
уже после первой успешной компиляции динамической библиотеки. Впрочем, заготовка является
настолько простой, что ее можно создать и непосредственно. Например, для тестирования
группы с именем TMDemoAbc достаточно воспользоваться следующей программой: