15. 4 пакет text_ioПакет Text_IO используется для ввода-вывода текстовых файлов в форме, удобной для пользователя. Спецификация пакета приведена в Приложении 3. Для использования ресурсов пакета в программном модуле пользователя ему должен предшествовать спецификатор контекста: with Ada . TextJO; Ввод-вывод значений соответствующих типов текстовых файлов осуществляется через процедуры Put и Get. Пакет TextJO со держит в свою очередь настраиваемые пакеты IntegeMO, Float_IO и Fixed_IO для ввода-вывода соответственно целых, плавающих и фиксированных типов. 15.4.1 Ввод-вывод целых типов Процедуры ввода-вывода для целых типов определены в настраиваемом пакете IntegeMO, который находится в пакете Text_IO. Пакет IntegeMO имеет один параметр настройки: type NUM is range <>, который задаётся через соответствующий целый тип при конкретизации. Например: new IntegeMO ( shortjnteger); new IntegeMO ( positive ); new IntegeMO ( integer); package lo_lnt_Short is package Pos is package INPUT66 is Значения целых типов выводятся в виде десятичных литералов или литералов по основанию без подчёркивания и порядка. Значение основания принадлежит целому подтипу: subtype Number_Base is integer range 2 .. 16; При выводе в процедурах могут использоваться параметры ширины поля и основания, которые по умолчанию задаются в пакете IntegeMO переменными: Default_Width Default Base Field Number Base Для ввода определены следующие процедуры: procedure Get ( procedure Get ( := Num'Width; := 10;
ja определены следующие процедуры: File Item Width in File_Type; in Num; in Field := Default_Width ; procedure Put ( 190 Ада 95. Введение в программирование 191 Глава 15. Ввод-вывод
Base : in Number_Base : = Default_Base); procedure Put ( Item : in Num; Width : in Field := DefaultJ/Vidth ; Base : in Number_Base ; = Default_Base); Значение параметра Item выводится в виде целого литерала без подчёркивания, порядка и ведущих нулей и со значением знака минус, если значение отрицательное. Если в выводимой последовательности число символов меньше значения параметра Width , она дополняется слева пробелами. Если параметр Base равен десяти (по умолчанию он также равен десяти), то число выводится в соответствии с синтаксисом десятичного литерала, в противном случае - в соответствии с синтаксисом литерала по основанию. П Пример: package IOJNT99 is new TextJO.IntegerJO (integer); use IOJNT99; по умолчанию при выводе используются параметры -- Default_Width =4 -- Default Base =10 выводится "ЬЫ21" выводится "bb-121" 2 ); - - выводится "bb2#1111001#" X := 121 ; put ( X ); put(-X, 6); put(X, Width => 12, Base 15.4.2 Ввод-вывод вещественных типов Процедуры ввода-вывода вещественных типов определены в настраиваемых пакетах Float_IO и FixedJO, которые находятся в пакете Text_IO. Пакет Float_IO имеет параметр настройки: type NUM is digits <> ; который задаётся через соответствующий тип с плавающей запятой при конкретизации. Пакет Fixed_IO имеет параметр настройки: type NUM is delta <>, который задаётся через соответствующий тип с фиксированной запятой при конкретизации. П Например: 20.0; type FLT is digits 8; - - описания типов type Data is delta 0.001 range -15.0 . package FLTJO is new FloatJO ( FLT ); - - конкретизация package INPUT_DATA is new FixedJO ( Data); Вывод значений вещественных типов осуществляется как вывод десятичных литералов без подчёркивания. Формат вывода определяется полями Fore (целая часть), Aft (дробная часть), Ехр (порядок) с добавлением десятичной точки и буквы Е в случае необходимости: Fore. Aft Е Ехр Fore . Aft Значения этих полей по умолчанию задаются в спецификациях соответствующих пакетов. Get:
193 Глава 15. Ввод-вывод 192 Ада 95. Введение в программирование
Значения параметра Item выводится в виде десятичного литерала в формате, определяемом параметрами Fore , Aft , Exp . Если целая часть с учётом знака минус содержит менее Fore символов, то в начале выводятся пробелы. D Пример: package ZZE is new Float IO ( real); - - конкретизация use ZZE; put(X); put(X, 5,3, Ob-put (X, FORE AFT => 3, EXP X:= -121.4287; - - выводится "b 1.214287E+02" --выводится "b-121.428" 5, 2); --выводится "bbbl.214E+2" 15.4.3 Ввод-вывод перечисляемых типов Процедуры ввода-вывода для перечисляемых типов определены в настраиваемом пакете EnumerationJO, который при конкретизации настраивается на перечисляемый тип ( Enum). D Например : type Color is ( blue, green, gray); package COLJN is new EnumerationJO ( Color); При выводе значений используются либо строчные, либо прописные буквы. Формат вывода (вместе с заключительными пробелами) задаётся необязательными параметрами ширины поля. По умолчанию эти параметры: Default_Width : Field := 0; Default_Setting : Type_Setting := Upper_Case; Для ввода перечисляемых типов определены процедуры Get: procedure Get( File : in File_Type; Item : out Enum); procedure . Get ( Item : out Enum); Для вывода перечисляемых типов определены процедуры Put: Set : in Type_Set : = Default_Setting ); procedure Put ( Item : in Enum ; Width : in Field : = Default_Widrth ; Set : in Type_Set: = Default_Setting ); Значение параметра Item выводится как литерал перечисления (либо идентификатор, либо символьный литерал). Если число выводимых символов меньше, чем значение параметра Width , то в конце выводятся пробелы, дополняющие число символов до Width . Так как тип Boolean является перечисляемым типом, то настраиваемый пакет EnumerationJO может быть использован после конкретизации для ввода-вывода элементов типа Boolean. |
| Оглавление| |