Spec-Zone.ru › Ada 2022
Справочник Ada (Ada 2022)

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
with Global => in out synchronized is
use Complex_Types;
Default_Fore : Field := 2;
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);
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);
procedure Get (From : in String;
Item : out Complex;
Last : out Positive)
with Nonblocking;
procedure Put (To : out String;
Item : in Complex;
Aft : in Field := Default_Aft;
Exp : in Field := Default_Exp)
with Nonblocking;
end Ada.Text_IO.Complex_IO;
Пакет библиотеки Complex_Text_IO определяет те же подпрограммы, что и Text_IO.Complex_IO, за исключением того, что предварительно определённый тип Float систематически подставляется вместо Real, а тип Numerics.Complex_Types.Complex систематически подставляется вместо Complex на всём протяжении. Необобщённые эквиваленты Text_IO.Complex_IO, соответствующие каждому из других предварительно определённых типов с плавающей точкой, определены аналогично с именами Short_Complex_Text_IO, Long_Complex_Text_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);
Последовательность ввода — пара, необязательно со знаком, вещественных литералов, представляющих вещественную и мнимую составляющие комплексного значения. Эти компоненты имеют формат, определённый для соответствующей процедуры 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 как пару десятичных литералов, представляющих вещественную и мнимую составляющие комплексного значения, используя синтаксис агрегата. Более конкретно,
выводит левую скобку;
выводит значение вещественной составляющей параметра 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);
Читает комплексное значение из начала данного строкового значения, следуя тому же правилу, что и процедура 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 в данную строку как пару десятичных литералов, представляющих вещественную и мнимую составляющие комплексного значения, используя синтаксис агрегата. Более конкретно,
левая скобка, вещественная составляющая и запятая выравниваются слева в данной строке, причём вещественная составляющая имеет формат, определённый процедурой 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.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API