Programming Taskbook

 

E-mail:

Пароль:

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

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

©  М. Э. Абрамян, 1998–2011

 

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

PrevNext


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

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

Конструктор учебных заданий PT4TaskMaker позволяет разрабатывать новые группы заданий для электронного задачника Programming Taskbook, начиная с версии 4.8. Каждая группа должна оформляться в виде динамической библиотеки (dll-файла). Dll-файлы с новыми группами могут находиться либо в рабочем каталоге учащегося, либо в подкаталоге Lib системного каталога задачника. Подключение новых групп происходит автоматически при инициализации задания, поэтому вид проекта-заготовки при работе с новыми группами не отличается от стандартного вида проекта, ориентированного на базовые группы заданий. Кроме того, новые группы автоматически добавляются в список доступных групп в программных модулях PT4Demo и PT4Load. Созданные в виде dll-файлов новые группы заданий могут использоваться не только в любых средах программирования, поддерживаемых универсальным вариантом задачника, но и в среде PascalABC.NET; для этого достаточно разместить dll-файл в подкаталоге PT4\Lib системного каталога PascalABC.NET или в рабочем каталоге учащегося.

Поскольку конструктор учебных заданий предназначен, прежде всего, для преподавателей программирования, связанные с ним файлы включены не в базовый дистрибутив задачника Programming Taskbook, а в дистрибутив комплекса Teacher Pack for PT4. При установке данного комплекса в его системном каталоге (по умолчанию это каталог PT4TeacherPack, расположенный в каталоге Program Files) создается подкаталог TASKMAKE, содержащий шесть файлов: PT4TaskMaker.pas, PT4MakerDemo.dpr, PT4MakerDemo.dof, PT4MakerDemo.lpr, PT4MakerDemo.lpi и PT4MakerDemo.dll.

Файл PT4TaskMaker.pas содержит исходный текст модуля PT4TaskMaker, включающего все процедуры и функции конструктора учебных заданий. Данный модуль можно использовать как в среде Borland Delphi, начиная с версии 4.0, так и в среде Free Pascal Lazarus.

Файлы PT4MakerDemo.dpr и PT4MakerDemo.dof представляют собой компоненты Delphi-проекта для создании dll-библиотеки с демонстрационной группой заданий MakerDemo; dpr-файл содержит исходный текст библиотеки, а dof-файл — настройки проекта, определяющие, в частности, главное приложение (host application) для тестирования библиотеки.

Файлы PT4MakerDemo.lpr и PT4MakerDemo.lpi представляют собой компоненты проекта для среды Lazarus, предназначенного для создании dll-библиотеки с той же самой демонстрационной группой заданий MakerDemo; lpr-файл содержит исходный текст библиотеки, а lpi-файл — настройки проекта.

Файл PT4MakerDemo.dll получен в результате компиляции Delphi-проекта PT4MakerDemo в среде Turbo Delphi 2006.

Тексты dpr- и lpr-файлов практически совпадают; различаются лишь директивы компилятора, указанные в начале этих файлов, кроме того, раздел exports lpr-файла, в отличие от аналогичного раздела dpr-файла, содержит имя функции activate. Процесс разработки данной демонстрационной группы заданий описан в разделе «Примеры».

Подробное описание возможностей конструктора учебных заданий включено в гипертекстовую справочную систему Teacher Pack Info. Данную систему можно вызвать непосредственно из меню комплекса Teacher Pack (расположенного в группе «Программы» Главного меню Windows), выполнив команду «Teacher Pack Info».

Еще один вариант конструктора PT4TaskMaker включен в систему PascalABC.NET. Этот вариант, в отличие от варианта из комплекса Teacher Pack, позволяет создавать группы заданий в виде модулей системы PascalABC.NET (pcu-файлов), которые доступны для использования только в среде PascalABC.NET.

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

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

Обзор элементов модуля PT4TaskMaker

Модуль PT4TaskMaker реализован для языка Pascal (среды Borland Delphi и Free Pascal Lazarus; вариант модуля реализован также для языка PascalABC.NET) и содержит следующие элементы:

  • процедурный тип TInitTaskProc; в модуле с группой заданий должна быть определена основная процедура группы типа TInitTaskProc, позволяющая генерировать задание с требуемым номером;
  • процедура CreateGroup, определяющая общие характеристики группы заданий;
  • процедуры и константы, используемые для создания нового задания и добавления в него формулировки, а также исходных и контрольных данных базовых типов boolean, integer, real, char, string; обычно каждое задание оформляется в виде отдельной процедуры, которая вызывается из основной процедуры группы;
  • процедура UseTask, позволяющая импортировать в создаваемую группу задания из других групп; эта процедура обычно вызывается в основной процедуре группы;
  • процедуры, обеспечивающие добавление комментариев, оформляемых в виде преамбулы к группе и ее подгруппам;
  • процедура RegisterGroup, обеспечивающая регистрацию группы, реализованной в виде pcu-модуля системы PascalABC.NET;
  • функции и константы, позволяющие определить текущее состояние задачника (используемый язык программирования, текущую локаль — русскую или английскую — и текущую версию задачника);
  • функции, предоставляющие разработчику заданий образцы слов, предложений и многострочных текстов;
  • процедуры, позволяющие включать в задание файловые данные;
  • процедуры, позволяющие включать в задание указатели и динамические структуры данных — линейные списки и деревья;
  • процедуры для разработки заданий по параллельному MPI-программированию.

Библиотечные и сводные группы

При разработке новых заданий целесообразно объединять их в группы с именами, содержащими, кроме названия темы, дополнительные сведения, например, версию созданной группы и данные об авторе. Однако допустимые имена групп могут содержать не более 9 символов, что является недостаточным для указания дополнительных сведений. С другой стороны, группы, содержащие только новые задания (библиотечные группы), вряд ли будут использоваться непосредственно в учебном процессе; более целесообразной будет компоновка этих новых заданий с заданиями из соответствующей базовой группы задачника (и, возможно, с заданиями из других библиотечных групп).

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

Библиотечные группы не предназначены для непосредственного использования в учебном процессе. Задания из этих групп можно запускать с помощью процедуры Task, однако они будут отображаться только в демонстрационном режиме (точнее, в режиме «просмотра библиотеки заданий», о чем будет свидетельствовать соответствующий текст, указываемый в окне задачника вместо сведений об учащемся). Библиотечные группы не включаются в список групп, отображаемый в модуле PT4Load. Если библиотечная группа реализована в виде dll-библиотеки, то она доступна для просмотра с помощью модуля PT4Demo (в этом модуле библиотечные группы указываются в конце списка доступных групп).

Для применения на занятиях удобно использовать сводные группы, не содержащие реализации новых заданий, а лишь импортирующие наборы заданий из базовых и дополнительных библиотечных групп и компонующие их в порядке, который требуется преподавателю. При импортировании задания из другой группы у него изменяется название и ключ (которые берутся из характеристик сводной группы), однако сохраняются такие характеристики импортируемой группы, как заголовки подгрупп и сведения об авторе. Имена сводных групп должны содержать не более 9 символов. Для разработки сводных групп можно использовать упрощенный механизм, не требующий написания программного кода: достаточно подготовить текстовый файл, в котором в специальном формате будут содержаться все данные, необходимые для создания сводной группы, а затем обработать этот файл в программе «Конструктор вариантов», входящей в комплекс Teacher Pack.

Структура проекта с описанием группы заданий

В данном разделе описываются правила, которым должен удовлетворять проект (dll-библиотека или pcu-модуль), содержащий описание новой группы заданий (см. также раздел «Примеры»).

Каждый проект, реализуемый в виде dll-библиотеки, должен содержать определение единственной группы заданий. Имя библиотеки с группой заданий должно иметь вид PT4<имя группы><маркер локали>, где <маркер локали> является либо пустой строкой, либо имеет вид _ru или _en. Например, группа MakerDemo может быть реализована в виде библиотек PT4MakerDemo.dll, PT4MakerDemo_ru.dll и PT4MakerDemo_en.dll. Библиотеки с явно указанным маркером локали используются только в варианте задачника, соответствующем данной локали (ru — в русском варианте задачника, en — в английском). Библиотеки, в которых не указан маркер локали, используются в любом варианте задачника (если они не перекрываются библиотекой с явно указанной локалью). Порядок поиска библиотек для требуемой группы следующий: вначале просматривается рабочий каталог учащегося и в нем ищется библиотека с данным именем и явно указанной локалью; если она не найдена, то ищется библиотека с данным именем без маркера локали; если она не найдена, то поиск библиотек (в этом же порядке) выполняется в каталоге Lib системного каталога задачника.

При разработке проекта в виде pcu-модуля системы PascalABC.NET перечисленные выше требования не являются обязательными: pcu-модулю можно присваивать произвольное имя, и в одном pcu-модуле можно определять несколько групп заданий. Однако следование этим требованиям делает созданные модули более удобными для использования, поскольку позволяет по их именам определять имена реализованных в них групп.

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

library PT4MakerDemo;

uses PT4TaskMaker;

//процедуры, реализующие конкретные задания

...

procedure InitTask(num: integer); stdcall;
begin
  // в данной процедуре выполняются вызовы вспомогательных процедур,
  // реализующих все задания группы; номер задания определяется
  // параметром num; для определения процедуры, соответствующей
  // требуемому номеру, обычно используется оператор case

  ...

end;

procedure inittaskgroup;
begin
  // процедура inittaskgroup должна быть оформлена как экспортируемая
  // процедура данной библиотеки; в ней выполняется вызов стартовой
  // процедуры CreateGroup и могут вызываться процедуры, связанные
  // с добавлением комментариев (преамбул) для группы и ее подгрупп

  CreateGroup('MakerDemo', 'Примеры различных задач',
    'М. Э. Абрамян, 2009', 'qwqfsdf13dfttd', 8, InitTask);

  ...

end;

exports inittaskgroup, activate;

begin
end.

В проектах, реализуемых в среде Delphi, в разделе exports можно не указывать процедуру activate.

Структура проекта, реализованного в виде pcu-модуля системы PascalABC.NET, имеет некоторые отличия:

unit PT4MakerDemo;

uses PT4TaskMaker;

//процедуры, реализующие конкретные задания

...

procedure InitTask(num: integer);
begin

  ...

end;

procedure inittaskgroup;
begin
  CreateGroup('MakerDemo', 'Примеры различных задач',
    'М. Э. Абрамян, 2009', 'qwqfsdf13dfttd', 8, InitTask);

  ...

  RegisterGroup('PT4MakerDemo');
end;

begin
  inittaskgroup;
end.

Обратите внимание на отсутствие модификатора stdcall после заголовка процедуры InitTask, на вызов процедуры RegisterGroup в конце процедуры inittaskgroup, а также на то обстоятельство, что вместо экспортирования процедуры inittaskgroup выполняется ее вызов в секции инициализации модуля.

В группы, реализованные в виде dll-библиотек, нельзя импортировать задания и тексты преамбул из групп, реализованных в виде pcu-модулей. В группы, реализованные в виде pcu-модулей, можно импортировать задания и тексты преамбул как групп, реализованных в виде pcu-модулей, так и групп, реализованных в виде dll-библиотек. Однако при импортировании данных из других pcu-модулей необходимо указать имена этих модулей в списке uses.

При определении новой группы заданий можно учитывать текущий язык программирования, установленный для задачника, и в зависимости от этого языка по-разному инициализировать некоторые задания группы. Эта возможность является особенно полезной при реализации заданий, связанных с обработкой динамических структур данных, поскольку в языке Visual Basic подобные задания должны быть недоступны, а в языках Pascal и C++ они должны оформляться по-другому, нежели в языках VB.NET и C#. См. также пункт, посвященный динамическим структурам данных, в разделе «Примеры».

Разрабатываемые группы заданий желательно снабжать дополнительными комментариями. Эти комментарии не отображаются в окне задачника, однако включаются в html-описание группы в виде преамбулы группы (html-описание группы можно создать, либо вызвав в программе процедуру Task с параметром вида '<имя группы>#', например, 'MakerDemo#', либо воспользовавшись кнопкой в окне программного модуля PT4Demo). Кроме того, большие группы заданий целесообразно разделять на несколько подгрупп, в каждую из которых также можно добавлять комментарии (преамбулы подгрупп). В преамбулах, как и в формулировках заданий, можно использовать специальные управляющие последовательности, которые позволяют отформатировать текст требуемым образом (в частности, обеспечивают выделение переменных, позволяют использовать в тексте верхние и нижние индексы, специальные символы и т. д.). Форматирование используется и при отображении формулировки задания в окне задачника, и при генерации html-страницы с описанием группы заданий. См. также пункт, посвященный добавлению комментариев, в разделе «Примеры».


PrevNext

 

Рейтинг@Mail.ru

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

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