Процедуры ввода-вывода

Для выполнения операций ввода-вывода служат 4 процедуры: Read, ReadLn, Write, WriteLn.

Процедура чтения Read обеспечивает ввод числовых данных, символов, строк и т.д. для последующей их обработки программой. Формат:

Read (X1, X2, …, Xn);

где X1, X2, …, Xn — переменные допустимых типов.

Значения X1, X2, …, Xn набираются минимум через один пробел на клавиатуре пользователем и высвечиваются на экране. После ввода данных для одной процедуры Read нажимается клавиша ввода Enter. Значения переменных должны вводиться в строгом соответствии с синтаксисом языка.

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

Пример.

Var

A, B: integer;

C, D: real;

Begin

Read (A, C);

Read (B, D)

End.

Поток ввода:

25 2.34 <Enter> 451 25.685 <Enter>

Процедура чтения ReadLn аналогична процедуре Read, единственное отличие заключается в том, что после считывания последнего в списке значения для одной процедуры ReadLn данные для следующей процедуры ReadLn будут считываться с начала новой строки. Заменим в предыдущем примере процедуры Read на процедуры ReadLn:

Var

A, B: integer;

C, D: real;

Begin

ReadLn (A, C);

ReadLn (B, D)

End.

Поток ввода:

25 2.34 <Enter>

451 25.685 <Enter>

Процедура записи Write производит вывод числовых данных, символов, строк и булевских значений. Формат:

Write (Y1, …, Yn);

где Y1, …, Yn — выражения целочисленного, вещественного, ствольного, строкового, булевского и др. типов.

Форматы вывода:

Вывод целочисленных значений:

Процедура Значение Поток вывода

Write (I); 134 134

Write (I:5); 134 _ _ 134

(Для вывода целого числа отводится 5 позиций. При выводе число автоматически прижимается к правому краю).

Вывод вещественных значений:

Write (R); 715.342 _ _7.154320000E+02

Write (R:12); 46.78 4.678000E+01

(На вещественное число отводится 12 позиций).

Write (R:6:2); 46.78 _ 46.78

(На вещественное число отводится 6 позиций, из них 2 знака после запятой. Число прижимается к правому краю).

Вывод символьных и строковых значений:

Write (CH); ‘X’ X

Write (CH:4); ‘X’ _ _ _ X

Write (S); ‘Привет!’ Привет!

Write (S: 10); ‘Привет!’ _ _ _Привет!

Вывод логических значений:

Write (B); True True

Write (B:6); True _ _ True

Процедура записи Writeln аналогична процедуре Write, но после вывода последнего в списке значения для текущей процедуры Writeln происходит перевод курсора к началу следующей строки. Процедура Writeln, записанная без параметров, вызывает переход к новой строке.

Пример:

Write (‘A=’, A:3);

WriteLn (‘_C=’, C:3);

Writeln (‘D=’, D:6:2);

Поток вывода:

A=_ 23 _ C=_34

D=_ _3.24

Пример: Вычислить значения функций f и g:

Написать две программы, использующие:

§ вещественные значения;

§ целочисленную арифметику (целочисленные данные, промежуточные и конечные результаты, операции целочисленной арифметики, константу MAXINT, диапазоны оператора выбора CASE.

Program example1;

{ Программирование ветвящихся вычислительных процессов }

{ использование вещественных значений: }

Uses Crt;

Var

x, y, f, g: Real;

Begin

Clrscr; {Очистка экрана}

WriteLn (' Введите значения x, y ');

ReadLn (x, y);

WriteLn (' При x= ', x:5:2, ' y= ', y:5:2);

If x+y < 0 Then

Begin

WriteLn (' x+y= ', x+y:5:2, ' <0 ');

f:= 1/sqrt (x*x + y*y);

g:= x - y

End

Else

If x+y <= 5 Then

Begin

WriteLn (' 0<=x+y= ', x+y:5:2, ' <=5 ');

f:= 2*x*y;

g:= 2*x + 3

End

Else

Begin

WriteLn (' x+y= ', x+y:5:2, ' >5 ');

f:= 1/(x + y);

g:= 1/sqrt (x*x + 1)

End;

WriteLn (' f= ', f:6:4);

WriteLn (' g= ', g:6:4);

ReadLn {Задержка экрана}

End.

Program example2;

{ Программирование ветвящихся вычислительных процессов }

{ использование целочисленной арифметики: }

Uses Crt;

Var

x, y, f, g: integer;

Begin

Clrscr; {Очистка экрана}

WriteLn (' Введите значения x, y ');

ReadLn (x, y);

WriteLn (' При x= ', x:5:2, ' y= ', y:5:2);

case x+y of

-Maxint-1 .. -1: Begin

WriteLn (' x+y= ', x+y, ' <0 ');

f:= 1 div round (sqrt (x*x + y*y));

g:= x - y

End;

0 .. 5: Begin

WriteLn (' 0<=x+y= ', x+y, ' <=5 ');

f:= 2*x*y;

g:= 2*x + 3

End;

6 .. Maxint: Begin

WriteLn (' x+y= ', x+y, ' >5 ');

f:= 1 div (x + y);

g:= 1 div round (sqrt (x*x + 1))

End

End;

WriteLn (' f= ', f);

WriteLn (' g= ', g);

ReadLn; {Задержка экрана}

End.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: