Главная » Free Pascal » Операции над однотипными массивами Free Pascal

0

В Паскале выделяют массивы, совместимые по операции присваивания. К ним относятся массивы, объявленные с использованием одного и того же типа:

type

m10_b = array [1..10] of byte; var

a1 : m10_b; a2 : m10_b;

a3, a4 : m10_b;

a5 : array [1..10] of byte

a6, a7 : array [1..10] of byte;

В приведенном выше фрагменте массивы a1, a2, a3 и a4 совместимы между со- бой по присваиванию. Массивы a6 и a7 совместимы между собой, но не совмести- мы ни с первой группой массивов, ни с массивом a5. Массив a5 не совместим ни с одним из остальных массивов. Столь странное определение совместимости объ- ясняется довольно просто: при изменении в программе единственной строчки со- вместимые массивы продолжают оставаться совместимыми. Например, мы меняем описание типа m10_b. Одновременно с этим автоматически меняются типы масси- вов a1, a2, a3 и a4. Но это изменение не влияет на типы массивов a5, a6 и a7. Изме- нение типа в последней строке оказывает воздействие только на массивы a6 и a7.

Для массивов, совместимых по присваиванию, допускается операция вида:

a1 := a2;

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

Модуль Matrix

В состав системы Free Pascal включен модуль (unit) Matrix, построенный по классической схеме с использованием классов. Он обеспечивает:

± формирование и инициализацию объектов типа вектор размером 2, 3 и 4;

± формирование и инициализацию объектов типа квадратные матрицы разме- ром 2  2, 3  3 и 4  4;

± выполнение всех арифметических операций над объектами указанных типов;

± выполнение основных операций линейной алгебры (извлечение или изменение строк или столбцов, формирование нулевых или единичных матриц, транспо- нирование матриц, вычисление определителей, обращение матриц).

Элементами векторов и матриц могут быть данные любых вещественных ти- пов — single, double, extended.

Основное назначение функций и процедур модуля Matrix — помощь в создании программ обработки двумерных и трехмерных векторных графических объек- тов. С помощью этих подпрограмм довольно легко реализуются различные аффин- ные преобразования в 2D- и 3D-графике (перемещение точек, параллельный перенос отрезков, сжатие и растяжение геометрических фигур, повороты и др.).

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии