TURBO PASCAL |
Новости
|
Массивы
Массивы в Турбо Паскале во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно, структурированного). Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера, например: type digit =array[0..9] of Char ; matrix =array[Byte] of Single; var m : matrix; d : digit; i : Integer; begin ....... m[17] := ord(d[i-l])/10; ....... end. Описание типа массива задается следующим образом: <имя типа> = ARRAY [ <сп.инд.типов> ] OF <тип> Здесь <имя типа> - правильный идентификатор; ARRAY, OF - зарезервированные слова (массив, из); <сп.тд.типов> - список из одного или нескольких индексных типов, разделенных запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса; <тип> - любой тип Турбо Паскаля. В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы, кроме LONGINT и типов-диапазонов с базовым типом LONGINT. Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например: var а,b : array [1..10] of Real; Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы изменения индексов. Так как тип <тип>, идущий за словом OF, - любой тип Турбо Паскаля, то он может быть, в частности, и другим массивом, например: type mat = array [0..5] of array [-2..2] of array [Char] of Byte; Такую запись можно заменить более компактной: type mat = array [0..5,-2..2,Char] of Byte; Глубина вложенности структурированных типов вообще, а следовательно, и массивов - произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива, как уже говорилось, не может быть больше 65520 байт. В памяти ПК элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива. Если, например, var а : array[1. .2,1. .2] of Byte; begin a [1,1]:=1; a [2,1]:=2; a [l, 2]:=3; a [2,2]:=4; end. то в памяти последовательно друг за другом будут расположены байты со значениями 1,3,2, 4 . Это обстоятельство может оказаться важным при использовании стандартной процедуры копирования памяти MOVE. В Турбо Паскале можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например: var а,b:array [1..5] of Single; begin ..... a := b; ..... end. После этого присваивания все пять элементов массива А получат те же значения, что и в массиве В. Однако над массивами не определены операции отношения. Нельзя, например, записать if a = b then ... Сравнить два массива можно поэлементно, например: var a,b:array [1..5] of Single; eq:Boolean; i:Byte; begin ..... eq := True; for i := 1 to 5 do if a[i] <> b[i] then eq := False; if eq then ..... end.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |