Next:1.2.2
Синтаксис и семантика
Up:1.2
Как можно определить язык Zonnon?
Previous:1.2
Как можно определить язык Zonnon?
Рассмотрим тривиальную задачу выдачи на устройство вывода текста приветствия. Законченная Zonnon-программа решения этой задачи может иметь следующий вид:
module ПервыйПример;
(* Программа приветствия*)
const Обращение = ' Друзья!';
Текст = ' Zonnon-программа приветствует Вас!';
begin
write(Обращение, Текст)
end ПервыйПример.
В программе семь строчек. Первая строчка -- это заголовок модуля. Он всегда начинается со слова module и содержит имя модуля (в данном случае ПервыйПример). Программист имеет широкую свободу при выборе имени модуля; именем модуля может быть практически любой идентификатор, отличный от зарезервированных слов. Напомним, что идентификатором называется последовательность букв и цифр, начинающаяся с буквы (при этом Zonnon при построении идентификаторов разрешает использовать в качестве буквы символ подчерка). Как правило, имя модуля выбирается программистом исходя из его содержания. Заметим, что в данном примере и в дальнейшем мы используем в именах русские буквы, хотя Zonnon допускает кириллицу только в комментариях.
Слово module зарезервировано в языке Zonnon для использования в заголовках модулей. В Zonnon имеется целый ряд зарезервированных слов — идентификаторов, которые не могут использоваться ни в каких иных целях в программе, кроме приписанных им языком; в рассмотренной программе таких слов четыре: module, begin, const, end. Любое из них нельзя использовать в качестве имени программы или какого-либо ее объекта (например, константы или переменной). Редактор среды Zonnon обычно выделяет зарезервированные слова цветом. В связи с этим в тексте книги эти слава выделены жирным шрифтом.
Первая строчка заканчивается особым разделителем -- точкой с запятой. Этот разделитель отделяет один смысловой фрагмент текста программы от другого.
Вторая строчка -- это комментарий. Комментарий используется для пояснения программы читателю и игнорируется транслятором. Комментарии можно вставить между любыми двумя символами в программе. Они имеют вид произвольных последовательностей литер, заключенных в скобки (* и *). Комментарии могут вкладываться одни в другие. Они не влияют на смысл программы. В тексте мы будем, как правило, выделять комментарии наклонным шрифтом (курсивом).
Третья и четвертая строчки -- это раздел описаний. Он содержит зарезервированное слово const, означающее, что здесь начало раздела констант и далее будут описаны одна или более констант. Константами в языке считаются такие информационные объекты программы, которые не могут изменить своего значения. Как и в обычной практике научно-технических расчетов (вспомним об известном нам со школы числе ), константа в языке Zonnon может иметь свое собственное имя. Как и имя других видов объектов Zonnon-программы, это имя может быть стандартным, т.е. быть зафиксированным в языке, или выбираться программистом и описываться в программе.
Описать константу в Zonnon -- это значит указать ее имя и значение. Такие указания содержатся в третьей и четвертой строчках программы, в которых определяются текстовые константы с именами Обращение и Текст. В качестве их значений рассматриваются строки символов, размещенные после знака равенства. Признаком того, что Обращение является текстовой константой служат два апострофа, обрамляющих строку, причем сами апострофы этой строке не принадлежат, а лишь указывают транслятору, что заключенные в них символы следует рассматривать как единое целое -- строку символов. Чтобы включить апостроф в строку, его надо повторить дважды (например, строку Зима'98 можно записать в виде 'Зима''98'). В нашем примере первая строка, являющаяся значением константы Обращение, начинается с трех пробелов и имеет длину 10, а вторая - начинается с одного пробела и имеет длину 36.
Пятая, шестая и седьмая строчки -- это операторная часть программы -- последовательность команд виртуальной машины, называемых операторами, заключенная в операторные скобки begin и end. В данном случае операторная часть содержит единственный оператор -- оператор обращения к стандартной подпрограмме вывода write со списком аргументов, состоящим из двух элементов -- имен констант Обращение и Текст; в результате работы оператора текст
Друзья! Zonnon-программа приветствует Вас!
выдается через стандартное устройство вывода: например, печатается на листе бумаги или высвечивается на экране монитора. В Zonnon-программе это устройство всегда представляется файлом, имеющим стандартное имя Output.
Процедура write относится к стандартным процедурам языка Zonnon. Стандартная процедура не нуждается в описании, она доступна любой программе, в которой содержится обращение к ней. Процедура write -- одна из немногих процедур языка Zonnon, при обращении к которым допускаются списки параметров разной длины. Элементы списка записываются в круглых скобках сразу за именем процедуры и перечисляются по порядку через запятую.
Завершает модуль зарезервированное слово end, за которым следует его имя и точка. Точка оповещает транслятор о конце текста модуля.
Рассмотрим программу, решающую несколько более сложную задачу вычисления удвоенной суммы двух заданных целых чисел.
module ВторойПример;
(* Вычисление удвоенной суммы двух целых
чисел *)
const Два = 2;
var A, B : integer;
Результат: Integer;
begin
read(A,B);
Результат:= Два(A
+ B);
write(Два, '(',A,'+',B,')=',
Результат)
end ВторойПример.
В отличие от первой программы ВторойПример работает не только с выходным файлом Output, но и с входным файлом Input (стандартным файлом ввода информации); предполагается, что перед началом исполнения в файле Input содержится последовательность, состоящая из двух целых чисел.
Тело этой программы уже состоит не только из раздела констант (в нем определена целочисленная константа Два со значением 2) и операторной части. Третья и четвертая строчки программы -- это раздел описаний переменных, начинающийся с зарезервированного слова var и состоящий из двух описаний трех переменных. По существу, переменные являются элементами памяти виртуальной машины. Каждая переменная имеет имя, тип и (текущее) значение. В программе ВторойПример однобуквенный идентификатор используется в качестве имени переменной, в которой запоминается значение первого слагаемого. Переменная с именем используется для хранения второго слагаемого, а в переменную Результат засылается удвоенное значение результата сложения с . Описания определяют идентификаторы , и Результат как имена переменных, а также резервируют место в памяти для хранения значений этих переменных. Кроме того, эти описания определяют, что все три переменные имеют тип Integer (целый), т.е. значением каждой из них может быть любое целое число, представимое в машине.
До исполнения операторной части, которая в данной программе состоит из трех операторов, значения переменных , и Результат не определены, т.е. их нельзя использовать раньше, чем они получат какое-нибудь значение.
Первый оператор -- это вызов стандартной подпрограммы read. Пусть во входном файле находятся числа 25 и 13. Тогда в результате первого шага текущим значением переменной (содержимым соответствующего элемента памяти машины) станет число 25, переменной -- число 13 (при другом заполнении файла Input переменные и могут получить другие значения -- те числа, удвоенную сумму которых требуется вычислить), а значение переменной Результат останется неопределенным.
Следующий оператор -- это оператор присваивания
Результат:= Два(A+В),
который состоит из переменной Результат, знака операции присваивания ":=" и выражения Два(A+B). В результате выполнения оператора присваивания число 76, являющееся значением выражения Два(A+В), станет текущим значением переменной Результат.
Последний оператор (он уже использовался в первом модуле) -- это вызов стандартной подпрограммы вывода, список параметров которого уже состоит не из двух, а семи элементов: константа Два, строка '*(', переменная , строка '+', переменная , строка ')=' и переменная Результат. Этот оператор не меняет значения переменных; в результате его работы осуществляется вывод текста, который с точность до пробелов будет иметь вид:
''2( 25 + 13)= 38''.
Next:1.2.2
Синтаксис и семантика
Up:1.2
Как можно определить язык Zonnon?
Previous:1.2
Как можно определить язык Zonnon?