Пакеты ввода-вывода
Пакет подключается к программе с помощью указания (спецификатора) контекста, имеющего вид
with <Имя_Пакета>;
Размещение в пакетах процедур ввода-вывода (для величин предопределенных типов) иллюстрирует табл. В.1.
Таблица В.1.Основные пакеты ввода-вывода
Имя пакета | Тип вводимых-выводимых величин |
Ada.Text_IO Ada.lnteger_Text_IO Ada.Float_Text_IO | Character, String Integer Float |
Для поддержки ввода-вывода величин других типов, определяемых пользователем, используются шаблоны (заготовки) пакетов — родовые пакеты. Родовой пакет перед использованием должен быть настроен на конкретный тип.
Как показано в табл. В.2, родовые пакеты ввода-вывода всегда находятся внутри пакета-библиотеки Ada.Text_IO.
Таблица В.2.Внутренние пакеты из пакета-библиотеки Ada.Text_IO
Имя родового пакета | Нужна настройка на тип |
Integer_IO Float_IO Enumeration_IO Fixed_IO Decimal_IO Modular_IO | Любой целый тип со знаком Любой вещественный тип с плавающей точкой Любой перечисляемый тип Любой двоичный вещественный тип с фиксированной точкой Любой десятичный вещественный тип с фиксированной точкой Любой целый тип без знака |
Для обращения к внутренним родовым пакетам используют составные имена, например Ada.Text_IO.Modular_IO, Ada.Text_IO.Enumeration _IO.
Процесс настройки родового пакета называют конкретизацией. В результате конкретизации образуется экземпляр родового пакета. Экземпляр помещается в библиотеку и может быть подключен к любой программе.
Конкретизация задается предложением следующего формата:
with <Полное имя родового пакета>;
package <Имя пакета-экземпляра> is
new <Имя родового пакета> (<Имя типа настройки>);
Например, введем перечисляемый тип:
Type Summer is ( may. jun, jul. aug );
Создадим экземпляр пакета для ввода-вывода величин этого типа:
with Ada.Text_IO.Enumeration_IO;
package Summer_IO is new Ada.Text_IO.Enumeration_IO (Summer);
Теперь пакет SummerJO может использоваться в любой программе.
Дата добавления: 2015-03-07; просмотров: 633;