Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Статические и динамические структуры данных программы, их особенности



Существуют динамические и статические объекты. У обычные переменные сразу после её описания резервируется область памяти, и эта область закрепляется за переменной на все время работы программы. Такого рода переменные называют статическими переменными. Часто бывает так, что какая-то переменная нужна не на всё время выполнение программы, а только на какую-то часть этого времени. Такие временные программные объекты могут занимать значительный объем памяти и одновременное существование всех таких объектов может потребовать столь большого объема машинной памяти, что соответствующая программа просто не сможет разместиться в ограниченной оперативной памяти машины. Переменные которые могут резервировать область памяти, а затем снова освобождать во время выполнения программы стали называть динамическими. Динамические объекты будут возникать в процессе выполнения программы, а действия над ними необходимо задавать уже до выполнения. В Паскале для работы с динамическими объектами предусматривается специальный тип переменных, так называемый ссылочный тип. Каждому динамическому объекту в программе сопоставляется статическая переменная ссылочного типа. В терминах этих ссылочных переменных обосновываются действия над соответствующими динамическими объектами. Динамические объекты и ссылки:<имя ссылочного типа> = ^ <имя типа>, где ^ - называемая «крышка», признак ссылочного типа, <имя типа> - это имя либо статического, либо ранее описанного типа значения.Рассмотрим листинг программы написанный на языке Паскаль:

Uses

Crt;

Type

masiv = array[1..10] of Integer;

DinMas = ^masiv;

RefMas = ^Real;

Var

p, d:Integer;

q

: ^ char;

RabMas

:DinMas;

RefMas

: array [1..15] of RefReal;

r

:Integer;

Begin

End;

Значение переменной р может быть ссылкой на динамический объект целого типа. Значение переменной q - ссылка на динамический объект литерного типа. Значение переменной RabMas - ссылка на динамический объект значение, которого является массив из 10 целых чисел. Значения статических ссылочных переменных указывают место в памяти соответствующего динамического объекта. поэтому переменные ссылочного типа часто называют указателями. Динамическому объекту в отличие от статических не дается имен в обычном понимание этого слова. Для ссылки на динамический объект в Паскале имеется такое понятие как переменная с указателем:<имя переменной с указателем> = <ссылочная переменная> ^,где <ссылочная переменная> - это имя той статической переменой ссылочного типа, которая в программе поставлена в соответствие данному динамическому типу. «Крышка» после ссылочной переменной свидетельствует о том, что здесь речь идет не о значении ссылочной переменной, а о значении того программного объекта на которой указывает эта ссылочная переменная. Отличия использования динамических переменных от статических переменных: вместо описания самих динамических переменных в программе даются описания указателей(статических переменных ссылочного типа) поставленных в соответствие динамическим переменным; в подходящем месте программы должно быть представлено порождение каждой из динамической переменной (в Паскале процедура New); для ссылки на динамическую переменную используется переменная с указателем. Если в процессе выполнения программы некоторая динамический объект созданный ранее становиться не нужным, то его можно уничтожить, что позволит освободить оперативную память, которую он занимал. Для статической структуры данных выделяется фиксированная область памяти, которая определяется перед выполнением программы. Использование статической структуры позволяет более эффективно использовать резерв времени выполнения программы, но к уменьшению размера свободной оперативной памяти. К статическим структурам данных относятся массивы и структуры. В Массивы объединяются элементы одного и того же типа. Массив может состоять из одного элемента, а может запомнить столько, сколько позволяет оперативная память. Элементы массива запоминаются в памяти последовательно, каждый элемент хранит одно значение типа с которым был объявлен массив. Массивы могут обладать одним, двумя и более измерениями. Структуры для объединения данных различного типа в одну группу. Они формируют оболочку вокруг одного или нескольких значений одного или нескольких типов данных. Элементы структуры хранятся в памяти вместе. Область памяти для динамической структуры данных определяется после начала выполнения программы и может меняться в процессе ее выполнения. Обычно их элементы используют указатели для ссылок на элементы, подобные им самим. Применение динамических структур данных позволяет экономичнее использовать память, но снижает скорость выполнения программы. К динамическим структурам данных относятся списки, стеки и деревья. В Список объединяются элементы, содержащие указатель на следующий элемент своего типа.

Стек - это структура данных, работающая по принципу «последним пришел- первым вышел». Стек напоминает груду книг. Верхнюю книгу взять легко, но чтобы достать нижние книги, нужно убрать те, которые находятся сверху. Стек обычно используется для хранения адресов возврата из функций и локальных переменных, но его можно применять для хранения различных видов информации. Деревья. Если добавить второй указатель в элемент списка, то он (элемент) сможет указывать сразу на 2 элемента своего собственного типа.





Дата публикования: 2015-02-03; Прочитано: 6126 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...