Данные динамической структуры
Между объектами реального мира, поведение которых моделируют программы, существуют разнообразные, постоянно меняющиеся связи. Одни объекты могут исчезнуть, другие — появиться. Так, люди рождаются и умирают, порывают с кем-то из старых друзей и заводят новых. Ясно, что, если в программе мы хотим моделировать группы с переменным числом объектов, связи между которыми подвержены изменениям, нужны языковые средства для установления, изменения и разрыва связей между отдельными объектами, а также для порождения и уничтожения объектов. Для этой цели в Паскале
Табл. 5.1. Работа со статическими и несвязанными динамическими данными. | ||
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Обычные переменные | Динамические переменные |
1. Простая переменная | Var x :Char; y: Integer; Begin x := ’*’; y := 3; End. | Var px :^Char; py :^Integer; Begin New(px); New(py); px^ := ‘*’; py^ := 3; …… Dispose(px); Dispose(py); End. |
2. Массив | Var x :Array[1..3]Of Byte; i :Byte; Begin For i:=1 to 3 Do Read(x[i]); …… End; | Var px :^Array[1..3]Of Byte; i :Byte; Begin New(px); For i:=1 to 3 Do Read(px^[i]); …… Dispose(px); End; |
3. Запись | Var x :Record a :Char; b :Byte; End; Begin x .a := ‘*’; x .b := 3; …… End. | Var px :^Record a :Char; b :Byte; End; Begin New(px); px^ .a := ‘*’; px^ .b := 3; …… Dispose(px); End. |
динамические переменные и указатели. Классификация данных динамической структуры показана на рис.4.1.
Несвязанные динамические данные классифицируются точно также, как и статические и работа с ними выполняется аналогично. Динамические свойства несвязанных динамических данных выражаются только в том, что они могут «появляться» и «исчезать» во время работы программы. Отличия использования таких данных заключаются в двух аспектах:
· в разделе Var объявляется не переменная требуемого типа, а указатель на этот тип;
· перед использованием необходимо вызвать процедуру New, а после использования – процедуруDispose.
В качестве примера приведена таблица 5.1. сравнения работы с аналогичными статическими и несвязанными динамическими данными.
Программированию с использованием несвязанных данных посвящена многочисленная учебная литература (например, по языкам высокого уровня), поэтому основное внимание в дальнейшем будет уделено связанным динамическим данным. Связанные динамические данные характеризуются высокой гибкостью создания структур данных различной конфигурации. Это достигается благодаря возможности выделять и освобождать память под элементы в любой момент времени работы программы и возможности установить связь между любыми двумя элементами с помощью указателей.