русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-23; просмотров: 645; Нарушение авторских прав


В Object Pascal начиная с версии Delphi 4 введены так называемые динамические массивы. При объявлении таких массивов в программе границы индексов не указываются:

 

<имя_массива>: array of<тип>;

Например, объявление одномерного, двумерного и трехмерного динамических массивов:

Var

A: array ofInteger;

В: array of array ofChar;

C: array of array of array ofReal;

 

Распределение памяти и указание границ индексов по каждому измерению динамических массивов осуществляется в ходе выполнения программы путем инициации массива с помощью функции setLength.

Например, в ходе выполнения такого оператора:

SetLength(А,3);

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

Фактически идентификатор динамического массива ссылается на указатель, содержащий адрес первого байта памяти, выделенной для размещения массива. Поэтому для освобождения этой памяти достаточно присвоить идентификатору значение nil (другим способом является использование процедуры Finalize).

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

В многомерных массивах сначала устанавливается длина его первого измерения, затем второго, третьего и т. д. Например:

Var

A: array of array ofInteger;

{Двумерный динамический массив}

Begin

SetLength(A,3);{Устанавливаем длину первого измерения}

{далее задаем длину каждого измерения}



SetLength(A[0],3);

SetLength(A[l],3);

SetLength(A[2],3);

End.

 

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

 

SetLength(A,3) ; {далее задаем длину каждого измерения}

SetLength(A[0],3) ;

SetLength(A[l],4) ;

SetLength(A[2],5) ;

 

В многомерных динамических массивах каждый элемент любого из N-1 измерений (N - количество измерений) представляет собой динамический массив и, следовательно, нуждается в инициации. Вот как, например, можно инициировать вещественный кубический массив 3х3х3:

Var

A: array of array of array ofReal;

i, j: Integer;

Begin

SetLength(A,3) ;

fori := 0 to2do

Begin

SetLength(A[i],3);

forj := 0 to2 doSetLength{A[i,j],3);

end;

End.



<== предыдущая лекция | следующая лекция ==>
Многомерные массивы | Операции с массивами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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