Введение в программирование. Сортировка массива. Средства создания программ. Стандартные модули. Структурированные типы данных, страница 15

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;