hf5
õ
hf6
ö
hf7
÷
hf8
ø
hf9
ù
hfa
ú
hfb
û
hfc
ü
hfd
ý
hfe
þ
hff
ÿ
Таблица 2. Символы, генерируемые командой H
H22
"
H24
$
H27
'
H2d
−
H40
@
H44
Δ
H46
Φ
H47
Γ
H4c
Λ
H50
Θ
H51
Θ
H53
Σ
H56
ς
H57
Ω
H58
Ξ
H59
Ψ
H5c
H5e
^
H61
α
H62
β
H63
χ
H64
δ
H65
ε
H66
f
H67
γ
H68
η
H69
ι
H6a
φ
H6b
κ
H6c
λ
H6d
μ
H6e
ν
H70
π
H71
θ
H72
ρ
H73
σ
H74
τ
H75
υ
H76
v
H77
ω
H78
ξ
H79
ψ
H7a
ζ
Ha1
¡
Ha2
′
Ha3
≤
Ha5
∞
Ha7
♣
Ha8
♦
Ha9
♥
Haa
♠
Hab
↔
Hac
←
Had
↑
Hae
→
Haf
↓
Hb2
″
Hb3
≥
Hb5
µ
Hb6
∂
Hb9
≠
Hba
≡
Hbb
≈
Hbd
│
Hbe
─
Hbf
¿
Hc0
א
Hc1
Á
Hc2
Â
Hc3
Ã
Hc4
Ä
Hc5
Å
Hc6
Æ
Hc7
Ç
Hc8
È
Hc9
É
Hca
Ê
Hcb
Ë
Hcc
Ì
Hcd
Í
Hce
Î
Hcf
Ï
Hd0
Ð
Hd1
Ñ
Hd5
∏
Hd6
√
Hd9
Ù
Hda
Ú
Hdb
Û
Hdc
Ü
Hdd
Ý
Hde
Þ
Hdf
ß
He0
◊
He1
‹
He5
∑
Hf1
›
Hf2
∫
Модуль PT4TaskMakerNET: примеры разработки учебных заданий
Создание простейшей сводной группы
Вначале опишем действия по созданию наиболее простого варианта группы заданий -- сводной группы, в которой не разрабатываются новые задания, а лишь производится перекомпоновка заданий из имеющихся групп.
Создадим группу заданий MakerDemo, в которую импортируем два первых задания из базовой группы Begin. Следуя правилам об именовании dll-файлов с группами заданий, дадим нашей библиотеке имя PT4MakerDemo.
Файл PT4MakerDemo.pas, содержащий сводную группу заданий, является кратким и имеет стандартную структуру:
library PT4MakerDemo;
uses PT4TaskMakerNET;
procedure InitTask(num: integer);
begin
case num of
1..2: UseTask('Begin', num);
end;
end;
procedure inittaskgroup;
begin
CreateGroup('MakerDemo', 'Примеры различных задач',
'М. Э. Абрамян, 2013', 'qwqfsdf13dfttd', 2, InitTask);
end;
procedure activate(S: string);
begin
ActivateNET(S);
end;
begin
end.
К библиотеке подключается модуль PT4TaskMakerNET, после чего в ней описывается основная процедура группы заданий InitTask, определяющая задание по его номеру. Поскольку мы не создавали своих заданий, в данной процедуре используется только стандартная процедура UseTask, позволяющая импортировать задания из имеющихся групп. В нашем случае импортируются задания с номерами 1 и 2 из группы Begin.
Затем описывается процедура инициализации данной группы заданий. Она должна иметь стандартное имя inittaskgroup (набранное строчными, т. е. маленькими буквами). В этой процедуре вызывается процедура CreateGroup, в которой задаются настройки создаваемой группы: имя ('MakerDemo'), описание ('Примеры различных задач'), сведения об авторе, строковый ключ, число заданий (2) и основная процедура группы (InitTask).
После процедуры inittaskgroup описывается вспомогательная процедура activate (ее имя также должно быть набрано строчными буквами), в которой необходимо вызвать процедуру ActivateNET, описанную в модуле PT4TaskMakerNET.
Тестирование созданной группы
Для успешной компиляции программы с созданной группой необходимо, чтобы ей был доступен модуль PT4TaskMakerNET. Этот модуль входит в число стандартных модулей библиотеки системы PascalABC.NET и размещается в подкаталоге LIB системного каталога PascalABC.NET, поэтому копировать его в рабочий каталог не требуется. Однако даже при успешной компиляции программы просмотреть задания группы не удастся, так как созданную библиотеку (dll-файл) нельзя запускать на выполнение (при успешной компиляции будет выведено сообщение Невозможно запустить динамическую библиотеку".
Для тестирования полученной библиотеки необходимо создать вспомогательную программу, являющуюся заготовкой для выполнения заданий из созданной группы. Так как после успешной компиляции библиотеки в рабочем каталоге уже содержится файл PT4MakerDemo.dll, для создания программы-заготовки можно использовать программный модуль PT4Load. Вызвав его окно на экран (для этого достаточно использовать клавиатурную комбинацию [Shift]+[Ctrl]+[L]) и удалив, при необходимости, имя ранее введенного задания, мы должны увидеть в списке доступных групп заданий созданную нами группу MakerDemo. Если имя группы MakerDemo не отображается, значит, задачник не смог успешно загрузить эту группу из библиотеки PT4MakerDemo.dll. В этом случае необходимо проверить имя созданной библиотеки (в частности, наличие в нем префикса PT4) и наличие в файле библиотеки процедур inittaskgroup и activate, определенных по описанным выше правилам.
Если имя группы появилось в списке, то надо ввести в поле Задание" имя "MakerDemo1" и нажать клавишу [Enter] (или кнопку "Загрузка"); в результате будет создан файл MakerDemo1.pas, который сразу загрузится в редактор среды PascalABC.NET. Приведем содержимое этого файла:
uses PT4;
begin
Task('MakerDemo1');
end.
Поскольку мы собираемся просматривать задания группы в демо-режиме, добавим в конец строки с именем задания символ ?":
Task('MakerDemo1?');
После компиляции и запуска полученной программы на экране отобразится окно задачника с указанным заданием данной группы:
По умолчанию окно задачника отображается в режиме с динамической компоновкой, который появился в версии 4.11 и является более наглядным, чем режим с фиксированной компоновкой. Однако при разработке заданий желательно применять режим с фиксированной компоновкой, поскольку он позволит выявить недостатки форматирования (в частности, вертикального выравнивания данных), присущие только этому режиму. Для переключения между режимами отображения данных достаточно нажать клавишу [F4]. После выполнения этого действия окно задачника изменится следующим образом:
В окне задачника можно просматривать все имеющиеся задания данной группы (нажимая клавиши [Enter] и [Backspace], а также генерировать различные варианты исходных данных и связанных с ними контрольных (т. е. правильных") результатов. При закрытии окна программа немедленно завершит работу, и мы вернемся в редактор среды PascalABC.NET. Заметим, что при последующих запусках программы будет автоматически выбираться тот режим окна задачника, в котором оно находилось в момент его предшествующего закрытия.
Примечание. После добавления в группу нового задания было бы желательно, чтобы при звпуске тестирующей программы на экране сразу отображались данные, связанные с последним добавленным заданием. Чтобы не приходилось каждый раз изменять номер задания в процедуре Task, можно удалить этот номер, указав символ ?" сразу после имени группы: Task('MakerDemo?'). В этом случае при запуске программы на экране будет отображаться последнее задание данной группы.