Массивы Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива.
В Паскале массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент.
Переменная с индексом – идентификатор компоненты массива. Формат записи: <имя массива> [<индекс>], где <индекс> может быть выражением порядкового типа.
Описание массива определяет имя, размер массива и базовый тип. Формат описания в разделе переменных: Var <имя массива> : array [<тип индекса>] of <базовый тип> <тип индекса> – любой порядковый тип, кроме longint, чаще всего в качестве <типа индекса> используется интервальный целый тип.
<базовый тип > – любой тип Турбо Паскаля. Линейный одномерный массив - массив, у которого элементы – простые переменные. В одномерных массивах хранятся значения линейных таблиц. Примеры описания одномерных массивов: Var B: array [0 . . 5] of real;
R: array [1 . . 34] of char;
N: array [‘A’ . . ‘Z’] of integer; Ввод и вывод массива производится поэлементно. Обычно для этого используется цикл с параметром, где в качестве параметра применяется индексная переменная. Пример 1.
Заполнить случайными числами из диапазона [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. В Турбо Паскале можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например:
Var А, B : array [1..5] of integer;
……
A:=B;
После этого присваивания все элементы массива А получат те же значения, что и в массиве В. Так как <базовый тип > – любой тип Турбо Паскаля, то он может быть и другим массивом, например:
Var B : array [1 . . 5] of array [1..10] of real;
Такую запись можно заменить более компактной:
Var B : array [1 . . 5, 1..10] of real;
Число вложений ограничено только объемом памяти. В приведённом примере массив двухмерный. В двумерных массивах хранятся значения двумерных таблиц (матриц), состоящих из строк и столбцов.
Пример описания двумерных массивов:
Var a: array [1..5,1..2] of integer; Пример 2.
Дан массив из 5-ти строк и 2-х столбцов, содержащий элементы целого типа. Вычислить произведение отрицательных элементов. Решение.
Var a: array [1..5,1..2] of integer;
i,j,P:integer;
begin
{Ввод элементов массива с клавиатуры}
For i:=1 to 5 do
For j:=1 to 2 do begin
Write(‘Ведите a[‘,i,’,’,j,’]=‘);
Readln(a[i,j]);
end;
{Печать элементов массива в виде таблицы}
Writeln(‘ Массив a’);
For i:=1 to 5 do begin
For j:=1 to 2 do
Write(a[i,j]:4);
Writeln;
end;
{Вычисление произведения отрицательных элементов}
P:=1;
For i:=1 to 5 do
For j:=1 to 2 do
if a[i,j]<0 then
P:=P*a[i,j];
Writeln(‘Произведения отрицательных элементов P=’, P);
End.
- 0>
|