Programming Taskbook


E-mail:

Пароль:

Регистрация пользователя   Восстановление пароля

 

ЮФУ

Электронный задачник по программированию

©  М. Э. Абрамян (Южный федеральный университет), 1998–2022

 

Teacher Pack | Конструктор учебных заданий | Общее описание

PrevNext


Общее описание

Назначение и состав конструктора учебных заданий

Конструктор учебных заданий PT4TaskMaker позволяет разрабатывать новые группы заданий для электронного задачника Programming Taskbook, начиная с версии 4.8.

В связи с разработкой комплекса Programming Taskbook for MPI, являющегося дополнением к универсальному варианту задачника Programming Taskbook версии 4.9, в конструктор учебных заданий для задачника Programming Taskbook 4.9 были добавлены новые средства, предназначенные для создания групп учебных заданий по параллельному программированию.

Начиная с версии 4.10, конструктор учебных заданий можно использовать для разработки дополнительных групп заданий, связанных с ЕГЭ по информатике и ИКТ.

Конструктор версий 4.8–4.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 следует внести в приведенный выше пример следующие изменения:

  • в директиве uses заменить имя PT4TaskMaker на PT4TaskMakerNET;
  • в заголовке процедуры InitTask убрать модификатор stdcall вместе со следующей за ним точкой с запятой;
  • вместо раздела exports описать дополнительную функцию activate (все буквы в имени должны быть строчными):
    procedure activate(S: string);
    begin
      ActivateNET(S);
    end;
    

Проекты, реализующие новые группы на языках 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».


PrevNext

 

Рейтинг@Mail.ru

Разработка сайта:
М. Э. Абрамян, В. Н. Брагилевский

Последнее обновление:
19.04.2022