Справочник Ada 95
G.1.3 Ввод-вывод комплексных чисел
Обобщенный пакет Text_IO.Complex_IO определяет процедуры для форматированного ввода-вывода комплексных значений. Обобщенным фактическим параметром при инстанцировании Text_IO.Complex_IO является экземпляр Numerics.Generic_Complex_Types для некоторого типа с плавающей точкой. Особый ситуации обрабатываются путем поднятия соответствующего исключения, определенного в Text_IO.
Статическая семантика
Обобщенный пакет библиотеки Text_IO.Complex_IO имеет следующее объявление:
with Ada.Numerics.Generic_Complex_Types;
generic
with package Complex_Types is
new Ada.Numerics.Generic_Complex_Types (<>);
package Ada.Text_IO.Complex_IO is
generic
with package Complex_Types is
new Ada.Numerics.Generic_Complex_Types (<>);
package Ada.Text_IO.Complex_IO is
use Complex_Types;
Default_Fore : Field := 2;
Default_Aft : Field := Real'Digits - 1;
Default_Exp : Field := 3;
Default_Aft : Field := Real'Digits - 1;
Default_Exp : Field := 3;
procedure Get (File : in File_Type;
Item : out Complex;
Width : in Field := 0);
procedure Get (Item : out Complex;
Width : in Field := 0);
Item : out Complex;
Width : in Field := 0);
procedure Get (Item : out Complex;
Width : in Field := 0);
procedure Put (File : in File_Type;
Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Get (From : in String;
Item : out Complex;
Last : out Positive);
procedure Put (To : out String;
Item : in Complex;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Item : out Complex;
Last : out Positive);
procedure Put (To : out String;
Item : in Complex;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
end Ada.Text_IO.Complex_IO;
Семантика процедур Get и Put следующая:
procedure Get (File : in File_Type;
Item : out Complex;
Width : in Field := 0);
procedure Get (Item : out Complex;
Width : in Field := 0);
Item : out Complex;
Width : in Field := 0);
procedure Get (Item : out Complex;
Width : in Field := 0);
Последовательность ввода — это пара необязательно знакомых вещественных литералов, представляющих вещественную и мнимую части комплексного значения. Эти компоненты имеют формат, определенный для соответствующей процедуры Get экземпляра Text_IO.Float_IO (см. A.10.9) для базового типа Complex_Types.Real. Пара компонентов может быть разделена запятой или заключена в скобки, или то и другое. Пробелы разрешены перед каждым из компонентов и перед скобками и запятой, если таковые используются. Если значение параметра Width равно нулю, то
- разделители строк и страниц также разрешены в этих местах;
- компоненты должны быть разделены по крайней мере одним пробелом или разделителем строк, если запятая опущена; и
- чтение прекращается, когда прочитана правая скобка, если в последовательности ввода присутствует левая скобка, или когда прочитана мнимая часть, в противном случае.
Если указано ненулевое значение Width, то
- компоненты должны быть разделены по крайней мере одним пробелом, если запятая опущена; и
- читается ровно Width символов или символы (возможно, их нет) до разделителя строк, что произойдет раньше (пробелы учитываются в подсчете).
Возвращает в параметре Item значение типа Complex, соответствующее последовательности ввода.
Исключение Text_IO.Data_Error поднимается, если последовательность ввода не имеет требуемого синтаксиса или если компоненты полученного комплексного значения не соответствуют базовому типу Complex_Types.Real.
procedure Put (File : in File_Type;
Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
procedure Put (Item : in Complex;
Fore : in Field := Default_Fore;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Выводит значение параметра Item как пару десятичных литералов, представляющих вещественную и мнимую части комплексного значения, используя синтаксис агрегата. Более конкретно,
- выводит левую скобку;
- выводит значение вещественной части параметра Item с форматом, определенным соответствующей процедурой Put экземпляра Text_IO.Float_IO для базового типа Complex_Types.Real, используя заданные значения Fore, Aft и Exp;
- выводит запятую;
- выводит значение мнимой части параметра Item с форматом, определенным соответствующей процедурой Put экземпляра Text_IO.Float_IO для базового типа Complex_Types.Real, используя заданные значения Fore, Aft и Exp;
- выводит правую скобку.
procedure Get (From : in String;
Item : out Complex;
Last : out Positive);
Item : out Complex;
Last : out Positive);
Считывает комплексное значение с начала заданной строки, следуя тому же правилу, что и процедура Get, которая считывает комплексное значение из файла, но рассматривает конец строки как разделитель строк. Возвращает в параметре Item значение типа Complex, соответствующее последовательности ввода. Возвращает в Last значение индекса, такое что From(Last) — это последний прочитанный символ.
Исключение Text_IO.Data_Error поднимается, если последовательность ввода не имеет требуемого синтаксиса или если компоненты полученного комплексного значения не соответствуют базовому типу Complex_Types.Real.
procedure Put (To : out String;
Item : in Complex;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Item : in Complex;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp);
Выводит значение параметра Item в заданную строку в виде пары десятичных литералов, представляющих вещественную и мнимую части комплексного значения, используя синтаксис агрегата. Более конкретно,
- левая скобка, вещественная часть и запятая выравниваются слева в данной строке, причем вещественная часть имеет формат, определенный процедурой Put (для вывода в файл) экземпляра Text_IO.Float_IO для базового типа Complex_Types.Real, используя значение нуля для Fore и заданные значения Aft и Exp;
- мнимая часть и правая скобка выравниваются справа в данной строке, причем мнимая часть имеет формат, определенный процедурой Put (для вывода в файл) экземпляра Text_IO.Float_IO для базового типа Complex_Types.Real, используя значение Fore, которое полностью заполняет оставшуюся часть строки, вместе с заданными значениями Aft и Exp.
Исключение Text_IO.Layout_Error поднимается, если заданная строка слишком коротка, чтобы вместить отформатированный вывод.
Разрешения реализации
Другие исключения, объявленные (посредством переименования) в Text_IO, могут быть подняты предшествующими процедурами в соответствующих обстоятельствах, как и для соответствующих процедур Text_IO.Float_IO.