Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Динамические массивы в Pascal




BEGIN

Динамические структуры данных. Динамические массивы (одномерные и двумерные), работа с ними

 

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

Можно отметить следующие достоинства динамической памяти:

1) Экономичность и эффективность ее использования;

2) возможность динамического изменения числа элементов в связанных структурах, например в списках;

3) статические переменные существуют только в течение жизни блока, в котором они объявлены, а динамические – и после выхода из блока до окончания программы.

4) Переменная, размещаемая динамически, не объявляется в разделе VAR и не имеет имени в программе. компилятор не планирует выделение места в памяти под такие переменные.

В Delphi:

Динамический массив это массив, память для которого выделяется динамически. Размерность динамического мас­сива на момент компиляции не известна. Для объявления такого мас­сива применяется обычное описание, но без указания размерности. Основным отличием динамических массивов от статических является возможность изменения их размерности в ходе выполнения программы.

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

Описание динамического массива:

Type <Имя типа массива> = Array of <Тип элементов>

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

Пример динамического массива:

TYPE CODES = ARRAY OF INTEGER;

VAR A:CODES;

SETLENGTH (A,30);

A[0]:= 'POOH LIKES HUNNY'

END;

Необходимо учитывать, что динамический массив индексируется значениями, отсчет которых начинается с 0. Чтобы обратиться к первому элементу массива, необходимо использовать индекс 0, а к последнему – 29.

При необходимости память, выделенную под массив, можно осво­бодить самостоятельно (например, если массив ис­пользовал слишком большое ее количество). Для этого достаточно просто присвоить массиву значение nil. Например: A:= nil;

Пример многомерного динамического массива:

Type Codes = array of array of array of integer;

var A:Codes;

Begin

Setlength (A,10,20,30);

end;

Массив А имеет 10 элементов, каждый массив A[i] имеет 20 элементов, а массивы A[i][j] – 30 элементов

 

Обращение к участку динамической памяти в программе осуществляется с помощью специальной ссылочной переменной, которая называется указателем (ссылкой). Переменная типа «указатель» содержит адрес размещения участка динамической памяти, с которой связан этот указатель. Компилятор отводит под переменную типа «указатель» 4 байта статической памяти.

Описание типа указатель:

Type <идентификатор указателя>=^<тип>;

P=^Word; P – идентификатор типа «указатель» на данные типа WORD.

Динамическая память может быть выделена двумя способами:

New (p), где Р – переменная типа «типизированный указатель»

Getmem (P, size), где Р – переменная типа «указатель» требуемого типа, а size – целочисленное выражение размера запрашиваемой памяти в байтах. Эта процедура создает новую динамическую переменную требуемого размера и свойства, а также помещает адрес этой созданной переменной в переменную Р типа «указатель». Доступ к значению созданной переменной можно получить с помощью P^.

При работе с массивами практически всегда возникает задача настройки программы на фактическое количество элементов массива. В зависимости от применяемых средств решение этой задачи бывает различным.

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

PROGRAM FIRST;




Поделиться с друзьями:


Дата добавления: 2015-04-24; Просмотров: 4202; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.