Разделы презентаций


ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ

Содержание

Статическое распределение памятиПамять распределяется на стадии компиляцииПерераспределять на стадии выполнения программы – нельзя!

Слайды и текст этой презентации

Слайд 1ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ

ДИНАМИЧЕСКИЕ  СТРУКТУРЫ ДАННЫХ

Слайд 2Статическое распределение памяти
Память распределяется на стадии компиляции
Перераспределять на стадии выполнения

программы – нельзя!

Статическое распределение памятиПамять распределяется на стадии компиляцииПерераспределять на стадии выполнения программы – нельзя!

Слайд 3Динамическое управление памятью
Динамического управления памятью — выделение памяти во

время выполнения программы

Динамическое управление памятью Динамического управления памятью — выделение памяти во время выполнения программы

Слайд 4Динамическая переменная - ссылочная переменная
Объем памяти до начала работы

программы не известен, т.е. фиксированный объем памяти выделен только под

хранение адреса переменной.
Значение переменной хранится в области хипа =«куча» (динамической памяти)
Динамическая переменная - ссылочная переменная Объем памяти до начала работы программы не известен, т.е. фиксированный объем памяти

Слайд 5Указатель -
это переменная, хранящая адрес первого байта памяти, начиная

с которого находится конкретное значение динамической переменной.
Можно хранить адрес данных

или программного кода (например, адрес точки входа в процедуру).
Все указатели – 4 байта
Адрес состоит из двух машинных слов: сегмент + смещение
Указатель - это переменная, хранящая адрес первого байта памяти, начиная с которого находится конкретное значение динамической переменной.Можно

Слайд 6Объявление указателя
Type имя_типа=^базовый тип;
Var имя_перем: имя типа;

имя_перем:^базовый тип;
Пример:
Type pword=^word;
Var pw: pword;
pw1:^ word;


Объявление указателя Type имя_типа=^базовый тип;Var имя_перем: имя типа;   имя_перем:^базовый тип;Пример:Type pword=^word;Var pw: pword;

Слайд 7Указатель «в никуда»
NIL
Можно считать константой совместимой с любым ссылочным типом

Указатель «в никуда»NILМожно считать константой совместимой с любым ссылочным типом

Слайд 8Выделение места для хранения значения переменной (способы)
А) процедура new(имя указателя)
Выделяет

место и адрес начала участка заносит в указатель;
Б) функция new(тип

указателя);
Выделяет место и адрес начала участка возвращает в указатель;
С) процедура getmem(указатель, размер в байтах)
Выделяет место размером в N байт и адрес начала участка заносит в указатель;


Если требуемый объем памяти выделить
не удалось происходит аварийное
завершение работы программы.

Выделение места для хранения значения переменной (способы)А) процедура new(имя указателя)Выделяет место и адрес начала участка заносит в

Слайд 9операция разыменования — переход от ссылочной переменной к значению, на

которое она указывает
х^:= 15 означает, что по адресу, который является

значением указателя х, записывается значение 15.
операция разыменования — переход от ссылочной переменной к значению, на которое она указываетх^:= 15 означает, что по

Слайд 10Обращение к значению динамической переменной (разадресация)
Имя_перем^

Пример:
Var pw:^ word;
Begin

new(pw);
Pw^:=2;
Inc(pw^);
Write(pw^);
End.

Обращение к значению динамической переменной (разадресация)Имя_перем^Пример:Var  pw:^ word;Begin  new(pw);	Pw^:=2;	Inc(pw^);	Write(pw^);End.

Слайд 11Освобождение памяти
Dispose (var p:pointer)
Freemem(var p:pointer; size:word)
Mark(var p:pointer)
Release(var p:pointer) По завершению программы

память освобождается автоматически.

Освобождение памяти Dispose (var p:pointer)Freemem(var p:pointer; size:word)Mark(var p:pointer)Release(var p:pointer)  По завершению программы память освобождается автоматически.

Слайд 13Виды указателей:
Стандартные – могут хранить адреса переменных любого типа Var P:

Pointer;
Типизированные - можно хранить только адреса величин указанного типа (любой тип, кроме

файлового) Var P: ^integer;

Виды указателей:Стандартные – могут хранить адреса переменных любого типа Var P: Pointer;Типизированные - можно хранить только адреса

Слайд 14Операции с указателями
Nil
Сравнение if p1=p2 then … if p1nil then…


1

Операции с указателямиNilСравнение if p1=p2 then … if p1nil then…1

Слайд 15Операции с указателями
Стандартные функции: addr(x):pointer –возвращает адрес х
Seg(x):word - возвращает адрес

сегмента х
Ofs(x):word - возвращает смещение для х
Cseg:word - возвращает значение

регистра сегмента кода CS
Dseg:word - возвращает значение регистра сегмента данных DS
Ptr(seg,ofs:word):pointer – по заданному сегменту и смещению формирует адрес типа pointer


2

Операции с указателямиСтандартные функции: addr(x):pointer –возвращает адрес х	Seg(x):word - возвращает адрес сегмента х	Ofs(x):word - возвращает смещение для

Слайд 16Пример работы с динамическими переменными
Type rec = record
D:word;
S:string;
End;
Pword = ^word;
Var

p1,p2:pword;
p3: ^rec;

Пример работы с динамическими переменнымиType rec = record		D:word;		S:string;		End;Pword = ^word;Var  p1,p2:pword;    p3: ^rec;

Слайд 17Пример работы с динамическими переменными (продолжение)
Begin
new(p1);
p2:= new(pword);


new(p3);
P1^:=2;
P2^:=4;
P3^.d:=p1^;
P3^.s:=‘Вася’;

Пример работы с динамическими переменными (продолжение)Begin new(p1); p2:= new(pword); new(p3);		P1^:=2;		P2^:=4;		P3^.d:=p1^;		P3^.s:=‘Вася’;

Слайд 18Пример работы с динамическими переменными (продолжение 2)
Inc(p1^);
P2^:=p1^+p3^.d;
With p3^ do writeln(d,s);
{writeln(p3^.d);
writeln(p3^.s);}

Пример работы с динамическими переменными (продолжение 2)Inc(p1^);P2^:=p1^+p3^.d;With p3^ do writeln(d,s);{writeln(p3^.d);writeln(p3^.s);}

Слайд 19Пример работы с динамическими переменными
p1:=p2;
Появление «цифрового мусора»!!!

Пример работы с динамическими переменнымиp1:=p2;Появление «цифрового мусора»!!!

Слайд 20Вспомогательные функции
Maxavail: longint
Memavail:longint
Sizeof(x):word;

Вспомогательные функцииMaxavail: longintMemavail:longintSizeof(x):word;

Слайд 21Вспомогательные функции (пример)
Program demo_memo;
Type
mas_int=array[1..maxint] of integer;
Var p:^mas_int;
I,n:integer;
1

Вспомогательные функции (пример)Program demo_memo;Type  mas_int=array[1..maxint] of integer;Var p:^mas_int;I,n:integer;1

Слайд 22Вспомогательные функции (пример)
Begin
writeln (‘ Введите размер массива’);
Readln(n);
If maxavail

n*sizeof(integer) then
Begin writeln (‘ Недостаточно памяти’);
Halt end;
Getmem(p, n*sizeof(integer));
For i:=1 to

n do read( p^[i]);
……….
End.

2

Вспомогательные функции (пример)Begin writeln (‘ Введите размер массива’);Readln(n);If maxavail < n*sizeof(integer) thenBegin writeln (‘ Недостаточно памяти’);Halt end;Getmem(p,

Слайд 23Указатели на процедуры и функции
Самостоятельно!

Указатели на процедуры и функцииСамостоятельно!

Слайд 24Динамические структуры данных
Линейный список
Стек
Очередь
Дерево

Динамические структуры данныхЛинейный списокСтекОчередьДерево

Слайд 25Где применяют динамические структуры
Динамические структуры широко применяют и для более

эффективной работы с данными, размер которых известен, особенно для решения

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

Где применяют динамические структурыДинамические структуры широко применяют и для более эффективной работы с данными, размер которых известен,

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика