Programming Taskbook


E-mail:

Пароль:

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

 

ЮФУ SMBU

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

©  М. Э. Абрамян (Южный федеральный университет, Университет МГУ-ППИ в Шэньчжэне), 1998–2025

 

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; начиная с версии 4.22 можно также использовать кодировку UTF-8). Наличие файла дополнения позволяет отображать дополнительные сведения о задании в окне задачника (а именно в разделе отладки) и в html-документе с описанием данной группы заданий (при этом дополнительные сведения в html-документе можно добавлять также к преамбулам группы и ее подгрупп). Кроме того, с помощью файла дополнений можно подготовить специальные варианты программ-заготовок для некоторых (или всех) заданий группы, если требуется, чтобы заготовки для этих заданий отличались от стандартных заготовок, генерируемых программным модулем PT4Load по умолчанию. Таким образом, возможности, предоставляемые файлами дополнений, существенно расширяют возможности по дополнительному описанию групп заданий, входящие в конструктор учебных заданий. Описание формата файлов дополнений и примеры их использования приводятся в разделе «Использование файлов дополнений».

В версии 4.15 набор конструкторов дополнен конструктором PT4MakerNetX — упрощенным вариантом конструктора для языка PascalABC.NET.

В версии 4.25 набор конструкторов дополнен конструктором PT4TaskMakerX — упрощенным вариантом конструктора для языка С++.

Обзор элементов конструктора учебных заданий

Конструктор учебных заданий представляет собой набор констант, функций и процедур, предназначенных для определения каждого из входящих в группу заданий, а также для настройки свойств группы в целом. В конструкторах для языков 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 системного каталога задачника.

Начиная с версии 4.20, поиск динамических библиотек с заданиями выполняется по расширенному алгоритму, который анализирует не только рабочий каталог и каталог Lib, но и специальный move-каталог (определяемый в файле loaddat.txt), а также рабочий каталог по умолчанию C:\PT4Work. Порядок анализа каталогов следующий: рабочий каталог, move-каталог, каталог C:\PT4Work, подкаталог 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».

Конструктор PT4TaskMakerX для языка С++ и среды Visual Studio Code

Начиная с версии 4.25 задачника, для языка C++ доступен конструктор PT4TaskMakerX — «надстройка» над базовым вариантом конструктора PT4TaskMaker, упрощающая создание новых групп заданий.

Этот конструктор содержит более простые варианты функций, обеспечивающих реализацию всех возможностей базового конструктора (кроме определения указателей и динамических структур данных и определения дополнительного описания группы заданий), а также включает специальную программу PTGroupCreator, которая упрощает создание заготовок для новых групп заданий. Конструктор PT4TaskMakerX ориентирован на совместное использование с компилятором MinGW, входящим в состав среды Dev-C++ 6.30, и редактором Visual Studio Code. Еще одной особенностью данного конструктора является максимально упрощенный механизм создания двух вариантов динамических библиотек — для 32- и 64-разрядных систем программирования.

Конструктор PT4TaskMakerX включен в комплекс Teacher Pack for PT4, начиная с версии 3.4 комплекса. Все его компоненты, включая программу PTGroupCreator, содержатся в каталоге CREATOR.

Подробное описание конструктора PT4TaskMakerX приводится в разделе «Конструктор PT4TaskMakerX для C++», а описание программы PTGroupCreator — в разделе «Программа PTGroupCreator».


PrevNext

 

Рейтинг@Mail.ru

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

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