В начальном состоянии ВМ переменная Input2 содержит входные данные Zonnon-программы (т.е. Input2 = Input), а Input1 и Output -- пустые слова.
В конечном состоянии ВМ значением переменной Output является последовательность результатов данного выполнения Zonnon-программы, а переменная Input2, как правило, хранит пустое слово, т.е. Input = Input1.
Чтение значений из входного файла осуществляется с помощью оператора
обращения к стандартной процедуре read, синтаксис которого изображен на
рис. 2.8
read(InDesignator {, InDesignator})
Рис. 2.8. Оператор обращения к стандартной процедуре ввода
Количество переменных в операторе (фактических параметров обращения) указывает, сколько входных значений должно быть одновременно прочитано при его однократном выполнении; при этом первое прочитанное значение присваивается первой переменной из списка параметров, второе -- второй переменной из списка параметров и т.д.
По существу, действие, изображаемое оператором read (X,), где -- непустой список переменных, совпадает с действием составного оператора
begin read(X); read() end,
а семантика оператора read(X) может быть описана следующим составным оператором:
begin X := Голова(Input2); Input1 := Input1 Голова(Input2); Input2 := Хвост(Input2) end.
Напомним (см. п. 1.1.1), что по определению и для любой непустой последовательности .
Для того, чтобы не возникало ошибки из-за попытки чтения при пуcтой последовательности Input2, в языке имеется стандартная функция Eof с результатом логического типа, выдающая значение True, если все значения входного файла уже прочитаны, т.е. если Input2 -- пустое слово, и значение False, если .
Печать значений (их запись в выходной файл Output) осуществляется с помощью оператора обращения к стандартной процедуре write, синтаксическая диаграмма которого изображена на рис. 2.8.
write (OutExpression {, OutExpression})
Рис. 2.8. Оператор обращения к стандартной процедуре вывода
Действие оператора обращения к процедуре write состоит в последовательном добавлении в конец выходной последовательности значений выражений, перечисленных в качестве фактических параметров.
Оператор write (E, ), где E -- выражение, а -- непустая последовательность выражений, равносилен составному оператору
begin write(E); write() end,
а действие оператора write(E) описывается оператором присваивания
Output := Output A,
где А обозначает изображение текущего значения выражения Е в виде последовательности.
В реальных устройствах вывода имеется возможность удобного размещения выходной информации на экране дисплея, листке бумаги и т.д. Частично такие средства имеются и в языке Zonnon.
Во-первых, предполагается, что помимо литерных значений, составляющих тип char, имеется специальная управляющая литера, называемая "конец строки". В отличие от букв или цифр, литера "конец строки" не печатается при работе реального устройства вывода, а управляет его работой. Включение литеры "конец строки" в выходной файл можно осуществить с помощью оператора обращения к стандартной процедуре writeln. Оператор writeln(), где -- непустая последовательность выражений, равносилен составному оператору
begin write(); writeln end.
Далее, список фактических параметров при обращении к процедуре write (или к процедуре writeln) образован из элементов вывода, каждый из которых может принимать один из следующих трех видов:
где -- выражение, которое задает выводимое значение литерного, целого, вещественного, логического типа или строку, а и -- целочисленные выражения, позволяющие управлять способом представления этого значения следующим образом.
Параметр определяет минимальное число литер, подлежащих выдаче (часто называемое "шириной поля"). Выводимое значение параметра преобразуется в последовательность литер, представляющую это значение в стандартной нотации. Она выводится непосредственно вслед за предыдущим выводом (без какого-либо разделения) если спецификация опущена. Если ширина поля присутствует, то при выводе последовательность литер, имеющая меньшую длину, чем , будет дополнена слева пробелами, а при большей длине будет выводиться так, как если бы параметр отсутствовал. Значения параметров ширины поля по умолчанию для write и writeln зависят от типа параметра следующим образом:
Параметр управляет печатью вещественных значений. Вещественные числа выводятся в плавающем формате, если отсутствует, и в формате с фиксированной точкой, если присутствует. Параметр задает число цифр, печатаемых после десятичной точки.
- char по умолчанию имеет размер 1,
- string по умолчанию имеет размер 4,
- boolean по умолчанию имеет размер 6,
- integer по умолчанию имеет размер 20,
- real по умолчанию имеет размер 20.
Next:2.2.6
Общий вид Zonnon-программ
Up:2.2
Выражения, операторы и функции
Previous:2.2.4
Составной оператор