Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_1_semestr.docx
Скачиваний:
6
Добавлен:
07.08.2019
Размер:
110.04 Кб
Скачать

Var p:tpInt; q: tpReal;

p, q - ссылочные переменные. Их значениями являются ссылки или адреса ячеек памяти, в которых может находиться целое или вещественное число соответственно.

Над ссылочными значениями определены операции равенства и неравенства и оператор присваивания. Ссылочные значения не имеют внешнего представления, поэтому из нельзя вводить и выводить.

Переменная ссылочного типа может получить значение двумя способами: в результате оператора присваивания, в результате вызова специальной встроенной процедуры new. В Pascalе есть единственная полиморфная ссылочная константа nil. Константа обозначает несуществующий адрес. С каждой ссылочной переменной связана переменная базового типа, которая в программе обозначается р^. Ссылочные переменные также называют динамическими переменными.

Вопрос №77

Процедуры New и Dispose. Понятие мусора.

Такие переменные в Pascalе называются указательными переменными и появляются в программе после вызова процедуры new. New(p) - 2 байта(p - integer);

p^:=5;

Над переменной p^ можно выполнять все операции допустимые для ее базового типа. Указанную переменную, созданную с помощью процедуры new можно удалить с помощью встроенной процедуры dispose(p). Рассмотрим следующую последовательность вызовов: new(p);

new(p);

В этом случае первая ячейка становится недоступной и называется мусором. В этом случае после вызова первого new необходимо сохранить указатель в другую переменную, иначе блок памяти, выделенный из системного пула свободного памяти, невозможно использовать и невозможно вернуть в системный пул свободной памяти.

В определенный момент времени вся память может быть исчерпана и программа завершится аварийно. Во избежание такой ситуации в операционной системе существуют специальные встроенные алгоритмы, возвращающие недоступную память в системный пул свободной памяти. Таки алгоритмы называются мусорщиками.

Вопрос №78

Представление и обработка динамических списков в Pascalе.

Однонаправленные списки: рассмотрим информационную структуру, элемент которой состоит 2-х полей: Info и поле адреса следующего элемента:

List=^elem;

elem=record

info: Node;

next: List;

end;

var p,q,l: list; x: Node;

begin

new(p);

readln(x); p^.info:=x; l:=p;

while x<><условие> do begin

new(q); readln(x); q^,info:=x; p^.nex:=q; p:=q; end;

Обработка однонаправленного списка: 1) Задание списка;

2) Поиск и обработка элемента с указанными свойствами;

3)Добавление нового элемента.

4) Удаление элемента.

5) Обработка списка в целом.

Двунаправленные списки:

List=^elem;

elem=record

info: Node;

pred, next: list; end;

26

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]