Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 л.р. 1 работа с данными.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.05 Mб
Скачать

Процедура вывода данных

Процедура вывода используется для стандартных типов данных вида real, integer, char, boolean и имеет вид

write[ln][([файл],параметр1[:w1[:d1]],параметр2[:w2[:d2]],..)],

где файл – имя логического файла для вывода значений во внешний физический файл;

параметр1, параметр2 – выражение, идентификатор, значения типа integer, real, char, boolean или запись символов в апострофах;

:w1 – количество позиций, заданных под информацию, которая будет выводиться;

:d1 – количество позиций, заданных под цифры после запятой, может применяться для величины типа real (то есть под мантиссу).

Напомним, что квадратными скобками отмечены те элементы, которые могут отсутствовать.

В отличие от процедуры read в качестве выводимой величины могут быть представлены следующие:

выражение:

write(x+y);

идентификатор:

write( z );

значения типа integer, real, char, boolean:

write(5,2.3e-02, % ,false);

запись символов в апострофах:

write( Задайте значения переменной x );

Дополнение ln, как и для процедуры ввода, обеспечивает переход на начало новой строки. Если записано лишь writeln, то выполняется переход на новую строку.

Если не указано количество позиций под величину, которая выводится, вывод выполняется в стандартной форме. За стандартную форму принимается:

real  форма с плавающей запятой;

integer, char, boolean – простая форма отображения величины на количество позиций, которые занимает сама величина.

В этом случае можно сказать, что вывод выполняется бесформатный.

ПРИМЕР.

CONST

x : real=3.4;

i : integer=  4;

c : char='z';

b : boolean=false;

. . . . . . . . . . . . .

BEGIN

. . . . . . . . . . . . .

writeln(x); writeln(i);

writeln(c); writeln(b);

. . . . . . . . . . . . .

END.

Как результат на экране получим:

3.4000000000E+00

4

z

false

Если вывод оформить в виде

writeln(x,i,c,b);

то выведенный результат в виде

3.4000000000E+00-4zfalse

будет совсем не понятен.

Вывод, когда указывают количество позиций для выводимой величины, называется форматным.

При выводе величины типа integer, char, boolean с указанием количества отведенных позиций значение переменной выводится в отведенном поле, прижатое к правой границе, например:

CONST

i : integer=  4;

c : char='z';

b : boolean=false;

. . . . . . . . . . . . .

BEGIN

. . . . . . . . . . . . .

writeln(i:4,c:5,b:6);

END.

Как результат на экране получим:

4 z false

Если указано число полей, записанных со знаком минус, то величина будут прижата к левой границе, например:

BEGIN

. . . . . . . . . . . . .

writeln(i: 4,c: 5,b: 6);

END.

Как результат на экране получим:

4 z false

Если количество записанных позиций недостаточно для выведения значений величин, то возникает автоматическое увеличение поля до необходимого размера, например:

. . . . . . . . . . . . .

writeln(i: 1,c: 5,b: 2);

END.

Как результат на экране получим:

4 zfalse

Этот же вывод можно оформить, используя дополнительные записи символов в апострофах:

BEGIN

. . . . . . . . . . . . .

writeln(' i =', i: 3,' , c =' ,c: 5,' , b =' , b: 5);

END.

Как результат на экране получим:

i = 4, c = z, b = false

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

CONST

x : real = 3.4;

y : real = 1.223e02;

. . . . . . . . . . . . .

BEGIN

. . . . . . . . . . . . .

writeln(‘x=’, x : 9,’ y=’, y : 6);

END.

Как результат на экране получим

x= 3.40e+00 y=1.2e02

При выводе величины типа real, когда указывается два числа, значение переменной выводится в форме с фиксированной точкой, и в этом случае, как мы уже говорили, первое число – это количество позиций под все число, а второе число – это количество позиций, заданных под цифры числа, которые записаны после запятой (мантисса числа):

CONST

x : real = 3.4;

y : real = 1.223e02;

. . . . . . . . . . . . .

BEGIN

. . . . . . . . . . . . .

writeln((‘x=’, x : 9: 4 , ’ y=’, y : 9: 4);

END.

Как результат на экране получим

х= 3.4000 у= 0.0122

Для второго числа одна цифра мантиссы не вошла в отведенное число позиций.

РЕКОМЕНДАЦИЯ. При вводе данных перед процедурой ввода всегда необходимо писать процедуру вывода с подсказкой, что именно необходимо вводить:

writeln('Введите действительные числа x, y: ');

readln(x,y);

Пример

Введите с клавиатуры следующие данные:

K=123, M=-7654, N=0, X=-0.000078, Y=123.456, S1=’Q’, S2=’W’, S3=’R’, LOG=TRUE.

Выведите данные в форматном и безформатном виде.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]