Основы программирования

Основы Ada 95 - Текстовый и числовой ввод-вывод
Индекс материала
Основы Ada 95
Текстовый и числовой ввод-вывод
Процедуры ввода
Основные операторы
Операторы цикла
Основные программные модули
Процедуры
Пакеты
Производные типы
Подтипы
Расширяемые типы
Все страницы
Текстовый и числовой ввод-вывод

 

Ada 95 — это язык для разработки программ реального мира, программ, которые могут быть очень большими (включать сотни тысяч операторов). При этом желательно, чтобы отдельный программный файл имел разумно малый размер. Для обеспечения такого ограничения Ada 95 построена на идее библиотек и пакетов. В библиотеку, составленную из пакетов, помещаются программные тексты, предназначенные для многократного использования.

Пакеты ввода-вывода

 

Пакет подключается к программе с помощью указания (спецификатора) контекста, имеющего вид

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 может использоваться в любой программе.