Номер NP должен лежать в диапазоне от 0 до 35; он указывается в обязательном комментарии к данному указателю (см. выше). Если процедура SetPointer для указателя с номером NP не вызвана, то указатель с этим номером будет иметь нулевое значение.
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 приведет к выводу на экран следующей строки: Адрес начала стека: P6 = ptr). В дополнительном комментарии Cmt можно использовать
Варианты данных процедур, в которых параметр Cmt отсутствует, добавлены в версию 4.11 конструктора.
procedure DataList(NP: integer; X, Y: integer);
procedure ResultList(NP: integer; X, Y: integer);
Процедуры DataList и ResultList предназначены для помещения структуры типа одно- или двусвязный линейный динамический список" в набор исходных или, соответственно, результирующих данных, а также для вывода этой структуры на экран. Параметр NP задает номер указателя (предварительно определенный процедурой SetPointer), который указывает на
Непустой динамический список отображается на двух экранных строках; первая строка содержит имена указателей, входящих в задание и связанных с данным списком (они задаются процедурой ShowPointer), во второй строке -- значения элементов списка (точнее, их полей Data целого типа) и виды связи между элементами.
Если память для элемента результирующего списка должна быть выделена программой учащегося, то значение его поля Data на экране обрамляется точками (например, .23.). Если в исходной динамической структуре требуется разрушить один или несколько элементов, то эти элементы выделяются более бледным цветом, а в случае, если программа учащегося не освободит память, занимаемую этими элементами, они будут выделены красным цветом. Наконец, если в списке, преобразованном программой учащегося, элементы располагаются не на требуемых местах, то они заключаются в скобки (например, (23)), а если элемент списка содержит ошибочную ссылку Next, то она помечается двумя красными звездочками (например 46 - **). Красные звездочки указываются в конце списка также в случае, если его длина превышает максимально допустимую. Специальные обозначения используются также для
Элемент данных типа линейный список" должен содержать не более 14 элементов типа TNode, причем значения их полей Data должны лежать в диапазоне от -9 до 99, поскольку для каждого поля Data отводится по
Для отображения списка как двусвязного необходимо, чтобы в его элементах были определены поля связи Next и Prev; в этом случае связи между соседними элементами списка обозначаются двойными линиями: =". Если в задании требуется использовать односвязный список, то для его элементов надо определить поле связи Next, а для полей Prev следует указать значение,