В отличие от процедур группы Get, в качестве параметра процедур группы Put можно указывать не только переменные, но и
Как и в случае процедур группы Get, при вызовах процедур группы Put программа осуществляет контроль за соответствием количества требуемых и выведенных результирующих данных. Если программа выведет недостаточное или избыточное количество результирующих данных, то после проверки этих данных появится сообщение «
P: PNode);
Данная процедура переопределяет стандартную процедуру Dispose для того, чтобы контролировать действия учащегося по освобождению памяти при выполнении заданий групп Dynamic и Tree.
В варианте задачника Programming Taskbook, включенном в систему PascalABC.NET, предусмотрен альтернативный способ организации ввода-вывода, характерный не для традиционного Паскаля, а для языков платформы .NET. Наличие двух способов ввода-вывода обусловлено тем обстоятельством, что система PascalABC.NET позволяет разрабатывать программы как в стиле, характерном для традиционного Паскаля, так и в .NET-стиле, ориентированном на использование стандартных средств платформы .NET, в том числе ее библиотеки классов.
Кроме новых средств ввода-вывода в варианте задачника для системы PascalABC.NET предусмотрен класс Node, который следует использовать вместо типов PNode и TNode при выполнении заданий на динамические структуры в объектном стиле". Заметим, что в этом случае необходимо пользоваться группами ObjDyn и ObjTree, в которых (в отличие от групп Dynamic и Tree) применяется "объектная" терминология, ориентированная на применение классов платформы .NET.
type
Node = class(IDisposable)
. . .
public
//
constructor Create;
constructor Create(aData: integer);
constructor Create(aData: integer; aNext: Node);
constructor Create(aData: integer; aNext, aPrev: Node);
constructor Create(aLeft, aRight: Node; aData: integer);
constructor Create(aLeft, aRight: Node; aData: integer; aParent: Node);
//
property Data: integer;
property Next: Node;
property Prev: Node;
property Left: Node;
property Right: Node;
property Parent: Node;
//
procedure Dispose;
;
Класс Node используется в заданиях групп ObjDyn и ObjTree. В заданиях на стеки и очереди (ObjDyn1-ObjDyn28) при работе с объектами типа Node используются только свойства Data и Next; в заданиях на двусвязные списки (ObjDyn29-ObjDyn80) используются свойства Data, Next и Prev. В большинстве заданий на бинарные деревья (группа ObjTree) используются свойства Data, Left и Right; в заданиях на обработку бинарных деревьев с обратной связью (ObjTree48-ObjTree56 и ObjTree70-ObjTree71) дополнительно используется свойство Parent.
Варианты конструктора класса Node позволяют задавать значения требуемых свойств при создании объекта; прочие свойства инициализируются нулевыми значениями (числом 0 для свойства Data, нулевой ссылкой nil для остальных свойств).
Следует обратить внимание на то, что данный класс реализует интерфейс IDisposable, поэтому при завершении работы с объектом типа Node требуется вызвать его метод Dispose, освобождающий
Все исходные и результирующие данные-ссылки в заданиях группы ObjDyn и ObjTree имеют тип Node; их ввод и вывод должен осуществляться с помощью функции GetNode и процедуры Put, описанных ниже.