Массив, как и любая
переменная программы, перед использованием должен быть объявлен в разделе объявления
переменных. В общем виде инструкция объявления массива выглядит следующим образом:
Имя: array
[нижний_индекс. .верхний_индекс] of тип
где:
имя — имя массива;
array — зарезервированное слово
языка Delphi, обозначающее, что объявляемое имя является именем массива;
нижний_индекс и верхний_и«декс
— целые константы, определяющие диапазон изменения индекса элементов массива
и, неявно, количество элементов (размер) массива;
тип — тип элементов массива.
Примеры объявления массивов:
temper:array[1..31]
of real;
коef:array[0.
.2] of integer;
name:array[1..30]
of string[25];
При объявлении массива
удобно использовать именованные константы. Именованная константа объявляется
в разделе объявления констант, который обычно располагают перед разделом объявления
переменных. Начинается раздел объявления констант словом const. В инструкции
объявления именованной константы указывают имя константы и ее значение, которое
отделяется от имени символом "равно". Например, чтобы объявить именованную
константу нв, значение которой равно 10, в раздел const надо записать инструкцию:
нв=ю. После объявления именованной константы ее можно использовать в программе
как обычную числовую или символьную константу. Ниже в качестве примера приведено
объявление массива названий команд-участниц чемпионата по футболу, в котором
используются именованные константы.
const
NT
= 18; // число команд
SN
= 25; // предельная длина названия команды var
team:
array[1..NT] of string[SN];
Для того чтобы в программе
использовать элемент массива, надо указать имя массива и номер элемента (индекс),
заключив индекс в квадратные скобки. В качестве индекса можно использовать константу
или выражение целого типа, например:
team
[ 1] := 'Зенит';
d
:= koef[l]*koef[l]-4*koef[2]*koef[1];
ShowMessage(name[n+1]);
temper[i]
:= StrToFloat(Edit1.text);
Если массив не является
локальным, т. е. объявлен не в процедуре обработки события, а в разделе переменных
модуля, то одновременно с объявлением массива можно выполнить его инициализацию,
т. е. присвоить начальные значения элементам массива. Инструкция объявления
массива с одновременной его инициализацией в общем виде выглядит так:
Имя:array [нижний_индекс..верхний_индекс]
of тип = (список);
где список — разделенные
запятыми значения элементов массива. Например:
a:
array[10] of integer = (0,0,0,0,0,0,0,0,0,0);
Team:
array[1..5] of String[10]=
('Зенит','Динамо','Спартак','Ротор','СКА');
Обратите внимание,
что количество элементов списка инициализации должно соответствовать размерности
массива. Если это будет не так, то компилятор выведет сообщения об ошибке: Number
of elements differs from declaration (количество элементов не соответствует
указанному в объявлении).
При попытке инициализировать
локальный массив компилятор выводит сообщение об ошибке: Cannot initialize local
variables (локальная переменная не может быть инициализирована). Локальный массив
можно инициализировать только во время работы программы, например, так:
for
i := 1 to 10 do
a[i]:=
0;
Знаете ли Вы, что cогласно релятивистской мифологии "гравитационное линзирование - это физическое явление, связанное с отклонением лучей света в поле тяжести. Гравитационные линзы обясняют образование кратных изображений одного и того же астрономического объекта (квазаров, галактик), когда на луч зрения от источника к наблюдателю попадает другая галактика или скопление галактик (собственно линза). В некоторых изображениях происходит усиление яркости оригинального источника." (Релятивисты приводят примеры искажения изображений галактик в качестве подтверждения ОТО - воздействия гравитации на свет) При этом они забывают, что поле действия эффекта ОТО - это малые углы вблизи поверхности звезд, где на самом деле этот эффект не наблюдается (затменные двойные). Разница в шкалах явлений реального искажения изображений галактик и мифического отклонения вблизи звезд - 1011 раз. Приведу аналогию. Можно говорить о воздействии поверхностного натяжения на форму капель, но нельзя серьезно говорить о силе поверхностного натяжения, как о причине океанских приливов. Эфирная физика находит ответ на наблюдаемое явление искажения изображений галактик. Это результат нагрева эфира вблизи галактик, изменения его плотности и, следовательно, изменения скорости света на галактических расстояниях вследствие преломления света в эфире различной плотности. Подтверждением термической природы искажения изображений галактик является прямая связь этого искажения с радиоизлучением пространства, то есть эфира в этом месте, смещение спектра CMB (космическое микроволновое излучение) в данном направлении в высокочастотную область. Подробнее читайте в FAQ по эфирной физике.