Форматный вывод в паскале

Форматный вывод в паскале

При выводе значений в текстовые файлы или на экран можно указывать формат, т.е. отводить поле для размещения этих значений. Для строчных и символьных значений формат задается одним числом, отделенным от значения двоеточием:

Write (Ch: 2, St: 20 );

Это число показывает, сколько позиций отводится под значение. Так, значение Ch (символ) будет размещено в двух позициях, хотя реально займет лишь одну, а строка St — в 20 позициях. Если реальное значение «короче» формата, излишек будет заполнен пробелами. Но если наоборот (формат «мал»), то значение будет выводиться, игнорируя спецификацию. Ошибки при этом не возникает. Выравнивание значения в поле формата здесь происходит по правому краю. На этом можно сыграть следующим образом. Часто надо выводить значения с середины строки. При выводе на экран можно использовать специальную процедуру из модуля CRT для установки курсора, но при выводе в файл на диске это работать не будет А как передвинуть значение? Решение очевидно:

Но так же очевидно, что это неэффективно (в программе будет попусту «болтаться» столько пробелов!). Разумное решение таково:

Write ( ‘ ‘ : 25, ChapterNameStr );

Один пробел, но в поле из 25 символов. Эффект будет тот же. Можно даже выкинуть пробел и поставить пустую строку ".

Логические значения False и True выводятся, как строковые константы и могут быть помещены в заданном поле.

Формат целочисленных значений задается размером поля за значением:

Write (intVar: 5, 123:4, (6*8):10 );

Целое число, включая знак минус, если нужен, будет размещено в заданном числе позиций и выровнено по правому краю. Излишки исполнятся пробелами, а если формата не хватит, то он игнорируется. Формат удобно использовать для вывода таблиц. Пусть надо красиво вывести 10 столбцов целых значений в 80 колонок экрана. Для этого можно задать формат

WriteLn (х1: 7, х2: 7, х3: 7. х10: 7);

Сложнее формат для вещественных значений. Для записи числа в дробной форме используется удвоенное описание формата: сначала указывается общий размер поля под значение, а затем через двоеточие, число знаков после запятой:

Write (RealVar: 12 : 3, 123.456 : 8 : 1 );

Читайте также:  Как изменить время бездействия на компьютере

Реальная длина числа равна сумме одной позиции под знак, числа знаков до десятичной точки, одной позиции под точку и значения второго параметра формата. Поэтому бессмысленны форматы типа ‘:4:3’. В примере переменная RealVar на экране будет иметь три знака после точки, и если полная ее длина не превысит двенадцать позиций, то она будет выровнена по правому краю. Оставшееся место будет пусто. При некорректном задании формата игнорируется только первый его параметр, а число знаков после точки устанавливается всегда корректно, но не превышает точности типа.

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

Можно выводить вещественные числа без дробной части. Для этого следует задать второй параметр равным 0:

Write (123.456 : 6 : 0 );

При необходимости вывода вещественных значений в экспоненциальном формате надо задавать вновь только одно поле. Это поле указывает число позиций, в которых надо разместить число. Само число будет иметь вид -5.5678Е+00 или 0.0012Е-20. При задании подобного формата надо учесть место под знак числа, одну цифру до точки, саму точку, хотя бы одну цифру после точки, и четыре знака под степень — всего восемь позиций.

При формате, меньшим, чем восемь позиций, он устанавливается автоматически равным восьми:

Write (123.456 : 8, ‘ ‘, 123.456 : 6);

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

Ряд проблем вызывает использование сопроцессора. В этом случае все вещественные типы при выводе в экспоненциальном формате показывают степень в виде Е+0000, т.е. минимальный формат становится равным ‘:10’, и чтобы сохранить равное число знаков в самом числе при разных режимах работы с сопроцессором, надо менять форматы. Подобные проблемы переменных форматов, вообще говоря, решаются легко. В Турбо Паскале разрешено задавать форматы целочисленными переменными или константами:

WriteLn (123.456 : F: n);

До сих пор мы рассматриваем форматы, размещающие и форматирующие одновременно. Но когда длина значения заранее неизвестна, размещение-выравнивание по правому краю может дать некрасивые форматы:

Читайте также:  Проверить скорость интернета на компьютере дом ру

Короткое число в формате 10 = 12

Длинное число в формате 10 = 12345678

Можно задать выравнивание по левому краю. В этом случае значение форматируется (если оно числовое) и пишется без предшествующих пробелов: сразу с текущей позиции. При этом занимается поле, равное длине значения. Никаких пробелов справа уже не дописывается:

Короткое число в формате-10 = 12

Длинное число в формате-10 = 12345678

Для задания такого режима надо ближнюю к значению спецификацию формата задавать отрицательной:

Write (123.456 : 6 : 1, 22 : 4 );

Write (123.456: -6: 1, 22: -4);

Несмотря на некоторое отсутствие гибкости в способе задания формата (нельзя задавать форматы-шаблоны, а надо описывать каждое значение), механизм форматированного вывода текстовой информации Турбо Паскаля достаточно мощный. Форматы имеют смысл лишь при работе с текстовыми файлами. Во всех остальных случаях они неприменимы.

Рассмотрим форматированный вывод на экран с помощью процедур Write и WriteLn. Окончание ln-означает, что курсор должен перейти на начало следующей строки. Таким образом, эти функции почти идентичны.

Вывод строк

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

Под выводом данных понимается передача информации из оперативной памяти компьютера на внешние устройства (принтер, диски).

Вывод информации в программе осуществляется операторами:

Оператор WriteLnпосле вывода значения последней переменной списка вывода переводит курсор в начало следующей строки на экране монитора или в текстовом файле.

Вывод данных может быть осуществлен бесформатнымиформатнымспособами.

Бесформатный способ вывода

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

для целыхчисел отводится столько позиций, сколько в числезначащихцифр плюс позиция для знака ”минус”: например, число+025будет выведено как25.

Таким образом, знак +при выводе не печатается, а само число занимает столько позиций на экране, сколько в нем значащих цифр,

Читайте также:  Как переключить клавиатуру с русского на английский

для данных вещественноготипа отводится17позиций:

±D.DdddddddddE±dd

Позиции распределяются следующим образом:

1-я— знак числа (если число положительное, то выводится пробел),

2-я— первая значащая цифра числа,

4 — 13-я— десять цифр дробной части с округлением,

15-я — знак показателя степени,

16 – 17-я— две цифры показателя степени.

Пример: следующие числа

бесформатным способом будут выведены так:

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

Для вывода данных символьноготипа отводитсяоднапозиция,логическогопять.Строкивыводятся по количеству символов в строке.

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

Форматный способ вывода

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

Для целыхчисел указывается длинаполя вывода– общее количество позиций для вывода числа:

На экран будет выведено:

Таким образом, если указанное количество позиций (длина поля вывода) большеколичества символов в числе, то перед числом выводится соответствующее количествопробелов(число прижимается к правому краю поля вывода), а еслименьше(программист ошибся) – то число выводитсябесформатнымспособом.

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

На экран будет выведено:

Таким образом, при некорректном задании формата вывода (вторая цифра формата больше или равна первой) определяющей для вывода числа является заданная точностьвывода.

Вывод чисел без всякой дополнительной информации называется “немым” – он некрасив и непонятен. Поэтому при выводе чисел желательно выводить и поясняющий текст, заключая его в апострофы:

На экран будет выведено:

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

На экран будет выведено:

Pi=3.1416

Оператор WriteLnбез списка вывода пропускает на экране одну чистую строку.

Ссылка на основную публикацию
Файловая система для операционной системы windows
Вы знаете, что Windows Phone использует NTFS? Почему большинство карт памяти и почти все USB-накопители по-прежнему используют старый-добрый FAT? Почему...
Унитаз санита аттика отзывы
Перед тем как покупать Sanita Аттика хочется прочитать о нём отзывы владельцев, тех людей, кто уже купил и пользуется товаром...
Упал iphone полосы на экране
Узнайте, что делать. Если экран слишком чувствителен или не всегда реагирует на касания Перезапустите устройство. Убедитесь, что экран устройства чист,...
Файлы в карантине что с ними делать
содержит все нейтрализованные вредоносные программы в корзине в течение определенного периода времени до того момента, как применит к ним соответствующие...
Adblock detector