Ввод и вывод элементов массивов происходит поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания или путем считывания из файла, но на практике они чаще всего вводятся с клавиатуры или с помощью генератора случайных чисел. Последний способ целесообразно использовать тогда, когда количество элементов массива достаточно велико.
Примеры ввода одномерных массивов:
а) ввод с клавиатуры
FOR I: = 1 TO N DO READ ( M [I] );
б) ввод с помощью генератора случайных чисел
RANDOMIZE; { инициализация генератора случайных чисел }
FOR I: = 1 TO N DO M [I]: = - 25 + RANDOM (D);
Замечание 2: Стандартная функция Random формирует случайное целое число из диапазона от 0 до D-1. При этом i-му элементу массива будет присвоена сумма выбранного случайного числа и -25. Таким образом, массив будет заполняться целыми случайными числами от -25 до -25 + (D-1). Например, если выбрать D равным 51, то массив будет заполняться случайными числами от -25 до +25.
Вывод одномерных массивов происходит аналогичным образом, например:
FOR I: = 1 TO N DO WRITELN ( M [I] ); {вывод элементов в столбец}
Ввод двумерных массивов (матриц) производится с помощью вложенных циклов, а именно с помощью вложенных операторов FOR, т.к. количество элементов массива заранее определено:
FOR I: = 1 TO N DO
FOR J: = 1 TO K DO READ ( M [I, J] );
Вывод значений элементов двухмерных массивов производится аналогичным образом с использованием операторов вывода WRITE и WRITELN:
………………
FOR I: = 1 TO N DO
BEGIN
FOR J: = 1 TO K DO WRITE (M [I, J]); {вывод элементов первой строки матрицы в одну строку}
WRITELN {перевод курсора на новую строчку для того, чтобы элементы 2-й, 3-й и т.д. строк выводились с новой строки}
END;
……………..
Таким же образом, поэлементно, происходит ввод и вывод многомерных массивов.
Замечание 3: Самой распространенной ошибкой при работе с массивами является выход индексов за допустимые диапазоны. Для исключения таких ошибок в среде Turbo Pascal предусмотрена директива компилятора {R}. При указании в программе директивы {$R+} все массивы проверяются на предмет нахождения их внутри указанных границ. Если обнаруживается нарушение диапазона, программа завершает свою работу, выводя сообщение об ошибке выполнения. Если директива не используется (этот режим принят по умолчанию), выход индекса за пределы допустимого диапазона не приведет к прекращению работы программы. Но при обращении к ''несуществующему'' элементу массива даст неопределенный результат, что может сделать ход дальнейшего выполнения программы непредсказуемым.
Замечание 4: Следует заметить, что применение директивы {R+} несколько замедляет выполнение программы и увеличивает ее размер. Поэтому рекомендуется использовать эту директиву при отладке, а затем ее удалить из текста программы.
В качестве примера рассмотрим решение двух задач с одномерным и двумерным массивами.
Пример 1. Создать одномерный вещественный массив из 25 элементов. Определить максимальный и минимальный элементы массива и поменять их местами. Полученный результат вывести на экран.
Схема алгоритма:
Текст программы на языке Turbo Pascal:
PROGRAM MAS;
VAR
M: ARRAY [1.. 25] OF REAL; {Вещественный массив}
MAX, MIN, MN: REAL;
I, K, N: INTEGER; {Вспомогательные переменные}
BEGIN
{Ввод вещественного массива из 25 элементов с клавиатуры}
FOR I: = 1 TO 25 DO READ ( M [I] );
{Переменным MAX и MIN присваиваем значение первого элемента массива}
MAX: = M [1]; K: = 1; {Определяем максимальный и минимальный элементы
MIN: = M [1]; N: = 1; массива и их индексы}
FOR I:= 2 TO 25 DO
BEGIN
IF M [I] > MAX THEN
BEGIN
MAX: = M [I];
K: = I;
END;
IF M[I] < MIN THEN
BEGIN
MIN: = M [I];
N: = I;
END;
END;
MN: = M [K]; {Меняем местами максимальный и минимальный элементы}
M [K]: = M [N];
M [N]: = MN;
{ Вывод полученного массива на экран }
FOR I: = 1 TO 25 DO WRITELN ( M[I] );
READLN
END.
Пример 2. Создать целочисленную матрицу А размером 10х8. Сформировать одномерный массив В, который содержит суммы положительных элементов каждой строки матрицы А и вывести его на экран.
Текст программы на языке Turbo Pascal:
PROGRAM PRIM;
VAR
A: ARRAY [1.. 10, 1.. 8] OF INTEGER;
B: ARRAY [1.. 10] OF INTEGER;
I, J, S: INTEGER;
BEGIN
{Ввод целочисленной матрицы А 10х8 с клавиатуры}
FOR I:= 1 TO 10 DO
FOR J: = 1 TO 8 DO READ ( A[ I, J] );
{ Вычисление суммы положительных элементов каждой строки матрицы А и формирование массива В}
FOR I: = 1 TO 10 DO
BEGIN
S: = 0;
FOR J: = 1 TO 8 DO IF A [ I, J ] > 0 THEN S: = S + A [ I, J ];