В начальном состоянии ВМ переменная 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
Составной оператор