Справочное руководство по языку Ада-83



              

Примечание 1



Примечание

В примерах этого раздела и в разд. 7 и 8 кавычки и строчная буква Ь не вводятся и не выводятся; они даны только для того, чтобы показать расположение и пробелы.

N : INTEGER; ... GET(N);

-— символы на входе

вводимая последовательность

значение N

bb-12535Ь

-12535

-12535

bb12_535Е1Ь

12_535Е1

125350

bb12_535Е;

12535Е

(нет) DATA_ERROR Возбуждено

Пример игнорирования параметра ширины:

PUT(ITEM => -23, WIDTH => 2); -- "-23"

Ссылки- вид 14.1, вид файла IN_FILE 14.1, вид файла OUT_FILE 14.1, исключение DATA_ERROR 14.4, исключение END_ERROR 14.4, исключение LAYOUT_ERROR 14.4, исключение MODE_ERROR 14.4, исключение STATUS_ERROR 14.4, максимальная длина строчки 14.3, номер столбца 14.3, номер страницы 14.3, номер строчки 14.3, параметр FORE 8, параметр WIDTH 143.5, 7, 14,3.9, признак конца страницы 14.1, признак конца строчки 14.1, пропуск 9, просмотреть 7, 8, 9, процедура GET 6, 7, 8, 9, процедура NEW_LINE 4, процедура PUT 6, 7, 8, 9, текущий файл по умолчанию 14.3, файл

6. ВВОД-ВЫВОД СИМВОЛОВ И СТРОК

Для элемента типа CHARACTER определены следующие процедуры:

procedure GET(FILE : in FILE_TYPE; ITEM : out CHARACTER); procedure GET(ITEM : out CHARACTER);

В заданном файле ввода процедуры пропускают признаки конца строчки и страницы и читают следующий за ними символ; значение этого символа возвращают параметру ITEM вида out.

При попытке пропустить признак конца файла возбуждается исключение END_ERROR.

procedure PUT(FILE : in FILE_TYPE; ITEM : in CHARACTER); procedure PUT(ITEM : in CHARACTER);

Если длина строчки заданного файла вывода ограничена (т. е. не равна нулю по соглашению), а текущий номер столбца превышает эту длину, то выполняют действия, эквивалентные вызову процедуры NEW_LINE с параметром SPACING, равным единице. Затем в любом случае в файл выводят заданный символ.

Для элемента типа STRING определены следующие процедуры:

procedure GET(FILE : In FILE_TYPE; ITEM : out STRING); procedure GET(ITEM : out STRING);

Определяют длину (число символов) данной строки; затем для последовательных символов строки соответствующее число раз выполняют операцию GET (в частности, для пустой строки никаких действий не выполняют).

procedure PUT(FILE : in FILE_TYPE; ITEM : in STRING); procedure PUT(ITEM : in STRING);

Определяют длину (число символов) данной строки; затем для последовательных символов строки соответствующее число раз выполняют операцию PUT (в частности, для пустой строки никаких действий не выполняют).

procedure GET_LINE(FILE : in FILE_TYPE; ITEM : out STRING; LAST : out NATURAL); procedure GET_LINE(ITEM : out STRING; LAST : out NATURAL);

Заменяют последовательные символы, содержащиеся в указанной строке, символами, читаемыми из заданного файла. Чтение заканчивается при достижении конца строчки файла;

в этом случае выполняют действия, эквивалентные действиям процедуры SKIP_LINE с пара- метром SPACING, равным единице. Чтение также заканчивается при достижении конца строки, заданной параметром ITEM. Символы, которые не были заменены, остаются неопределенными.

Если символы прочитаны, то в параметр LAST возвращается индекс последнего замененного символа так, что индексированная компонента ITEM (LAST) — это значение последнего замененного символа (индекс первого замененного символа равен атрибуту ITEM'FIRST). Если не было прочитано ни одного символа, то в LAST выдается значение индекса, на единицу меньшее атрибута ITEM'FIRST.

При попытке пропустить признак конца файла возбуждается исключение END_ERROR.

procedure PUT_LINE(FILE : in FILE.TYPE; ITEM : in STRING); procedure PUT_LINE(ITEM : in STRING);

Вызывают процедуру PUT для заданной строки, затем процедуру NEW_LINE с параметром SPACING, равным единице.

Примечание. Внешние кавычки строкового литерала, являющегося параметром процедуры PUT, не выводятся. Каждый сдвоенный символ кавычки, приведенный внутри такого литерала, выводится как один символ кавычки; это следует из правил для строковых литералов (см. 2.6).

Строка, считываемая процедурой GET или записываемая процедурой PUT, в файле может занимать несколько строчек.

Ссылки: длина строки 14.3, длина строчки 14.3, 5, исключение END_ERROR 14.4, признак конца страницы 14.3, процедура GET 5, процедура NEW_LINE 4, процедура PUT 4, строчка 14.3, текущий номер столбца 14.3, файл

7. ВВОД-ВЫВОД ДЛЯ ЦЕЛЫХ ТИПОВ

Описанные ниже процедуры определены в настраиваемом пакете INTEGER_IO. Он должен быть конкретизован с соответствующим целым типом (указанным в спецификации параметром настройки NUM).

Значения выводятся в виде десятичных литералов или литералов с основанием, без подчеркиваний и порядка, с предшествующим знаком минус для отрицательных чисел. Формат, определяющий ширину поля (включая ведущие пробелы и знак минус), может быть задан необязательным параметром WIDTH. Его значение принадлежит неотрицательному целому подтипу FIELD. Значения основания принадлежат целому подтипу NUMBER-BASE.

subtype NUMBER_BASE is INTEGER range 2 .. 16;

В процедурах вывода могут использоваться ширина поля и основание по умолчанию; они задаются переменными, описанными в настраиваемом пакете INTEGER_IO:

DEFAULT_WIDTH : FIELD := NUM_WIDTH; DEFAULT_BASE : NUMBER_BASE ;= 10;

Определены следующие процедуры:

procedure GET(FILE : In FILE_TYPE; ITEM : out NUM; WIDTH : in FIELD := 0); procedure GET(ITEM : out NUM; WIDTH : in FIELD := 0);

При нулевом значении параметра WIDTH пропускают все ведущие пропуски, признаки конца строчки и страницы, читают знак плюс или минус (если он есть), затем производят чтение в соответствии с синтаксисом целого литерала (он может быть литералом с основанием). При нулевом значении WIDTH вводят ровно WIDTH символов, или если раньше встретится признак конца строки, то вводят лишь символы до этого признака конца (возможно, ни одного); в это количество включаются и все ведущие пропуски.

В параметр ITEM типа NUM возвращают значение, соответствующее введенной последовательности.

Если введенная последовательность не соответствует правилам синтаксиса или если полученное значение не принадлежит подтипу NUM, то возбуждается исключение DATA_ERROR.

procedure PUT(FILE : in FILE_TYPE; ITEM : in NUM; WIDTH : in FIELD := DEFAULT_WIDTH; BASE : in NUMBER_BASE := DEFAULT_BASE);procedure PUT(ITEM : in NUM; WIDTH : in FIELD := DEFAULT_WIDTH; BASE : in NUMBER_BASE := DEFAULT_BASE);

Значение параметра ITEM выводят в виде целого литерала без подчеркиваний, порядка и ведущих нулей (если значение равно нулю, выводят один нуль), с предшествующим знаком минус, если значение отрицательное.

Если число символов выводимой последовательности меньше значения WIDTH, то она дополняется ведущими пробелами.

Если параметр BASE (заданный явно указанным значением или переменной DEFAULT_BASE) имеет значение десять, то числа выводятся по синтаксису десятичного литерала, в противном случае — по синтаксису литерала с основанием и всеми прописными буквами.

procedure GET(FROM : in STRING; ITEM : out NUM; LAST : out POSITIVE);

Читает с начала строки, заданной параметром FROM, целое значение по тем же правилам, что и процедура GET, которая читает целое значение из файла; при этом рассматривает конец строки как признак конца файла. Через параметр ITEM возвращает значение типа NUM, соответствующее введенной последовательности. Через параметр LAST возвращает значение индекса, соответствующее последнему читаемому символу (следовательно, этот символ имеет значение индексированной компоненты FROM(LAST)).

Если введенная последовательность не соответствует правилам синтаксиса или если полученное значение не принадлежит подтипу NUM, то возбуждается исключение DATA_ERROR.

procedure PUT(TO : out STRING; ITEM : in NUM; BASE : in NUMBER_BASE := DEFAULT_BASE);

Через параметр ТО выводит значение параметра ITEM по тем же правилам, что и при выводе в файл; в качестве значения параметра WIDTH используется длина указанной строки.









Содержание  Назад  Вперед