Массив, как и любая
переменная программы, перед использованием должен быть объявлен в разделе объявления
переменных. В общем виде инструкция объявления массива выглядит следующим образом:
Имя: array
[нижний_индекс. .верхний_индекс] of тип
где:
Примеры объявления массивов:
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колько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.