Библиотека программиста

«Ни один ремесленник, который стремится к вершинам своей профессии, не примет негодных инструментов; и ни один производитель, который ценит качество работы, не будет упрашивать ремесленника принять их»

Главная страница > Основы программирования > 5. Процедура вывода данных

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

Процедура вывода используется для стандартных типов данных вида 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);

 





<< Предыдущая статья
«4. Процедура ввода данных»
Следующая статья >>
6. Практическое задание
 
При использовании любых материалов с сайта http://www.introligator.org
обратная ссылка обязательна.
Rambler's Top100 Рейтинг@Mail.ru