Паскаль. Основы программирования

       

Форматированный вывод информации


Если вы выполните программу, то столкнетесь с неприятным явлением - результат, т.е. числовые значения корней, будут выдаваться на экран в экспоненциальной форме.

Так, после ввода значений коэффициентов: 2 3 -10, на экран будет выдан результат:

Уравнение имеет два различных корня

x1 = -3.1084952830E+00    x2 = 1.6084952830E+00

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

Чтобы избежать всех этих неприятностей, можно использовать форматированный  вывод информации.

В Турбо-Паскале предусмотрен вывод данных с форматами. В общем случае формат имеет следующий вид:

r:f1:f2

Здесь r - имя переменной, значение которой выводится (в данном случае - x1 или x2), формат f1 указывает, сколько позиций нужно для всего числа, включая знак числа, целую часть, точку и дробную часть числа; f2 - число позиций дробной части числа (после точки).

 Если формат указан, то значение переменной r выводится в виде константы с фиксированной запятой, например: 12.35, .123. Если параметры f1 и f2 опущены, то вещественная переменная выводится в виде константы с плавающей запятой, например: 2.534E03, 5.67E-12 и т.п.  В этом случае значения f1 и f2 устанавливается по умолчанию.

 Надо вообще заметить, что вещественное число в формате с фиксированной точкой печатается так:

несколько пробелов; знак минус (-) или пробел; последовательность цифр (целая часть); точка; последовательность цифр (дробная часть).

Рассмотрим несколько примеров форматированного вывода результатов для вещественных переменных.



Пример. Пусть переменная r получает значение частного от деления вещественных переменных a на b.

Составим небольшую программу и выполним ее несколько раз, устанавливая различные значения для форматированного вывода результата.

Program Problem;

    uses WinCrt;

    var

       a, b, r : real;

    begin

       write('Введите значение переменной a '); readln(a);


       write('Введите значение переменной b '); readln(b);

       r := a/b;

       writeln('Результат равен ', r)

    end.

При первом выполнении программы не устанавливайте параметров для форматированного вывода. Вы получите результат в форме с плавающей запятой. При следующем выполнении для a введите значение 1, для b 3, а для вывода результата установите следующий формат: r:6:2; затем, r:1:5; r:0:4 и т.п.

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

r:f1

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

Изменим в программе две строки вывода информации:

writeln('Уравнение имеет один корень ',  -b/(2*a):6:3) и

writeln('x1 = ',  x1:6:3, ' x2 = ',  x2:6:3)

Теперь понятно, что для выводимых результатов отведено 6 позиций, а для дробной части - 3 позиции, т.е. до тысячных долей (думается этого достаточно для школьных задач).


Содержание раздела