Шрифт:
Интервал:
Закладка:
var
n: integer;
begin
n := 7;
if CurrentLanguage = lgPascalABCNET then
n := 9
else
if CurrentLanguage and (lgWithPointers or lgWithObjects) <> 0 then
n := 8;
CreateGroup('MakerDemo', 'Примеры различных задач',
'М. Э. Абрамян, 2013', 'qwqfsdf13dfttd', n, InitTask);
Приведенный набор условий будет правильно определять количество заданий и в случае, если состав языков, поддерживаемых задачником, будет расширен. Это обеспечивается тем, что в условиях используются не константы для конкретных языков (за исключением константы lgPascalABCNET), а битовые маски lgWithPointers и lgWithObjects. Первая из этих масок включает все языки, для которых в задачнике можно использовать варианты заданий на динамические структуры, основанные на указателях, а вторая -- все языки, позволяющие использовать варианты аналогичных заданий в объектной терминологии.
В среде PascalABC.NET можно протестировать оба варианта реализованного задания. Приведем вид окна задачника для этого задания (первый рисунок соответствует варианту задания, использующему указатели, второй -- варианту, использующему объекты). Обратите внимание на кнопки, расположенные справа от формулировки задания и обеспечивающие ее прокрутку.
Завершая оформление модуля PT4MakerDemo, добавим комментарии к новым подгруппам заданий (указанные операторы следует поместить в конец процедуры inittaskgroup):
Subgroup('Двумерные массивы (матрицы): вывод элементов');
CommentText('Данное задание дублирует задание Matrix7.');
Subgroup('Символьные и строковые файлы');
CommentText('Данное задание дублирует задание File63.');
CommentText('Оно демонстрирует особенности, связанные с двоичными');
CommentText('Iстроковымиi файлами.');
Subgroup('Текстовые файлы: основные операции');
CommentText('Данное задание дублирует задание Text16.');
Subgroup('Динамические структуры данных: двусвязный список');
CommentText('Данное задание дублирует задание Dynamic30.');
CommentText('PЗадание реализовано в двух вариантах: основанном на использовании указателей');
CommentText('(для языков Pascal и C++) и основанном на использовании объектов (для языков платформы .NET,');
CommentText('а также Python и Java). Для языка Visual Basic это задание недоступно.');
CommentText('В системе PascalABC.NET доступны оба варианта задания.');
Приведем заключительную часть html-страницы с описанием данной группы:
Модуль PT4TaskMakerNET: разработка заданий, связанных с ЕГЭ по информатике
Группы заданий Exam и их особенностиНачиная с версии 4.10, в базовый набор задачника Programming Taskbook для языков Pascal и C++ входят специальные группы заданий, связанные с ЕГЭ по информатике: ExamBegin и ExamTaskC. Порядок выполнения заданий из этих групп имеет ряд особенностей, основной из которых является отказ от применения специальных средств ввода-вывода, входящих в состав задачника. В заданиях групп Exam для ввода-вывода надо применять стандартные средства используемого языка программирования. Это позволяет максимально приблизить вид программы, выполняющей задание, к виду, требуемому на экзамене, а также учесть при выполнении задания его дополнительные особенности, связанные с организацией ввода исходных данных и форматированием результатов.
С использованием конструктора учебных заданий PT4TaskMaker преподаватель может разрабатывать новые группы заданий, связанные с ЕГЭ по информатике. При этом необходимо следовать дополнительным правилам, основные из которых приводятся ниже.
Любые группы заданий, связанные с ЕГЭ по информатике, должны иметь имена, начинающиеся с префикса Exam (для групп с этим префиксом задачник генерирует специальные программы-заготовки, позволяющие использовать при выполнении задания стандартные средства ввода-вывода). Необходимо проверять номер текущей версии задачника и текущий язык программирования, создавая новую группу тольков случае, если версия имеет номер не ниже 4.10, а языком программирования является Pascal или C++. В преамбуле к группе заданий желательно отметить тот факт, что для ввода-вывода необходимо использовать стандартные средства языка. В новые группы Exam следует импортировать только те задания, которые также относятся к группам Exam. Набор исходных и контрольных данных надо сохранять в текстовых файлах, передавая задачнику информацию об именах этих файлов (процедурами DataS) и связывая содержимое этих файлов с разделами исходных и результирующих данных (процедурами DataFileT и ResultFileT соответственно). При любых вариантах наборов исходных данных соответствующие контрольные файлы не должны быть пустыми (при наличии пустого файла результатов задачник считает запуск программы ознакомительным). Проиллюстрируем эти правила, разработав в среде PascalABC.NET демонстрационную группу заданий ExamDemo. Задания, связанные с ЕГЭ, вполне допустимо разрабатывать и на других языках, поддерживаемых конструктором учебных заданий, в частности, на языке C++ или на языке Pascal в средах Delphi или Lazarus, причем полученные реализации не будут иметь никаких существенных отличий от реализации, приведенной ниже. Задания можно разрабатывать даже на языке C#, несмотря на то что выполнять их на этом языке будет нельзя.
Реализация сводной группы заданийНапомним, что сводной группой называется группа, все задания которой импортированы из уже имеющихся групп. Сводные группы оказываются очень полезными при составлении вариантов проверочных работ, поскольку позволяют дать заданиям новые имена и тем самым затрудняют применение разного рода шпаргалок.
Так как в сводных группах отсутствуют новые задания, при разработке сводных групп для заданий, связанных с ЕГЭ по информатике, достаточно учесть правила 1-4, приведенные в предыдущем пункте.
Будем предполагать, что общие правила разработки новых групп заданий в среде PascalABC.NET читателю известны (см. раздел Примеры").
Следуя правилам именования групп (имя должно состоять из латинских букв и цифр, иметь длину не более 9 символов и не оканчиваться цифрой), а также правилу 1 из предыдущего пункта (наличие префикса Exam), назовем нашу группу ExamDemo. Динамическая библиотека в этом случае должна иметь имя PT4ExamDemo.
Импортируем в группу ExamDemo несколько заданий из обеих групп Exam, входящих в базовый набор. Из группы ExamBegin возьмем задания ExamBegin71 и ExamBegin72, входящие в подгруппу "Преобразование массивов" и связанные перестановкой элементов массива. Из группы ExamTaskC возьмем серию из 12 заданий ExamTaskC25-ExamTaskC36, объединенных общей предметной областью: сведениями об абитуриентах из различных школ.
Учитывая правила подготовки динамических библиотек с группами учебных заданий, а также правила 2 и 3 из предыдущего пункта, получим следующий вариант нашей библиотеки (файл PT4ExamDemo.pas):
library PT4ExamDemo;
uses PT4TaskMakerNET;
procedure InitTask(num: integer);
begin
case num of
1..2: UseTask('ExamBegin', 70 + num);
3..14: UseTask('ExamTaskC', 22 + num);
end;
end;
procedure inittaskgroup;
begin
if (CurrentVersion < '4.10') or
(CurrentLanguage and (lgPascal or lgCPP) = 0) then
exit;
CreateGroup('ExamDemo', '^ЕГЭ по информатике: примеры различных задач',
'М. Э. Абрамян, 2013', 'qdfedsag33gbg45j', 14, InitTask);
CommentText('PПри выполнении заданий данной группы вместо');
CommentText('специальных операций ввода-вывода, предоставляемых');
CommentText('задачником, необходимо применять стандартные операции');
CommentText('используемого языка программирования: процедуры');
CommentText('MReadm/MReadlnm:MWritem/MWritelnm для языка');
CommentText('Pascal, потоки Mcinm:Mcoutm для языка C++.');
end;
procedure activate(S: string);
begin
ActivateNET(S);
end;
begin
end.
Кратко опишем полученную программу. Вначале к ней подключается модуль PT4TaskMakerNET, в котором реализован конструктор учебных заданий для среды PascalABC.NET. Затем следует описание основной процедуры группы заданий InitTask, определяющей задание по его номеру. Поскольку мы не создавали своих заданий, в данной процедуре используется только стандартная процедура UseTask, позволяющая импортировать задания из имеющихся групп. В нашем случае импортируются задания с номерами 71 и 72 из группы ExamBegin и задания с номерами 25-36 из группы ExamTaskC (всего 14 заданий).
Затем описывается процедура инициализации данной группы заданий. Она имеет стандартное имя inittaskgroup (набранное строчными, т. е. маленькими буквами). В этой процедуре вызывается процедура CreateGroup, в которой задаются характеристики создаваемой группы: имя ('ExamDemo'), описание ('^ЕГЭ по информатике: примеры различных задач'), сведения об авторе, строковый ключ, число заданий (14) и основная процедура группы (InitTask).
- Математические диктанты. Числовые примеры. Все типы задач. Устный счет. 1-2 классы - Елена Нефедова - Детская образовательная литература
- ФСБ. Машина смерти. Чекист остается чекистом. (СИ) - Сокольников Борис - Детская образовательная литература
- Новейшие сочинения. Все темы 2011: 5-9 классы - Людмила Бойко - Детская образовательная литература