Массивы: понятие, виды, описание.
Массивы (arrays) - это упорядоченные наборы данных, представляющие собой список однотипных элементов.
Массив-- ряд (последовательность, набор) величин одного типа (например, real,integer или char), имеющих одно имя (один идентификатор).
С точки зрения компьютера речь идет о массиве однотипных ячеек его памяти:
Отдельные ячейки называются элементами массива. Номер ячейки называется индексом соответствующего элемента массива. В предыдущем примере 4-ая ячейка (на иллюстрации в нее записано число -2) обозначается m[4].
Базовый тип массива - это тип ячеек, из которых состоит массив (подчеркнем еще раз, что все элементы массива одного типа).
С точки зрения программиста массив удобнее представлять в виде таблицы (отсюда и другое название: табличная величина):
Каждый элемент массива - отдельная величина (переменная). Чтобы "обратиться" к ней надо указать:
· имя массива (общее имя всего набора величин);
· индекс (номер) элемента.
С элементами массивов можно оперировать так же, как и с переменными базового типа. Например (прежде чем выполнить первую команду, обратите внимание на последние),
Однако, использование элементов массива в качестве обычных переменных не дает никакой выгоды. Массивы ценны тем, что индексы в свою очередь могут быть переменными или выражениями, обеспечивая доступ к последовательным элементам. Достаточно вспомнить многострадальный цикл из предыдущего урока, присваивающий значение 5 всем элементам массива a:
for i := 1 to 100 do a[i] := 5; |
Этот цикл не только заставляет ЭВМ выполнить большое количество действий (это нам уже встречалось), но и изменить при этом массу информации - содержимое 100 ячеек.
Итак, подведем итоги:
Массив-упорядоченный набор фиксированного количества перенумерованных величин. Сами эти величины называются его элементами, а их номера- индексами. Причем все элементы должны быть одного и того же типа, который называется базовым типом или типом компонент.
Как обычно, каждому используемому в программе массиву должно быть дано свое имя, которое является общим для всего набора величин. Элементы массива "отдельных" имен не имеют. Каждый элемент массива может быть явно обозначен путем указания имени массива, за которым следует взятый в квадратные скобки индекс. Для обозначения, например, 73-го элемента массива k используется запись k[73].
В общем случае в качестве индекса может использоваться выражение, в которое могут входить переменные. При изменении значений этих переменных меняется и значение индекса элемента массива. Таким образом, одна и та же переменная с индексом в процессе выполнения программы может обозначать различные элементы массива.
Тип-массив- фиксированное количество упорядоченных однотипных компонент, снабженных индексами. Он может быть, одномерным и многомерным. Чтобы задать тип-массив, используется зарезервированное слово array, после которого следует указать тип индекса (индексов) компонент (в квадратных скобках) и далее после слова of - тип самих компонент.
type
<имя типа> = аггау[<тип индекса(индексов)>] of <тип компонент>;
Пример.
type
Arr = array[1..3] of Real;
{тип-массив из 3 вещественных чисел}
Matrix = array[1..3, 1..2] of Integer;
{тип - двумерный массив целых чисел, состоящий из 3 строк и 2 столбцов}
Введя тип-массив, можно затем задать переменные или типизированные константы этого типа.
Размерность массива может быть любой, компоненты массива могут быть любого, в том числе и структурированного, типа, индекс (индексы) может быть любого порядкового типа, кроме типа Longint.
При задании значений константе-массиву компоненты указываются в круглых скобках и разделяются запятыми, причем, если массив многомерный, внешние круглые скобки соответствуют левому индексу, вложенные в них круглые скобки - следующему индексу и т. д.
Так, для введенных выше типов можно задать, например, следующие переменные и константы:
var
M1, M2: Arr;
Matr: Matrix;
const
М3: Arr = (1 , 2, 3) ;
Mat: Matrix = ((1, 2), (3, 4), (5, 6));
Последняя константа соответствует следующей структуре:
Примечание. Тип-массив можно вводить непосредственно и при определении соответствующих переменных или типизированных констант. Например:
var
Ml, M2: array[1..3] of Real;
Matr: array[1..3, 1..2] of Integer;
Здесь определены те же массивы, что и в предыдущем примере.
При таком объявлении массивов следует помнить, что их типы не будут идентичными никаким другим типам, даже если они имеют одинаковую структуру. Поэтому передавать их как параметры в подпрограмму нельзя (см. п. 10.3), нельзя также присваивать им значения других массивов (и наоборот), даже если их структуры совпадают.
Доступ к компонентам массива осуществляется указанием имени массива, за которым в квадратных скобках помещается значение индекса (индексов) компоненты. В общем случае каждый индекс компоненты может быть задан выражением соответствующего типа, например:
М1[2] ,
Matr[X, Y],
M2[Succ(I) ]ит. д.
Одному массиву можно присвоить значение другого массива, но только идентичного типа. Так, если заданы следующие массивы:
varА, В: array[1..5] ofInteger;
С: array[1..5] ofInteger;
то допустим следующий оператор:
A := В;
С другой стороны, оператор
С := А;
недопустим, т. к. массивы А и С - не идентичных типов.
Имеются некоторые отличия в.работе с одномерными массивами символов (не путать с величинами типа string - см. п. 6.2). Так, типизированным константам этого вида можно присвоить значение как обычным строковым константам, указав строку символов в апострофах, например
const
A: array[1..5] of Char='aaaaa';
В: array[1..3] of Char='bbb';
Для таких массивов, как и для строк, можно использовать операции сравнения (даже если они не идентичных типов и даже если имеют различный размер) и конкатенации (объединения) - см. п. 6.2. Их можно использовать в операторах вывода Write и WriteLn. Например, для введенных выше массивов можно написать
if A >В then
WriteLn(A)
else
WriteLn(B);
13 Модули и библиотеки стандартных программ в универсальных языках программирования. Основные виды библиотечных функций по назначению (на примере языка программирования Паскаль или С++)
Структура модулей
Модуль имеет следующую структуру:
Unit < имя >;
Interface
< интерфейсная часть >
Implementation
< исполняемая часть >
[ Begin < инициирующая часть > ]
End.
Здесь:
Unit - кодовое слово (англ. модуль); начинающее заголовок модуля;
<имя> - имя модуля (правильный идентификатор);
Interface - кодовое слово, начинающее интерфейсную часть модуля;
Implementation - кодовое слово (англ. реализация); начинает исполняемую часть;
Begin - кодовое слово, начинающее инициирующую часть;
(часть модуля Begin < инициирующая часть > необязательна);
End. - признак конца модуля.
Таким образом, модуль состоит из заголовка и трех составных частей, любая из которых может быть пустой.