Понятие и описание массивов

Массивом называются последовательность однотипных объектов, обозначаемая одним именем.

Массив характеризуется размером и размерностью. Размер массива – это количество элементов в нём. Размерность – это количество индексов в скобках.

Массив состоит из элементов. Чтобы выделить один из элементов массива, надо указать имя массива и номер элемента в нем. Номер элемента называется индексом, индекс указывается в квадратных скобах и может быть числом, переменной, выражением. Имя массива образуется по правилам образования имен переменных.

Пример: А [20], B [5,3].

Если для выделения элемента нужен 1 индекс, массив называется одномерным, два – двумерным и т.д.

Массивы относятся к структурированным типам данных. В программе массив можно описать двумя способами:

1. непосредственно в разделе описаний переменных:

Var

имя_массива: array [1..N] of тип_элементов;

где, N – максимальное возможное количество элементов массива.

Пример:

var

a, b: array [1..10] of real;

d, y: array [1..5,1..5] of integer;

2. объявлением типа – массива (удобно, когда требуется несколько одинаковых массивов).

Пример:

type

mas= array [1..10] of real;

var

c,d:mas; { два массива типа mas}

Элементы массива могут быть любого типа, а индексы могут быть любого порядкового типа (например, типа int, char, …). Но обычно используется тип – диапазон: 1..10, N..M.

Число элементов массива и его границы фиксируются при его описании и не могут быть изменены в процессе выполнения программы. Границы диапазона [N..M} могут быть заданы константами в разделе описания констант.

В ряде задач требуется ввести массив в виде константы, в котором записывается табличные значения. (Например, кривая намагничивания стали или начальное распределение температуры рассматриваемого объекта). Элементы такого массива-константы не могут быть изменены.

Пример:

program PR8;

const

y: array [1..5] of integer=(7,1,5,3,9) ;

var

k: integer;

begin

for k:=1 to 5 do

writeln (y[k]);

end.

Ввод и вывод массивов

Ввод и вывод массивов осуществляется поэлементно. Часто это делают с помощью циклов (обычно используется цикл FOR)

Пример:Ввести с клавиатуры значения элементов одномерного массива вещественного типа состоящего из 10 элементов. Вывести элементы массива на экран.

Решение:

program PR9;

var

A: array[1..10] of integer;

k: integer;

begin

for k:=1 to 10 do

readln (A[k]);

for k:=1 to 10 do

writeln (A[k]);

end.

Двумерные массивы (матрицы) можно вводить по строкам или по столбцам.

Пример:Пусть требуется ввести массив А (3;4):

а а а а

а а а а

а а а а

Решение:

а) ввод и вывод по строкам:

program PR10;

var

a:array [1.. 3, 1.. 4] of integer;

i; j:integer;

begin

for i:=1 то 3

for j:=1 то 4

readln (a[i, j]);

for i:=1 то 3

for j:=1 то 4

writeln (a[i, j]);

end.

б) ввод по столбцам:

begin

for i:=1 то 4

for j:=1 то 3

readln (а[j, i]); {изменен порядок индексов}

Операции с массивами

Операции с массивом производятся только с отдельными элементами массива. С элементами массива можно делать все операции, которые разрешены для базового типа массива. Если массив числовой, то математические, если символьный или строковый, то, соответственно, операции с символьными или строковыми переменными.

Пример:Написать программу вычисления произведения положительных элементов одномерного массива целых чисел.

Решение:

program Pr11;

var

a : array [1..100] of integer;

p, n, i : integer;

begin

p: =1;

writeln ('введите размер массива n<=100');

readln (n);

writeln ('ввод элементов массива');

for i:=1 to n do

begin

writeln(‘ввести a[ ‘, i , ‘]= ‘]);

readln (a[i] );

end;

for i:=1 to n do

if a[i]>0 then p:= p * a[ i ];

writeln ('Произведение =', p);

readln;

end.

Двумерные массивы

Пример:Написать программу вычисления произведения положительных элементов второй строки двумерного массива целых чисел.

Решение:

program Pr12;

var

a:array [1.. 10, 1.. 10] of integer;

p, i, j, n, m: integer;

begin

writeln(‘ Введите n<=10 , m<=10 ’);

readln (n,m);

writeln(‘ Введите элементы массива по строкам ’);

for i:=1 to n do

for j:=1 to m do

readln(a[i, j]);

p:=1;

for j:=1 to m do

if a[2, j]>0 then p:= p * a[2, j];

writeln(‘ Произведение элементов p=’, p);

readln;

end.

Контрольные вопросы

1. Оператор цикла с параметрами. Правила записи.

2. Оператор цикла с предусловием. Правила записи.

3. Оператор цикла с постусловием. Правила записи.

4. Описание одномерного массива.

5. Описание двумерного массива.

6. Ввод и вывод элементов одномерного массива.

7. Ввод и вывод элементов двумерного массива.