Основные действия с массивами Паскаля

Как известно, определение типа данных означает ограничение области допустимых значений, внутреннее представление в ЭВМ, а также набор допустимых операций над данными этого типа. Мы определили тип данных как массив Паскаля. Какие же операции определены над этим типом данных? Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы однотипны, – это присваивание. Если в программе описаны две переменные одного типа, например,

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

то можно переменной a присвоить значение переменной b ( a := b ). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно(это важно!).

Ввод массива Паскаля

Для того чтобы ввести значения элементов массива, необходимо последовательно изменять значение индекса, начиная с первого до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать цикл с заданным числом повторений, т.е. простой арифметический цикл, где параметром цикла будет выступать переменная – индекс массива Паскаля. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания.

Пример фрагмента программы ввода массива Паскаля

Var
A : array [1..10] of integer ;
I : byte ; {переменная I вводится как индекс массива}
Begin
For i:=1 to 10 do
Readln (a[i]); { ввод i- го элемента производится с клавиатуры }

Рассмотрим теперь случай, когда массив Паскаля заполняется автоматически случайными числами, для этого будем использовать функцию random ( N ).

Пример фрагмента программы заполнения массива Паскаля случайными числами

Var
A: array [1..10] of integer;
I : byte ; {переменная I вводится как индекс массива}
Begin
For i :=1 to 10 do
A [ i ]:= random (10); { i -му элементу массива присваивается «случайное» целое число в диапазоне от 0 до 10}

Вывод массива Паскаля

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

Пример фрагмента программы вывода массива Паскаля

Var
A: array [1..10] of integer;
I : byte ; {переменная I вводится как индекс массива}
Begin
For i :=1 to 10 do
Write ( a [ i ],’ ‘); {вывод массива осуществляется в строку, после каждого элемента печатается пробел}

Вывод можно осуществить и в столбик с указанием соответствующего индекса. Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана.

Пример программы вывода массива Паскаля в столбик

Var
A: array [1..10] of integer;
I : byte ; {переменная I вводится как индекс массива}
Begin
For i:=1 to 10 do
Writeln (‘a[‘, i,’]=’, a[i]); { вывод элементов массива в столбик }

На экране мы увидим, к примеру, следующие значения:

a [1]=2
a [2]=4
a [3]=1 и т.д.

 

Матрицы Паскаль

 

Компоненты матрицы обозначаются переменной с двумя индексами.

Например:A[i, j]илиA[i],[ j],при этом первый индекс обозначает номер строки а второй номер столбца.

Матрицы м. б. описаны с использованием раздела типов либо непосредственно в разделе описания переменных. Есть несколько способов описания матриц в языке Паскаль.

С использованием раздела описания типов:

  1. Type M = array[T1,T2] of T3;
  2. Type M = array[T1] of array[T2] of T3;
  3. Type V = array[T1] of T3;
    Type M = array[T2] of V;

где:
V -имя типа вектор;
M -имя типа матрица;
T1, T2 - тип индексов ( м.б. разными);
T3 -тип компонент.

Например:

1. Type M = array[1..n, 1..m] of real;

Vec A, B :M;

2. Type M = array[1..n] of array[1..m] of real;

Vec A, B :M;

3. Type V = array[1..n] of real;

Type M = array[1..m] of V;
Vec A, B :M;

 

Третий способ в Паскале целесообразно использовать, если необходимо работать с отдельными строками или столбцами матрицы.

2. Без использования раздела описания типов:
Var A, B : array[T1,T2] of T3;

Например:

Var A,B : array[1..n, 1..m] of real;

 

Как отмечалось ранее, использование раздела Type свидетельствует о хорошем стиле программирования.
Все действия с массивами выполняются с использованием двойных циклов (по строкам и по столбцам) за исключением присваивания целиком элементов одной матрицы другой. Например: X:=Y.

 

7.

8.