5. Процедуры ввода-вывода. Организация ввода-вывода элементов массива и матрицы. Размещение данных при вводе. Пример.
Ввод значений. Для ввода значений с клавиатуры используют специальные процедуры Read и ReadLn. Эти процедуры позволяют вводить значения стандартных типов, кроме boolean, и строки (string). Если ввод осуществляется процедурой ReadLn, то буфер ввода после выполнения операции очищается, причем символы, оставшиеся не обработанными, игнорируются. Если ввод осуществляется процедурой Read, то очистка не выполняется и, следовательно, следующий оператор ввода начнет читать символы из той же строки. Последнее cyщecтвeннo только, если вводятся значения типа char (или string), так как при вводе чисел пробелы и переход на следующую строку игнорируются.
Вывод значений. Для вывода значений на экран используют процедуры Write и WriteLn. Эти процедуры предназначены для вывода значений стандартных типов и строк.
Ввод-вывод массивов выполняют поэлементно, используя циклы с заданным числом повторений, например:
Var a:array[1..n] of real;
Begin
for i:=1 to n do
Read(a[i]); {осуществляем ввод массива}
ReadLn; {очищаем буфер ввода, чтобы далее значения вводились со следующей строки}
Значения элементов массива вводят в порядке обращения к ним из цикла, например для цикла, показанного выше: а1, а2, а3, а4, а5. Эти значения могут задаваться в одной строке через пробел или с нажатием клавиши Enter после ввода одного или нескольких чисел.
При выполнении операций ввода-вывода матриц и массивов большой размерности целесообразно вводить и выводить значения построчно.Например:
Var A:array[1..n,1..m] of real; {матрица A из n строк по m элементов}
Begin
for i:=1 to n do {цикл ввода строк массива: a1, а2, .., аn}
begin
for j:=1 to m do {цикл ввода элементов i-й строки:}
Read(a[i,j]); {ai1, ai2, .., aim}
ReadLn; {очищаем буфер ввода}
end;...
Ввод и вывод элементов двумерного массива (матрицы). При вводе и выводе элементов двумерного массива (матрицы) тоже удобно использовать оператор FOR. Только теперь необходимо уже два оператора FOR, так как у матрицы каждый элемент имеет два индекса – номер строки и номер столбца. Ниже приведен пример программы, иллюстрирующей ввод элементов массива размером 5х3 с клавиатуры с последующим выводом элементов массива на экран в виде матрицы.
PROGRAM Array_Input_Output;
VAR
M : array [1..5, 1..3] of Integer;
i, j : Integer;
BEGIN
Writeln(‘Ввод элементов массива.’);
FOR i:=1 TO 5 DO
FOR j:=1 TO 3 DO begin
Write(‘Введите элемент M[‘, i, ’,’, j, ’]: ’);
Readln(M[i,j])
end;
Writeln(‘Вывод массива в виде матрицы.’);
FOR i:=1 TO 5 DO begin
FOR j:=1 TO 3 DO Write( M[i,j]:5 );
Writeln
end;
END.