Справочное руководство по языку Ада-83



              

Примечание 2



Примечание

package INT_IO is new INTEGER_IO(SMALUNT); use INT_IO; -— в результате конкретизации -— получается формат по умолчанию: —— DEFAULT_WIDTH = 4, DEFAULT_BASE = 10PUT(126); -- "b126" PUT(-126, 7); -- "ЬЬЬ-126" PUT(126, WIDTH => 13, BASE => 2); -- "bbb2#1111110#"

Ссылки: десятичный литерал 1, исключение DATA_ERROR 14.4, исключение LAYOUT_ERROR 14.4, литерал с основанием 2, пакет INTEGER_IO 10, параметр WIDTH 5, подтип FIELD 5, признак конца строчки 14.3, пропуск 5, просмотреть 5, процедура GET 5, процедура PUT 5, тип FILE_TYPE 14.1, целый литерал

8. ВВОД-ВЫВОД ДЛЯ ВЕЩЕСТВЕННЫХ ТИПОВ

Следующие процедуры определены в настраиваемых пакетах FLOAT_IO и FIXED_IO, которые должны быть конкретизованы с соответствующим плавающим или фиксированным типом (указанным в спецификации параметром NUM).

Значения выводятся как десятичные литералы без подчеркиваний. Формат каждого выводимого значения состоит из поля FORE, десятичной точки, поля AFT, а также (при ненулевом значении параметра ЕХР) буквы Е и поля ЕХР. Таким образом, возможны два формата:

FORE . AFT и FORE . AFT E ЕХР

без всяких пробелов между этими полями. Поле FORE может включать предшествующие пробелы и знак минус для отрицательных значений. Поле AFT состоит из одних лишь десятичных цифр (оно может оканчиваться нулями). Поле ЕХР состоит из знака (плюс или минус) и порядка (возможно, с предшествующими нулями).

Для плавающих типов длины этих полей по умолчанию определены переменными, описанными в пакете FLOAT_IO:

DEFAULT_FORE : FIELD := 2; DEFAULT_APT : FIELD := NUM'DIGITS-1; DEFAULT_EXP : FIELD := 3;

Для фиксированных типов длины по умолчанию для этих полей задаются переменными, описанными в пакете FIXED_IO:

DEFAULT_FORE : FIELD := NUM'FORE; DEFAULT_AFT : FIELD := NUM'AFT; DEFAULT_EXP : FIELD := 0;

Определены следующие процедуры:

procedure GET(FILE : in FILE_TYPE; ITEM : out NUM; WIDTH : in FIELD := 0); procedure GET(ITEM : out NUM; WIDTH : in FIELD := 0);

При нулевом значении параметра WIDTH опускают все ведущие пропуски, признак конца строчки или признак конца страницы, читают знак плюс или минус (если он есть); затем производят чтение в соответствии с синтаксисом вещественного литерала (он может быть литералом с основанием). При ненулевом значении параметра WIDTH вводят или ровно WIDTH символов, или, если раньше встретился признак конца строчки, лишь символы, читаемые до этого признака конца (возможно, ни одного символа); в это количество включаются и все предшествующие пропуски.

Через параметр ITEM возвращают значение типа NUM, соответствующее введенной последовательности.

Если введенная последовательность не удовлетворяет требованиям синтаксиса или если полученное значение не принадлежит подтипу NUM, то возбуждается исключение DATA_ERROR.

procedure PUT(FILE : in FILE_TYPE; ITEM : in NUM; FORE : in FIELD := DEFAULT_FORE; AFT : in FIELD := DEFAULT_AFT; EXP : in FIELD := DEFAULT_EXP);procedure PUT(ITEM : in NUM; FORE : in FIELD := DEFAULT_FORE; AFT : in FIELD := DEFAULT_AFT; EXP : in FIELD := DEFAULT_EXP);

Выводят значение параметра ITEM в виде десятичного литерала в формате, определяемом параметрами FORE, AFT и ЕХР. Если значение ITEM отрицательное, то в целую часть включен знак минус. При нулевом значении параметра ЕХР целая часть представляется таким количеством цифр, которое требуется для представления целой части значения ITEM. При необходимости значение FORE игнорируется. Если в значении ITEM нет целой части, то целая часть представляется цифрой 0.

Если значение ЕХР больше нуля, то целая часть представляется одной цифрой, отличной от нуля, за исключением случая, когда значение ITEM равно

В обоих случаях, если целая часть, включая знак минус, содержит менее FORE символов, она дополняется до этого количества ведущими нулями. Дробная часть состоит из AFT цифр или при AFT, равном нулю, из одной цифры. Значение округляется; остаток, равный половине последнего разряда, может быть округлен как с избытком, так и с недостатком.

При нулевом значении ЕХР число выводится без порядка. Если ЕХР больше нуля, то при . выводе порядка выводится столько цифр, сколько необходимо для представления порядка значения ITEM (для представления целой части этого значения используется один символ);первым символом является знак плюс или минус. Если для представления порядка, включая знак, используется менее ЕХР символов, то это представление дополняется до требуемого количества символов ведущими нулями. Для значения ITEM, равного 0.0, порядок равен нулю.

procedure GET(FROM : in STRING; ITEM : out NUM; LAST : out POSITIVE);

Читает с начала строки, заданной параметром FROM, вещественное значение по тем же правилам, что и процедура GET, читающая вещественное значение из файла; при этом конец строки рассматривается как признак конца файла. Через параметр ITEM возвращает значение типа NUM, соответствующее введенной последовательности. Через параметр LAST возвращает значение индекса, соответствующее последнему читаемому символу (следовательно, этот символ имеет значение индексируемой компоненты FROM (LAST)).

Если введенная последовательность не соответствует правилам синтаксиса или если полученное значение не принадлежит подтипу NUM, то возбуждает исключение DATA_ERROR.

procedure PUT(TO : out STRING; ITEM : in NUM; AFT : in FIELD := DEFAULT_AFT; EXP : in INTEGER := DEFAULT_EXP);

Через параметр ТО выводит значение параметра ITEM по тем же правилам, что и при выводе в файл; при этом в качестве FORE использует такое значение, чтобы общее число выводимых символов, включая предшествующие пробелы, соответствовало длине строки параметра ТО.









Содержание  Назад  Вперед