Массив — упорядоченный набор однотипных значений — компонент массива. Тип компонент называется базовым типом массива.
В Паскале массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент.
Переменная с индексом — идентификатор компоненты массива.
Формат записи:
<имя массива>[<индекс>],
где индекс может быть выражением порядкового типа.
Описание массива определяет имя, размер массива и базовый тип. Формат описания в разделе переменных:
Var <имя массива>: array [<тип индекса>] of <базовый тип>
Чаще всего в качестве типа индекса используется интервальный целый тип.
Линейный (одномерный) массив — массив, у которого элементы — простые переменные. В одномерных массивах хранятся значения линейных таблиц.
Примеры описания одномерных массивов:
Var В: array [0..5] of real;
R: array [1.. 34] of char;
N: array ['A'.. ' Z' ] of integer;
Ввод и вывод массива производится поэлементно. Обычно для этого используется цикл с параметром, где в качестве параметра применяется индексная переменная.
|
|
Пример 1. В программе вводится десять значений целочисленного массива А и выводятся значения вещественного массива В, содержащего 50 элементов. Соответствующие фрагменты программы:
Var А: array [1..10] of integer;
В: array [1..50] of real;
i: integer;
begin
for i: = 1 to 10 do
begin
write ('A[', i, ']=');
readln (A[i])
end;
for i: = 1 to 50 do
begin
writeln('В[',i,']=', В[i])
end;
end.
Пример 2. Заполнить случайными числами из диапазона [0,1] вещественный линейный массив из N чисел. Найти максимальное значение и его индекс (первый, если таких значений несколько).
Решение. Поскольку размер массива в программе должен быть однозначно задан, определим N в разделе констант, например, N=20. При изменении размера массива достаточно будет отредактировать в программе лишь описание константы N.
Const N=20;
Var X: array [1:N] of real;
k: integer;
max: real;
Kmax: integer;
Begin
{Заполнение случайными.числами}
for k:=1 to N do X[k]: =random;
max:= X [1];
Kmax: =1; {Инициализация вычисляемых переменных}
for k: =2 to N do {Поиск максимального значения}
if X [k] > max then
begin
max: =X [k];
Kmax:= k;
end;
writeln ('Первое максимальное значение: X[',Kmax,'] =',max)
end.
Пример 3. Дан целочисленный линейный массив. Отсортировать его элементы в порядке возрастания значений.
Решение. Воспользуемся алгоритмом, известным под названием «метод пузырька». Идея состоит в последовательном перемещении путем попарных перестановок наибольшего значения сначала на место N-гo элемента, затем N-1 -го и т.д.
Опишем массив на максимальный размер (например, 100), а фактический размер N определим вводом.
Program Sortirovka;
Var N, I, J, Р: integer;
|
|
A array [ 1.. 100] of integer;
begin
write('Введите число элементов: ');
readln(N);
for I: = 1 to N do
begin
write ('Введите A[', I, '] ');
readln (A [I]);
end;
for I:=l to N-1 do
begin for J: =1 to N-I do
if A[J] <=A[J+1] then
begin
P:=A[J];
A[J]:=A[J+l];
A[J+1]:=P;
end
end;
for I:=1 to N do
write (A[I], ' ');
end.
Тестовый пример: N = 10; {количество элементов в массиве Ai}
элементы массива Ai: [1, 2, 2, 2, -1, 1, 0, 34, 3, 3]
результаты выводятся в массив с именем Ai: [-1, 0, 1, 1, 2, 2, 2, 3, 3, 34]
Пример вывода результатов в файловую переменную: Для этого необходимо в блоке описания описать файловую переменную: f:Text;
В теле программы, которая начинается с операторных скобок Begin…End
....
begin
assign(F,d:\mus\alg10.txt); {путь к файлу, где будут находиться результирующие данные}
rewrite(f); {оператор открытия файловой переменной}
writeln(f,’aaa’); {оператор вывода в файловую переменную с именем f }
Close(f) {оператор закрытия файловой переменной};
....
End.
Пример вывода результатов программы Sortirovka в файловую переменную:
for I:=1 to N do
writeln (f,A[I]);