Var Pntr 1, pntr 2: ^ integer;
pntr 3: ^ real; pntr : Pointer;
Допустимые операции:
Pntr 1: = NIL;
Pntr 1: = Pntr 2;
Pntr 1: = Pntr 3; - нельзя
Pntr 2: = @x;
Pntr !: = Addr (y);
Pntr : = PTR (S);
Все эти присваивания допустимя, запрещено присваивать уазатели разных типов. Нетипизированным указателям т.к. они не связаны с конкретным типом можно присваивать значение типизированного указателя. Для получения доступа значению хранящемуся в памяти по адресу на к-ый ссылается указатель необходимо после идентификатора указателя поставить символ “^ ” Pntr 1 ^ : = 7. Ячейку памяти на к-ую указывает Pntr 1 будит, записано число 7.
ВЫДЕЛЕНИЕ И ОСВОБОЖДЕНИЕ ДИНАМИЧЕСКОЙ ПАМЯТИ. В Pascal для работы с динамич. памятью исп-ся процедуры NEW, Dispose. Вся динамич. распред. память может рассматриваться как сплошной массив состоящиий из байтов и называемой кучей или Reap – область. Эта обл. размещ-ся в памяти комп-ра следом за обл. ппамяти, к-ую заниммает тело программы. Нижняя граница reap – области опр-ся стандартной переменной указателя Heap Org и содержит абсолютный адрес начала динамич. памяти. Верхняя граница опр-ся указателем Heap End текущее значение указателя, разделяющего занятую и не занятую части reap – обл. содержит переменные Heap Ptr. При каждом новом выделении памяти система управления reap – обл. указатель передвигается вверх в сторону увеличения адресов, а при освобождении динамич. распред. памяти переменных происходит обратное действие, указатель перемещается вниз, в сторону уменьшения адресов.
СТЕК - назыв динамич структура данных добавление компоненты в кот и исключение компоненты из кот произво-ся из одного конца. Стек работает по принципу Lifo, поступающим последним обслуживается первым. Над стеком выпол-ся следующая операция: 1)начальное формирование стека, т. е. запись 1-й компоненты. 2)добавление компоненты стек. 3)вывода компоненты из стека,т.е. удаление. Для формирования стека и работы с ним надо иметь 2 переменные типов указателя, 1-ое из них определяет вершину стека, а 2-я вспомогательная. Var-раздел переменных; p Top- указ-ль вершины; p Aux-вспомогательный. 1)New (p Top); 2)p Top^.p Next:=Nil; 3)p Top^.D:D1; Добавлениекомпонентавстек: New (p Aux);
p.Aux^.p Next:=p Top;
p.Top:=pAux;
p Top^.D: =D2;
Процесс выборки компонента из стека. Составить программу кот формирует стек, добавляя произвольное кол-во компонент и читает все компоненты и выводит их на экран дисплея, данные вводятся с клав-ры,в качестве данных испол-ся строка символов, кот заканчив-ся словом END.
Program Steck 1;
Uses crt;
Type alfe=’string’[10];
P comp=^comp;
Comp= record
Sd: alfa;
P next:p comp;
End;
Var p top:p comp;
Sc: alfa;
Процедура создания стека. Procedura Creat Steck 1 (Var p top:p comp; Sc:alfa);
Begin
New(p top);
P top^.p next:=nil;
P top^. Sd: sd;
End.
Процедурадобавлениястек. Procedure Add steck 1(Var p top: p comp;Sc: alfa);
Var P Aux: p comp;
Begin
New (P Aux);
P Aux^.p Next:=p top;
P top:= p Aux;
P top^.Sd:=Sc;
End;
Процедура удаление элемента из стека. Procedur Del Steck 1 (Var p top; p com; Sc:alfa);
Begin
Sc:=p top^.Sd;
P top:= p top^. Next;
End;
Begin
Writeln (‘введите строку’);
Readln(Sc);
Createsteck 1(P top,Sc);
Repert
Writeln (‘введите строку’);
Readln(Sc);
Addcomp(p top,Sc);
Until Sc=’End’;
Repeat
Del comp(p top,Sc);
Writeln(Sc);
Until p top= nil;
Repeat Until Klypnocedur
Очередью назыв. динамич структура данных добав-ие компонентов кот производится с начала, а выборка осущест-ся с др. конца. Поступившим 1-м, обслуживается 1-м. Структура данных очередь испол-ся при моделировании системы массового обслуживания: очередей людей в магазинах, очередей транспорт. Потоков, очередей производствен линий. Для формирования очереди и для работы с ней надо иметь 3 переменные типа указатель. 1-й из кот яв-ся начало очереди,2-я конец очереди, 3-я дополнительная. Составить программу формирования очереди добавление её произвольного кол-ва компонент,прочитать все компоненты и вывести на экран дисплея в качестве исходных данных, использовать строку символов заканчивающихся словом END.
Program queue;
Uses crt;
Typ Alfa=string[10];
P comp=^comp;
Comp=record
Sd:alfa;
P next: p comp;
End;
Var p begin, pend:p comp;
Sc:alfa;
Процедураформирования. Procedure Creakqueue (Var p begin,pend: p Comp;Var Sc:alfa);
Begin
New(p begin);
P begin^.Sd=Sc;
Pend:=p begin;
End;
Procedure Addqueue(Var pend: p Comp;Var Sc: alfa);
Var p Aux: p Comp;
Begin
New (p Aux);
P Aux^.p next:=nil;
P end^.p next:=p Aux;
Pend:=p Aux;
Pend^.Sd:=Sc;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.