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

UptoLike

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

25
тарии к указателям также используются при отображении на экране динамических
структур, если они содержат элементы, с которыми связаны данные указатели.
procedure SetPointer(NP: integer; P: PNode);
Эта процедура позволяет определить в учебном задании указатель с номером NP
(значение этого указателя при инициализации задания будет равно P, однако при вы-
полнении задания оно может измениться). Все прочие процедуры, связанные с этим
указателем и описываемые далее, используют не его конкретное значение, а но-
мер NP.
Номер NP должен лежать в диапазоне от 0 до 35; он указывается в обязательном
комментарии к данному указателю (см. выше). Если процедура SetPointer для указа-
теля с номером NP не вызвана, то указатель с этим номером будет иметь значение nil.
procedure DataP(Cmt: string; NP: integer; X, Y: integer);
procedure ResultP(Cmt: string; NP: integer; X, Y: integer);
Процедуры DataP и ResultP помещают указатель с номером NP в список исход-
ных или, соответственно, результирующих данных учебного задания и отображают
его на экране. При отображении на экране указатель снабжается обязательным ком-
ментарием вида P
#
=, где в качестве символа # указывается символ, связываемый с
указателем (для NP от 0 до 9 — соответствующая цифра, для NP от 10 до 35 — за-
главная латинская буква от A до Z). Само значение указателя на экран не выводится;
вместо него указывается одно из двух условных обозначений: ptr для ненулевого ука-
зателя и nil для нулевого указателя. Как и прочие элементы данных, указатель может
снабжаться дополнительным комментарием Cmt, который приписывается слева к
обязательному (например, вызов процедуры с параметрами Cmt = 'Адрес начала сте-
ка: ' и NP = 6 приведет к выводу на экран следующей строки:
Адрес начала стека:
P
6
= ptr). В дополнительном комментарии Cmt можно использовать управляющие
последовательности (см. п. 4). В процедурах DataP и ResultP задается также экранная
позиция, начиная с которой элемент данных выводится в соответствующую экранную
область. Параметр Y определяет номер строки (от 1 до 5), параметр X — позицию в
строке (от 1 до 78; как обычно, требуется, чтобы элемент данных вместе с коммента-
рием полностью умещался на строке).
procedure DataList(NP: integer; X, Y: integer);
procedure ResultList(NP: integer; X, Y: integer);
Процедуры DataList и ResultList предназначены для помещения структуры типа
«одно- или двусвязный линейный динамический список» в набор исходных или, со-
ответственно, результирующих данных, а также для вывода этой структуры на экран.
Параметр NP задает номер указателя (предварительно определенный процедурой
SetPointer), который указывает на начало данного списка, то есть на его первый эле-
мент. Если соответствующий указатель равен nil, то список считается пустым. Пустой
список на экране не отображается.
Непустой динамический список отображается на двух экранных строках; первая
строка содержит имена указателей, входящих в задание и связанных с данным спи-
ском (они задаются процедурой ShowPointer), во второй строкезначения элемен-
тов списка (точнее, их полей Data целого типа) и виды связи между элементами.
Если память для элемента результирующего списка должна быть выделена про-
граммой учащегося, то значение его поля Data на экране обрамляется точками (на-
пример, .23.). Если в исходной динамической структуре требуется разрушить один