Сохранение результатов вычислений в массиве
Массиваминазывают структурные переменные, представляющие набор однотипных элементов – элементов массива. Доступ к элементам массива, называемым индексными переменными, осуществляется по имени массива и набору индексов, однозначно определяющих положение элемента в массиве. Если элементы массива сами не являются массивами, то такой массив называют одномерными для обращения к элементам массива используется только один индекс, иначе массив называют многомерным (двумерным, трехмерным и так далее).
В качестве индексов могут выступать выражения целых типов(в том числе булевских и целых), которые записываются после имени массива в квадратных скобках через запятую. В этом разделе ограничимся рассмотрением одномерных статических массивов.
В общем случае описатель типа статического массива, создаваемого пользователем, определяется следующим образом: ТипБаз ИмяМас[КолЭлем] ,
где
ТипБаз – базовый тип (имя стандартного типа, или ранее объявленного типа, или описатель типа),
ИмяМас – имя массива,
КолЭлем – количество элементов массива.
Первый элемент массива всегда имеет нулевой номер (индекс).
Для одномерных числовых массивов ТипБаз должен представлять простой тип.
Имена, представляющие типы-массивы, объявляют как и имена прочих пользовательских типов, в разделе type. Например,
type
tX=array[Byte] of 1..9;
tY=array[-2..2] of Real;
где
- тип tX объявлен как тип целочисленного одномерного массива из 256 элементов, значениями которых которого могут быть числа из диапазона 1..9, а индексами – выражения целого типа со значениями от 0 до 255;
- тип tY объявлен как тип одномерного массива вещественных данных типа Real из 5 элементов, индексами которых могут быть выражения целого типа со значениями
–2, -1, 0, 1, 2.
Переменные-массивы объявляют как и переменные прочих типов в разделе var. Им можно задавать начальные значения (что удобно при отладке программ), записав их списком в круглых скобках через запятую, причем длина списка должна быть равна размеру массива. Например, в объявлениях
var
X,Z:tX;
Y:tY=( 1.2, 4.2, -5.1, 4.4, -1.5);
переменные X и Z будут иметь тип tX, а переменная Y – тип tY с начальными значениями своих элементов Y[-2] = 1.2, Y[-1] = 4.2, Y[0] = -5.1, Y[1] = 4.4, Y[2] = -1.5.
При решении задач, связанных с обработкой множеств значений в массивах или получаемых в результате вычисления значений функций, может потребоваться сохранение результатов вычислений для дальнейшего использования. В таких случаях необходимо выделить память для хранения результатов, объявив в разделе var массив соответствующего типа, и очередное вычисленное значение сохранять в очередной ячейке массива, присваивая его индексной переменной - элементу этого массива с очередным значением индекса.
Объявление статических массивов приводит к резервированию области памяти для хранения значений их элементов, размеры которой нельзя изменить во время работы программы. Поэтому для обеспечения массовости алгоритма программы необходимо объявлять массивы с максимально возможными размерами исходя из условий применения программы, обычно формулируемыми в задании на её разработку.
Свойство «массовость» алгоритма предполагает его применимость к различным, заранее оговоренным, наборам данных, в частности, задаваемых при вводе. В рассмотренном выше примере объявления массива X, если он будет представлять исходные данные для какого-либо алгоритма, свойство «массовость» может обозначать, что могут обрабатываться любые наборы от одного числа до девяти чисел с любыми значениями от 0 до 255. Например, все 9 элементов массива, или только N первых, N<9.
В дальнейшем в заданиях обработку массивов будут использоваться следующие сокращенные обозначения, которые рассмотрим на примерах:
Х(20) – будет обозначать, что для хранения данных должен использоваться одномерный массив, в котором подлежат обработке 20 последовательно расположенных элементов.
Х(N), N<=20 – будет обозначать, что для хранения данных должен использоваться одномерный массив, в котором подлежат обработке N последовательно расположенных элементов.
Иногда при постановке задач удобно использовать слово векторили последовательность, имея в виду размещаемые в последовательных ячейках массива данные.
Пример. Составить программу вычисления и сохранения в массиве Y значений функции y=sin x и в массиве X - соответствующих значений аргумента. Аргумент должен изменяться с шагом dX от начального значения X0.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
tMas=array[1..10] of Real;
var
i:Integer;
X0, dX:Real;
X, Y:tMas;
begin
Write('Введите начальное значение X и шаг dX: ');
ReadLn(X0, dX);
for i:=1 to 10 do
begin
X[i]:=X0;
Y[i]:=Sin(X0);
X0:=X0+dX;
end;
for i:=1 to 10 do
WriteLn(X[i]:10:4,Y[i]:10:4);
ReadLn;
end.