|
Общее описание
Назначение и состав конструктора учебных заданий
Конструктор учебных заданий PT4TaskMaker позволяет разрабатывать
новые группы заданий для электронного задачника Programming Taskbook, начиная с версии 4.8.
В связи с разработкой комплекса Programming Taskbook for MPI, являющегося дополнением к универсальному варианту задачника
Programming Taskbook версии 4.9, в конструктор учебных заданий для задачника Programming Taskbook 4.9
были добавлены новые средства, предназначенные для создания групп учебных заданий по параллельному программированию.
Начиная с версии 4.10, конструктор учебных заданий
можно использовать для разработки дополнительных групп заданий,
связанных с ЕГЭ по информатике и ИКТ.
Конструктор версий 4.84.10 был реализован только для языка Pascal, причем
универсальные группы заданий, доступные для всех сред, поддерживаемых задачником,
можно было разрабатывать только в средах Borland Delphi (Turbo Delphi) и Free Pascal Lazarus
(с помощью варианта конструктора, входящего в систему PascalABC.NET, можно было
разрабатывать группы только для данной системы). В версии 4.11
возможности конструктора
PT4TaskMaker были существенно расширены: теперь новые группы заданий, доступные
для всех поддерживаемых задачником сред, можно
разрабатывать не только на языке Pascal, но и на языках C++ и C#, причем
конструктор для языка Pascal можно использовать и в среде PascalABC.NET.
Каждая группа учебных заданий оформляется в виде отдельной динамической библиотеки
(dll-файла). Dll-файлы с новыми группами могут находиться либо
в рабочем каталоге учащегося, либо в подкаталоге Lib системного каталога
задачника. Подключение новых групп происходит автоматически при инициализации
задания, поэтому вид проекта-заготовки при работе с новыми группами
не отличается от стандартного вида проекта, ориентированного на
базовые группы заданий. Кроме того, новые группы автоматически
добавляются в список доступных групп в программных модулях PT4Demo и PT4Load.
Созданные в виде dll-файлов новые группы заданий могут использоваться
не только в любых средах программирования, поддерживаемых универсальным вариантом задачника,
но и в среде PascalABC.NET; для этого достаточно разместить dll-файл в
подкаталоге PT4\Lib системного каталога PascalABC.NET или в рабочем каталоге учащегося.
В версии 4.21 в набор вариантов конструктора для языков C# и PascalABC.NET включены
варианты для генерации 64-разрядных .NET-библиотек с группами заданий.
Следует подчеркнуть, что вариант конструктора для языка Pascal позволяет генерировать
как 32-разрядные, так и 64-разрядные библиотеки с группами заданий (следует лишь
использовать версию среды Free Pascal Lazarus с соответствующей разрядностью).
64-разрядные динамические библиотеки с группами заданий должны иметь префикс xPT4
(вместо префикса PT4, используемого для 32-разрядных библиотек).
Поскольку конструктор учебных заданий предназначен, прежде всего, для преподавателей программирования,
связанные с ним файлы включены не в базовый дистрибутив задачника Programming Taskbook, а в дистрибутив
комплекса Teacher Pack for PT4. При установке данного комплекса в его системном каталоге
(по умолчанию это каталог PT4TeacherPack, расположенный в каталоге Program Files) создается подкаталог TASKMAKE.
Каждый из подкаталогов данного каталога содержит вариант конструктора для определенного
языка или среды программирования, а также пример группы заданий, созданной с помощью этого варианта.
Ниже перечисляются файлы, входящие в каждый подкаталог.
Подкаталог Pas:
- PT4TaskMaker.pas (конструктор для сред Delphi и Lazarus),
- PT4TMDemoPas.dpr (исходный код для демонстрационной группы заданий TMDemoPas, подготовленной на языке Pascal в среде Delphi),
- PT4TMDemoPas.lpr (исходный код для демонстрационной группы заданий TMDemoPas, подготовленной на языке Pascal в среде Lazarus),
- PT4TMDemoPas.dll (библиотека с группой заданий TMDemoPas, откомпилированная в среде Turbo Delphi 2006).
Подкаталог Cpp:
- pt4taskmaker.cpp и pt4taskmaker.h (конструктор для языка C++),
- PT4TMDemoCpp.cpp (исходный код для демонстрационной группы заданий TMDemoCpp, подготовленной на языке C++),
- PT4TMDemoCpp.dll (библиотека с группой заданий TMDemoCpp, откомпилированная в среде Microsoft Visual Studio 2010).
Подкаталог Cs:
- PT4TaskMaker.cs (конструктор для языка C#),
- xPT4TaskMaker.cs (конструктор для языка C#, вариант для генерации 64-разрядных библиотек),
- PT4TMDemoCs.cs (исходный код для демонстрационной группы заданий TMDemoCs, подготовленной на языке C#),
- xPT4TMDemoCs.cs (исходный код для демонстрационной группы заданий TMDemoCs, использующей конструктор xPT4TaskMaker.cs),
- PT4TMDemoCs.dll (библиотека с группой заданий TMDemoCs, откомпилированная в среде Microsoft Visual Studio 2008).
Подкаталог Abc:
- PT4TaskMakerNET.pas (конструктор для среды PascalABC.NET),
- xPT4TaskMakerNET.pas (конструктор для среды PascalABC.NET, вариант для генерации 64-разрядных библиотек),
- PT4TMDemoAbc.pas (исходный код для демонстрационной группы заданий TMDemoAbc, подготовленной на языке Pascal в среде PascalABC.NET),
- xPT4TMDemoAbc.pas (исходный код для демонстрационной группы заданий TMDemoAbc, использующей конструктор xPT4TaskMakerNET.pas),
- PT4TMDemoAbc.dll (библиотека с группой заданий TMDemoAbc, откомпилированная в среде PascalABC.NET).
Все демонстрационные группы содержат одинаковый набор заданий (исключение составляет группа для языка C#,
в которую не включено задание на динамические структуры данных).
Процесс разработки демонстрационной группы заданий описан в разделе
«Примеры».
Подробное описание возможностей конструктора учебных заданий включено в гипертекстовую справочную систему Teacher Pack Info.
Данную систему можно вызвать непосредственно из меню комплекса Teacher Pack (расположенного в группе «Программы» Главного меню Windows),
выполнив команду «Teacher Pack Info».
В версии 4.14 конструктор был дополнен возможностью подключать к любым группам заданий
файлы дополнений. Для разработки файла дополнений не требуется использовать среду программирования;
этот файл имеет обычный текстовый формат (кодировка ANSI CP1251). Наличие файла дополнения позволяет
отображать дополнительные сведения о задании в окне задачника (а именно в разделе отладки)
и в html-документе с описанием данной группы заданий (при этом дополнительные сведения
в html-документе можно добавлять также к преамбулам группы и ее подгрупп). Кроме того, с помощью файла дополнений
можно подготовить специальные варианты программ-заготовок для некоторых (или всех) заданий группы,
если требуется, чтобы заготовки для этих заданий отличались от стандартных заготовок, генерируемых
программным модулем PT4Load по умолчанию. Описание формата файлов дополнений и примеры их использования
приводятся в разделе «Использование файлов дополнений».
Обзор элементов конструктора учебных заданий
Конструктор учебных заданий представляет собой набор констант, функций и процедур,
предназначенных для определения каждого из входящих в группу заданий, а также для настройки свойств группы в целом.
В конструкторах для языков C++ и C# под процедурами понимаются функции, не возвращающие
значений. Все элементы конструктора для языка C# оформлены в виде
членов класса PT4.TaskMaker.
Ниже перечислены элементы, входящие в любой из вариантов конструктора PT4TaskMaker
(исключение составляют элементы, связанные с указателями и динамическими структурами данных,
не включенные в вариант конструктора для языка C#):
- процедурный тип TInitTaskProc;
в библиотеке с группой заданий должна быть определена основная процедура группы типа TInitTaskProc,
позволяющая генерировать задание с требуемым номером;
- процедура CreateGroup, определяющая общие характеристики группы заданий;
- процедуры и константы, используемые для создания нового задания и добавления в него
формулировки, а также исходных и контрольных данных базовых типов (логического, целочисленного,
вещественного, символьного строкового); обычно каждое задание оформляется в виде отдельной процедуры, которая вызывается
из основной процедуры группы;
- процедура UseTask, позволяющая импортировать в создаваемую
группу задания из других групп; эта процедура обычно вызывается в основной процедуре группы;
- процедуры, обеспечивающие добавление комментариев, оформляемых в виде преамбулы к группе и ее подгруппам;
- функции и константы, позволяющие определить текущее состояние задачника
(используемый язык программирования, текущую локаль
русскую или английскую , текущую версию задачника, а также номер текущего тестового испытания программы,
выполняющей задание);
- функции, предоставляющие разработчику заданий образцы слов, предложений и многострочных текстов;
- процедуры, позволяющие включать в задание файловые данные;
- процедуры, позволяющие включать в задание указатели и динамические структуры данных
линейные списки и деревья;
- процедуры для разработки заданий по параллельному MPI-программированию.
Библиотечные и сводные группы
При разработке новых заданий целесообразно объединять их в группы с именами, содержащими, кроме названия темы, дополнительные
сведения, например, версию созданной группы и данные об авторе. Однако допустимые имена групп могут содержать
не более 9 символов, что является недостаточным для указания дополнительных сведений.
С другой стороны, группы, содержащие только новые задания (библиотечные группы), вряд ли будут использоваться
непосредственно в учебном процессе; более целесообразной будет компоновка этих новых заданий с заданиями из соответствующей базовой группы
задачника (и, возможно, с заданиями из других библиотечных групп).
Поэтому при разработке группы, содержащей исключительно новые задания (библиотечной группы, или библиотеки заданий)
разрешено указывать имя длины более 9 символов (но не более 25).
Библиотечные группы не предназначены для непосредственного использования в учебном процессе. Задания из этих групп
можно запускать с помощью процедуры Task,
однако они будут отображаться только в демонстрационном режиме (точнее, в режиме «просмотра библиотеки заданий»,
о чем будет свидетельствовать соответствующий текст, указываемый в окне задачника вместо сведений об учащемся).
Библиотечные группы не включаются в список групп, отображаемый в модуле PT4Load, однако доступны
для просмотра с помощью модуля PT4Demo (в этом модуле библиотечные группы указываются в конце
списка групп).
Для применения на занятиях удобно использовать сводные группы, не содержащие реализации новых заданий,
а лишь импортирующие наборы заданий из базовых и дополнительных библиотечных групп и компонующие их в порядке, который требуется преподавателю.
При импортировании задания из другой группы у него изменяется название и ключ
(которые берутся из характеристик сводной группы), однако сохраняются такие характеристики импортируемой группы, как
заголовки подгрупп и сведения об авторе.
Имена сводных групп должны содержать не более 9 символов. Для разработки сводных групп можно использовать упрощенный механизм,
не требующий написания программного кода: достаточно подготовить текстовый файл, в котором в специальном формате
будут содержаться все данные, необходимые для создания сводной группы, а затем обработать этот файл в программе
«Конструктор вариантов», входящей в комплекс Teacher Pack.
Структура проекта с описанием группы заданий
В данном разделе описываются правила, которым должен удовлетворять проект (dll-библиотека),
содержащий описание новой группы заданий (см. также раздел «Примеры»).
Каждый проект, реализуемый в виде dll-библиотеки, должен содержать определение единственной группы заданий.
Имя библиотеки с группой заданий должно иметь вид PT4 <имя группы><маркер локали>,
где <маркер локали> является либо пустой строкой, либо имеет вид _ru или _en .
Например, группа TMDemoPas может быть реализована в виде библиотек PT4TMDemoPas.dll, PT4TMDemoPas_ru.dll
и PT4TMDemoPas_en.dll. Библиотеки с явно указанным маркером локали используются только в
варианте задачника, соответствующем данной локали (ru в русском варианте задачника,
en в английском). Библиотеки, в которых не указан маркер локали, используются в любом
варианте задачника (если они не перекрываются библиотекой с явно указанной локалью).
Порядок поиска библиотек для требуемой группы следующий: вначале просматривается рабочий каталог учащегося
и в нем ищется библиотека с данным именем и явно указанной локалью; если она не найдена,
то ищется библиотека с данным именем без маркера локали; если она не найдена, то
поиск библиотек (в этом же порядке) выполняется в каталоге Lib системного каталога задачника.
Проект с описанием новой группы должен иметь определенную структуру.
Вначале приведем описание структуры проекта, который реализуется
на языке Pascal в средах Delphi и Lazarus:
[Pascal]
library PT4MakerDemo;
uses PT4TaskMaker;
// процедуры, реализующие конкретные задания
...
procedure InitTask(num: integer); stdcall;
begin
// в данной процедуре выполняются вызовы вспомогательных процедур,
// реализующих все задания группы; номер задания определяется
// параметром num; для определения процедуры, соответствующей
// требуемому номеру, обычно используется оператор case
...
end;
procedure inittaskgroup;
begin
// процедура inittaskgroup должна быть оформлена как экспортируемая
// процедура данной библиотеки; в ней выполняется вызов стартовой
// процедуры CreateGroup и могут вызываться процедуры, связанные
// с добавлением комментариев (преамбул) для группы и ее подгрупп
CreateGroup('TMDemoPas', 'Примеры различных задач (конструктор для языка Pascal)',
'М. Э. Абрамян, 2013', 'qwqfsdf13dfttd', 8, InitTask);
...
end;
exports inittaskgroup, activate;
begin
end.
В проектах, реализуемых в среде Delphi, в разделе exports можно не указывать процедуру activate.
В начале проекта, реализуемого в среде Lazarus, следует указать директивы компиляции,
настраивающие режим совместимости с Delphi-расширениями Паскаля и режим поддержки Ansi-строк
(«длинных» строк):
{$mode delphi}{$H+}
При реализации проекта в среде PascalABC.NET следует внести в приведенный выше пример
следующие изменения:
Проекты, реализующие новые группы на языках C++ и C#, имеют аналогичную структуру.
Приведем соответствующие примеры, не включая в них дополнительные комментарии,
описывающие назначение и особенности процедур InitTask и inittaskgroup:
[C++]
#include "pt4taskmaker.h"
// процедуры, реализующие конкретные задания
...
void _stdcall InitTask(int num)
{
...
}
void _stdcall inittaskgroup()
{
CreateGroup("TMDemoCpp", "Примеры различных задач (конструктор для языка C++)",
"М. Э. Абрамян, 2013", "qwqfsdf13dfttd", 8, InitTask);
...
}
[C#]
using PT4;
namespace PT4TMDemoCs
{
public class PT4TMDemoCs : TaskMaker
{
// процедуры (статические методы), реализующие конкретные задания
...
static void InitTask(int num)
{
...
}
public static void inittaskgroup()
{
CreateGroup("TMDemoCs", "Примеры различных задач (конструктор для языка C#)",
"М. Э. Абрамян, 2013", "qwqfsdf13dfttd", 7, InitTask);
...
}
public static void activate(string s)
{
ActivateNET(s);
}
}
}
Структура проекта для языка C++ аналогична структуре для среды Delphi; основное отличие
состоит в том, что раздел exports указывать не требуется; кроме того, модификатор _stdcall
необходимо указывать и для функции inittaskgroup.
Структура проекта для языка C# отличается от ранее приведенных более существенно.
Необходимо, чтобы все элементы определения группы были оформлены в виде
членов класса, наследуемого от класса PT4.TaskMaker . При этом пространство имен
для этого класса и имя класса должны совпадать с именем создаваемой
динамической библиотеки (в приведенном примере PT4TMDemoCs ), которое, в свою
очередь должно соответствовать имени самой группы (TMDemoCs ).
Подобно проекту для среды PascalABC.NET, в проект для языка C# должно входить
описание функции activate с вызовом функции ActivateNET.
При использовании 64-разрядного варианта конструктора для языка C# (файла xPT4TaskMaker.cs)
необходимо порождать новый класс от класса xPT4.TaskMaker и использовать пространство
имен, совпадающее с именем создаваемой динамической библиотеки (это имя должно иметь префикс xPT4).
При определении новой группы заданий можно учитывать текущий язык программирования,
установленный для задачника, и в зависимости от этого языка по-разному инициализировать
некоторые задания группы. Эта возможность является особенно полезной при реализации
заданий, связанных с обработкой динамических структур данных, поскольку в языках Visual Basic и 1C
подобные задания должны быть недоступны, а в языках Pascal и C++ они должны оформляться по-другому, нежели в
языках платформы .NET, Python, Java и Ruby. См. также пункт, посвященный динамическим структурам данных, в разделе «Примеры».
Разрабатываемые группы заданий желательно снабжать дополнительными комментариями. Эти комментарии не отображаются
в окне задачника, однако включаются в html-описание группы в виде преамбулы группы (html-описание
группы можно создать, либо вызвав в программе
процедуру Task с параметром вида '<имя группы>#', например, 'TMDemoPas#' , либо воспользовавшись
кнопкой в окне программного модуля PT4Demo).
Кроме того, большие группы заданий целесообразно разделять на
несколько подгрупп, в каждую из которых также можно добавлять комментарии (преамбулы подгрупп). В преамбулах, как
и в формулировках заданий, можно использовать специальные управляющие последовательности,
которые позволяют отформатировать текст требуемым образом
(в частности, обеспечивают выделение переменных, позволяют
использовать в тексте верхние и нижние индексы, специальные символы и т. д.). Форматирование
используется и при отображении формулировки задания в окне задачника, и при генерации
html-страницы с описанием группы заданий.
См. также пункт, посвященный добавлению комментариев, в разделе «Примеры».
Настройка проектов для различных языков и особенности их отладки
Среды Delphi и Lazarus
При разработке группы заданий в средах Delphi или Lazarus достаточно подготовить
файл проекта с расширением dpr для Delphi и lpr для Lazarus и именем, удовлетворяющим
требованиям, приведенным в начале предыдущего пункта. Поскольку к проекту должен подключаться
модуль PT4TaskMaker.pas, его следует скопировать в каталог,
предназначенный для размещения всех файлов проекта.
Загрузить файл проекта в среду Delphi можно командой меню «File | Open Project...».
В среде Lazarus можно воспользоваться командой «Проект | Создать проект из файла...»,
указав ранее подготовленный файла с расширением lpr и выбрав в качестве типа проекта
вариант «Library».
После загрузки файла проекта
в среду Delphi или Lazarus для его компиляции достаточно выполнить соответствующую
команду (в частности, можно нажать клавишу [F9]).
Примечание. 64-разрядную среду Lazarus можно использовать для генерации 64-разрядных вариантов динамических библиотек
с группами учебных заданий. Возможность применения таких вариантов появилась в версии 4.21 электронного задачника,
в которой была реализована поддержка некоторых 64-разрядных сред программирования.
Признаком 64-разрядной библиотеки с заданиями является префикс x в ее названии (например, xPT4TMDemoPas.dll).
64-разрядные библиотеки с новыми группами заданий, как и 32-разрядные, надо размещать
в подкаталоге LIB системного каталога задачника. Следует заметить, что вспомогательные программные модули
задачника PT4Demo и PT4Load используют 32-разрядные варианты библиотек, поэтому желательно сразу создавать
как 32-разрядный, так и 64-разрядный вариант библиотеки. При отсутствии 64-разрядного варианта данная группа заданий
не будет доступна в 64-разрядных средах программирования.
Предварительное тестирование созданной 32-разрядной динамической библиотеки проще всего выполнить с помощью
программного модуля PT4Demo, входящего в состав задачника. Для этого необходимо
определить главное приложение (host application),
которое будет запускаться при запуске проекта.
Для определения главного приложения следует выполнить команду меню «Run | Parameters...»
(в среде Lazarus соответствующая команда имеет имя «Run | Run Parameters...»
или, в русифицированном варианте, «Запуск | Параметры запуска...»),
перейти в появившемся окне на вкладку «Local» или «Локальные»
(если в окне имеется несколько вкладок) или в раздел «Debugger»
(если в левой части окна выводится список разделов)
и указать полный путь к главному приложению в поле «Host Application» или «Главное приложение»
(например, C:\Program Files\PT4\PT4Demo.exe ), а дополнительные параметры главного приложения
(параметры командной строки)
в поле «Parameters» или «Параметры командной строки».
В среде Lazarus необходимо дополнительно очистить все другие поля в окне настройки параметров запуска.
В качестве параметров командной строки следует указать имя тестируемой группы и номер
задания. Если, например, тестируется группа TMDemoPas, то можно указать следующую строку:
-gTMDemoPas -n999 В этом случае при запуске программы
PT4Demo в ней будет выбрана группа TMDemoPas, причем сразу отобразится
окно задачника с последним заданием данной группы
(поскольку в ситуации, когда значение параметра -n
превышает число заданий в группе, параметр полагается равным максимальному
допустимому номеру задания). Более подробно возможности модуля PT4Demo, связанные
с тестированием новых групп, описываются в соответствующем пункте раздела «Примеры».
В случае использования среды Delphi поле «Working Directory» следует оставить пустым;
при этом рабочим каталогом будет считаться тот каталог, который содержит откомпилированную библиотеку с группой заданий.
В случае среды Lazarus рабочий каталог с откомпилированной библиотекой необходимо явно указать
в соответствующем поле окна параметров запуска.
После установки данных настроек запуск проекта в среде Delphi или Lazarus будет автоматически
приводить к запуску программы PT4Demo и отображению в ней окна задачника с одним из заданий тестируемой группы
(в демонстрационном режиме); причем с помощью клавиш [Enter] и [Backspace] или соответствующих кнопок
в окне задачника можно перебирать имеющиеся задания данной группы, а с помощью клавиши пробела или соответствующей кнопки
просматривать различные варианты исходных и контрольных данных для выбранного задания.
Разумеется, для окончательного тестирования каждого задания необходимо попытаться его выполнить
в какой-либо среде. Действия при выполнении заданий из новых групп ничем не отличаются от действий,
требуемых для выполнения заданий из базового набора задачника. В частности, для создания программы-заготовки
можно использовать модуль PT4Load; необходимо лишь, чтобы dll-файл с новой группой располагался либо
в текущем каталоге, либо в подкаталоге Lib системного каталога задачника.
Среда Microsoft Visual Studio для языка C++
При разработке заданий на языке C++ в среде Microsoft Visual Studio .NET следует
начать с создания «пустого» проекта, имя которого должно совпадать
с именем создаваемой библиотеки, например, PT4TMDemoCpp (команда меню «File | New | Project»,
в появившемся окне надо выбрать слева пункт «Visual C++», а справа
пункт «Empty Project»).
В результате будет создан каталог с именем, совпадающим с именем проекта.
В этот каталог следует скопировать файлы конструктора для языка C++ (pt4taskmaker.h и
pt4taskmaker.cpp) а также создать в нем файл для определения новой группы (см. пункт
«Структура проекта с описанием группы заданий»);
в качестве имени этого файла удобно
выбрать имя проекта, например, PT4TMDemoCpp.cpp.
Все три указанных файла надо включить в проект, используя, например, окно
«Solution Explorer» (файл pt4taskmaker.h включается в раздел «Header Files»,
а cpp-файлы в раздел «Source Files»; для включения файла в раздел
проще всего использовать контекстное меню этого раздела, выполнив в этом
меню команду «Add | Existing Item...»).
Кроме добавления к проекту требуемых файлов, необходимо настроить ряд его свойств
в окне свойств проекта, которое вызывается командой меню «Project | <Имя проекта> Properties».
В данном окне в разделе «Configuration Properties | General»
необходимо установить для параметра «Configuration Type» значение «Dynamic Library (.dll)»,
для параметра «Use of MFC» значение «Use MFC in a Static Library»,
а в разделе «Configuration Properties | Debugging» настроить следующие параметры,
упрощающие начальное тестирование создаваемой группы заданий:
- «Command»: полный путь к программе PT4Demo,
например,
C:\Program Files\PT4\PT4Demo.exe
- «Command Arguments»: параметры программы PT4Demo,
обеспечивающие немедленное отображение окна задачника с заданиями создаваемой группы, например,
-gTMDemoCpp -n999
- «Working Directory»: полный путь к подкаталогу Debug каталога
проекта (именно в этом подкаталоге будет сохраняться создаваемый dll-файл), например,
$(ProjectDir)\Debug
После выполнения указанных настроек для компиляции проекта и запуска тестирующей программы PT4Demo
достаточно нажать клавишу [F5].
Завершающую компиляцию разработанной библиотеки с заданиями
следует проводить в режиме Release; это позволит существенно уменьшить размер полученного dll-файла.
Среда Microsoft Visual Studio для языка C#
В качестве заготовки проекта для новой группы заданий на языке C# в среде
Microsoft Visual Studio .NET следует выбрать проект «Class Library»
для языка «Visual C#», указав в качестве его имени имя создаваемой
библиотеки, например, PT4TMDemoCs.
В каталог проекта следует скопировать файл PT4TaskMaker.cs и
включить указанный файл в проект, используя, например, окно
«Solution Explorer» (для включения файла в проект
достаточно щелкнуть правой кнопкой мыши на
имени проекта в окне «Solution Explorer», выбрать в появившемся контекстном меню
команду «Add | Existing Item...» и указать в появившемся диалоговом окне
имя включаемого файла).
Затем надо откорректировать
структуру созданного автоматически файла Class1.cs в соответствии с требованиями, описанными
в пункте «Структура проекта с описанием группы заданий».
Для большей наглядности этот файл можно переименовать, присвоив
ему имя, совпадающее с именем проекта, например, PT4TMDemoCs.cs.
Для настройки параметров тестирования надо выполнить команду меню
«Project | <Имя проекта> Properties», в появившемся окне настроек перейти в раздел
Debug и установить в нем два параметра:
- «Start external program»: полный путь к программе PT4Demo,
например,
C:\Program Files\PT4\PT4Demo.exe
- «Command line arguments»:
параметры программы PT4Demo,
обеспечивающие немедленное отображение окна задачника с заданиями создаваемой группы, например,
-gTMDemoCs -n999
В отличие от настроек для языка C++, параметр «Working directory»
в проекте для языка C# можно оставить пустым.
После выполнения указанных настроек для компиляции проекта и запуска тестирующей программы PT4Demo
достаточно нажать клавишу [F5].
Среда PascalABC.NET для языка Pascal
Для разработки новой группы заданий в среде PascalABC.NET
достаточно подготовить pas-файл с именем, совпадающим с именем
создаваемой библиотеки, и структурой, описанной в
пункте «Структура проекта с описанием группы заданий».
Для данного файла должен быть доступен модуль PT4TaskMakerNET; он может размещаться
в этом же каталоге или в подкаталоге Lib системного каталога среды PascalABC.NET.
При нажатии клавиши [F9] будет создана динамическая библиотека с новой группой заданий.
Поскольку в среде PascalABC.NET (в отличие от Delphi и Lazarus)
не предусмотрены средства для определения главного приложения при разработке библиотек,
для тестирования новой группы заданий необходимо использовать еще одно приложение, заготовку
для которого можно создать с помощью программного модуля PT4Load
уже после первой успешной компиляции динамической библиотеки. Впрочем, заготовка является
настолько простой, что ее можно создать и непосредственно. Например, для тестирования
группы с именем TMDemoAbc достаточно воспользоваться следующей программой:
uses PT4;
begin
Task('TMDemoAbc1?');
end.
При запуске этой программы на экран будет выведено окно задачника для группы
TMDemoAbc в демонстрационном режиме, причем в качестве текущего будет выбрано
первое задание данной группы (демонстрационный режим устанавливается благодаря
символу «?», указанному после имени задания). Для отображения в окне задачника
сразу после запуска программы другого существующего задания этой группы достаточно
указать его номер в параметре процедуры Task. Можно также удалить номер, указав
символ «?» сразу после имени группы заданий: Task('TMDemoAbc?') .
В этом случае при запуске программы будет отображаться последнее задание, входящее в группу.
Конструктор PT4MakerNetX для среды PascalABC.NET
Начиная с версии 4.15 задачника, для системы PascalABC.NET доступен конструктор PT4MakerNetX «надстройка»
над базовым вариантом конструктора PT4TaskMaker, упрощающая создание новых групп заданий.
Конструктор PT4MakerNetX включен в комплекс Teacher Pack for PT4, начиная с версии 3.1 комплекса.
Ниже перечислены его компоненты, содержащиеся в подкаталоге AbcX каталога TASKMAKE:
- PT4MakerNETX.pas (исходный код модуля конструктора PT4MakerNetX),
- PT4NetXDemo.pas (исходный код для демонстрационной группы заданий NetXDemo, подготовленной с использованием
конструктора PT4MakerNetX),
- PT4NetXDemo.dll (библиотека с группой заданий NetXDemo, откомпилированная в среде PascalABC.NET),
- PT4NetXDemo.txt (файл дополнений для группы заданий NetXDemo).
Подробное описание конструктора PT4MakerNetX вместе с примерами его использования приводится в разделе
«Конструктор PT4MakerNetX для PascalABC.NET».
|