Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Динамические структуры.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
434.69 Кб
Скачать

15

Лекции Pascal (динамические данные)

Динамические структуры данных Классификация структур данных

Структуры данных вместе с алгоритмами обработки являются основными составными частями создаваемых программ. Используемые в программировании данные можно разделить на две большие группы: данные статической структуры и данные динамической структуры.

Данные статической структуры – это такие данные, взаимное расположение и взаимосвязи элементов которых все время работы программы остаются постоянными. Данные статической структуры могут быть простыми (скалярными) и составными (агрегативными), которые формируются из простых структур по какому-либо закону.

Простые: арифметические, символьный, булевские, указательный.

Составные: однородные (массивы, строки, множества) и неоднородные (записи, объекты).

Данные динамической структуры – это данные, внутреннее строение которых формируется по какому-либо закону, причем количество элементов этих данных, их взаиморасположение и взаимосвязи могут изменяться во время работы программы. Поэтому их называют динамическими структурами. Другими словами, динамические данные имеют особые свойства: они могут «появляться» и «исчезать» во время работы программы. Данные динамической структуры применяются тогда, когда заранее не известно количество памяти, которое понадобится программе. Например, при работе с массивами необходимо точно указать его размер (например, 100) и тогда программа может обрабатывать массивы, длины которых лежат в диапазоне от 0 до указанного размера (до 100). Если вместо массива использовать динамическую структуру, то размер ее может быть ограничен только размером памяти компьютера, а не особенностями объявления массивов.

К данным динамической структуры относятся файлы, несвязные и связные динамические данные.

Понятие о динамической памяти

Все переменные, объявленные в программе, размещаются в одной непрерывной области оперативной памяти, которая называется сегментом данных. Длина сегмента данных определяется архитектурой микропроцессоров 80x86 и составляет 65536 байт (64 кб). При обработке больших массивов данных этого сегмента может не хватить. Выходом из положения может служить так называемая динамическая память.

Динамическая память (в Паскале - куча) - это часть оперативной памяти компьютера, предоставляемая программе при её работе за вычетом сегмента данных (64 Кб), сегмента стека (16 Кб), памяти, используемой системными и резидентными программами, и собственно телом самой исполняемой программы. Размер динамической памяти определяется всей доступной памятью ПК и по умолчанию составляет 200 - 400кб, причем этот размер можно устанавливать из среды или из самой программы специальными директивами компилятора. Куча первоначально всегда свободна и заполняется от своих нижних (младших) адресов.

Структура памяти во время выполнения программы на языке Паскаль:

С истемная область (библиотеки Паскаля, интерфейс, редактор, компилятор, файл сообщений об ошибках)

Куча

Программа

Системная область

Старшие адреса

HeapEnd – конец кучи

HeapPtr – начало свободной области

HeapOrg – начало кучи

Младшие адреса

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