Сохранение результатов вычислений в массиве

Массиваминазывают структурные переменные, представляющие набор однотипных элементов – элементов массива. Доступ к элементам массива, называемым индексными переменными, осуществляется по имени массива и набору индексов, однозначно определяющих положение элемента в массиве. Если элементы массива сами не являются массивами, то такой массив называют одномерными для обращения к элементам массива используется только один индекс, иначе массив называют многомерным (двумерным, трехмерным и так далее).

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

В общем случае описатель типа статического массива, создаваемого пользователем, определяется следующим образом: ТипБаз ИмяМас[КолЭлем] ,

где

ТипБаз – базовый тип (имя стандартного типа, или ранее объявленного типа, или описатель типа),

ИмяМас – имя массива,

КолЭлем – количество элементов массива.

Первый элемент массива всегда имеет нулевой номер (индекс).

Для одномерных числовых массивов ТипБаз должен представлять простой тип.

Имена, представляющие типы-массивы, объявляют как и имена прочих пользовательских типов, в разделе 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.

Наши рекомендации