Конструктор учебных заданий для электронного задачника Programming Taskbook - 58 стр.

UptoLike

Составители: 

58
'(с помощью поля Next),', 0, 4);
TaskText('но и с предыдущим (с помощью поля Prev). Поле Prev ' +
'первого элемента положить', 0, 5);
TaskText('равным~\N. Вывести указатель на последний элемент ' +
'преобразованной цепочки.', 0, 0);
MakerDemo8Data;
end;
procedure MakerDemo8Net;
begin
CreateTask('Динамические структуры данных: двусвязный список');
TaskText('Дана ссылка~{A}_1 на начало непустой цепочки ' +
'элементов-объектов типа Node,', 0, 1);
TaskText('связанных между собой с помощью своих свойств Next. ' +
'Используя свойства Prev', 0, 2);
TaskText('данных объектов, преобразовать исходную ' +
'(\Iодносвязную\i) цепочку в \Iдвусвязную\i,', 0, 3);
TaskText('в которой каждый элемент связан не только ' +
'с последующим элементом (с помощью', 0, 4);
TaskText('свойства Next), но и с предыдущим (с помощью ' +
'свойства Prev). Свойство Prev', 0, 5);
TaskText('первого элемента положить равным~\O. Вывести ' +
'ссылку~{A}_2 на последний', 0, 0);
TaskText('элемент преобразованной цепочки.', 0, 0);
SetObjectStyle;
MakerDemo8Data;
end;
Анализируя приведенные варианты процедур, легко заметить, что они отлича-
ются лишь деталями формулировки задания. Алгоритмы генерации исходных и кон-
трольных данных для традиционного и объектного вариантов совпадают, поэтому
они выделены в отдельную вспомогательную процедуру MakerDemo8Data. В то же
время представления динамических структур и связанных с ними указателей или
объектов будут отличаться (см. рисунки, приведенные ниже). Необходимые коррек-
тировки в представлении динамических структур выполняются задачником автома-
тически, с учетом используемого языка программирования.
Однако для языка PascalABC.NET требуемую настройку необходимо выполнить
явно, так как в нем можно использовать оба варианта представления динамических
структур: традиционный (как для обычного Паскаля в системах Delphi и Free Pascal
Lazarus) и объектный (как в языках C# и Visual Basic .NET). Для того чтобы представ-
ление динамических данных при выполнении задания в среде PascalABC.NET соот-
ветствовало объектному варианту, следует в начале процедуры, реализующей задание
(перед вызовом любых процедур, связанных с указателями и динамическими струк-
турами), вызвать специальную процедуру без параметров SetObjectStyle. Для осталь-
ных языков данная процедура не выполняет никаких действий.
Обратите внимание на возможность использования в формулировке задания бо-
лее 5 экранных строк. Строки, которые не умещаются в области формулировки зада-
ния, следует добавлять к заданию процедурой TaskText, указывая в качестве послед-
него параметра процедуры число 0. При наличии подобных строк в окне задачника
слева от области формулировки появятся кнопки, обеспечивающие прокрутку форму-
лировки задания (кроме этих кнопок можно также использовать стандартные клави-
ши, в частности, клавиши со стрелками).