К. Йенсен, Н. Вирт - Паскаль - Руководство для пользователя (1109480), страница 14
Текст из файла (страница 14)
При символах множества АБС11 для этого применяют два символа: сг (возврат каретки) и И (перевод строки). Однако в некоторых системах используется множество символов, где таких символов нет. В этом случае для маркировки конца строк нужно воспользоваться другими приемами. ССЫЛОЧНЫЕ ТИПЫ Ранее речь шла а типах, предназначенных для описания статически размещенных переменных. Статической' переломной называется переменная, описанная в программе и обозначаемая с помощью имени. Статической ее называют из-за того, что она существует, т. е. под иее выделена память на протяжении всего выполнения блока (программы, процсдурь1 или функции), где оиа локализована.
Однако переменные можно создавать и уничтожать динамически в процессе выполнения блока (без какой-либо связи со статической структурой программы). Такие переменные в дальнейшем будут называться динамическими, или иденгигрицировиинььии, переменными. ~О.Е ССЫЛОЧНЫЕ Г1Е РМЕННЫЕ и 'идентич ицировАнные (ДИНАМИЧЕСКИЕ) ПЕРЕМЕННЫЕ Идентифицированная (динамнческая) переменная не указывается в описаниях переменных и ее нельзя обозначать с помощью имени.
Вместо этого они порождаются н уничтожаютси с помощью предописанных процедур Йети и О)зрозс, а идентифицируются опн через ссылочиые значения (представляюшие собой нс что иное, как адрес места в памяти, где находится вновь созданная переменная). Ссылочиое значение должно быть присвоено уже сушествуюшей ссылочиой переменной, относящейся ксвответствуюьцему ссылочному типу. Р и с. 10Л.
Сиитаисичесиая диаграмма дая Сооыоеиого сила '! Описание ссылочного типа Р издает Т вЂ” тип области: 1уре Р = (Т; Множество ссылочиых значеннй типа Р представляет собой нс- !64 Руководство длл пользователя ограниченное число идентифицирующих значений, каждое из которых идентифицирует переменную типа Т, сюда же входит и специальное значение и!1, не идентифицирующее никакую переменную. Доступ к идентифицированной (динамической) переменной идет через идентифицирующее ее ссылочное значение. Если, например, переменная Р1г была описана так: чаг Р1г: Р; и сй было присвоено некоторое идентифицирующее значение, то конструкция Р1гТ обозначает идентифицированную переменную.
Пеоеменная Р и с. !Олк Сивтаксическая диаграмма для Идентификированной переменной Если Р1г равна и!! или не определена, то обращение Р111 — ошибочно. Для поро!кдения или размещения идентифицированной переменной типа Т и присваивания идентифицирующего ес значения переменной Р1г используйте )ч(евг(Р1г). А для уничтожения переменной, идентифицированной значением Р1г, применяйте Т)!зрозе(Р(г), после обращения к В!зрозе значение Р1г становится неопределенным.
Ссылки являются простым механизмом, позволяющим строить данные со сложной и меняющейся (и дажс рекурсивной) структурой. Если тип Т определяет записи с одним или несколькими полями типа Р, то с их помощью можно строить структуры, эквивалентные произвольному конечному графу, причем идентифицированные переменные будут представлять вершины, а ссылки— ребра. Программа !О.! иллюстрирует, как с помощью ссылок можно моделировать очередь клиентов. (Процедуры рассматриваются в следующей главе.) ргезгав Иа!1! пзг! ас!!прас,Опера!); Программа 10.1 — моделирование очереди кпиеитоюо бову!киваю!си первые 3. ! сапа! Иааегепйсв = 15; туре заве!прел = ) ..Иавегепзсп; 10.
Ссылочиые чипы !05 йавеЗЬг!пй= распеб аггау [Иаве1пбех] о! Спаг; Иаеога! = О..Иах1пь; С1!епсро!пьег = ТС1ьепс; С1!епс = гесогб Паве: йавеЗЬг!пй; йхЬ: С1!еп!Ро1псег епб; чаг Неаб, Та!1: С1!епСРо1псег; Паве: расаеб аггау [Паве1пбех] о! СЬаг ргосебчге Оеабйаве; чаг с: йаве1пбех; Ьей!и !ог с := 1 Ьо йаве[епй(Ь бо ТТ Ео!п(!про!) Ьоеп Паве[с) := ' е1ье Ьейьп йеаб(1проь,Паве[с]); Нг!Ье(Оп!рос,Паве[с]) епб; йеаб1п(!про!); Нг!Се1п(Оп!рос) епб [ йеабйаве ); ргосебоге АббС1!ее















