Cтраница 2
![]() |
Пример на языке flow. [16] |
Терри Брауна, преобразующая простые файлы описаний блок-схем в команды ГАТ К овского окружения picture. Этот язык позволяет соединять стрелками выбранного направления боксы, заключенные в рамки разной формы. Задание нескольких направлений осуществляется путем определения меток ( tags), помещения их в стек и последующего возвращения к ним. На рис. 1.17 показан пример диаграммы, построенной с помощью этого языка. [17]
Однако в ряде случаев возникает необходимость запрограммировать в данном операторе перехода выбор метки из некоторого перечня предусмотренных. Эту возможность дает именующее выражение, которое служит правилом для определения метки оператора. Метка является его частным случаем. В общем случае М необходимо считать именующим выражением, и только в результате его вычисления будет определена метка того оператора, который является преемником оператора перехода. [18]
Под данными понимают те объекты, с которыми будут работать операторы программы. В разделе описаний задаются имена данных, определяются их тип, возможные значения и области памяти, необходимые для размещения данных. Раздел описаний, в свою очередь, включает в себя следующие разделы: определения меток LABEL, определения констант CONST, определения типов TYPE, описания переменных VAR, описания процедур PROCEDURE и функций FUNCTION. Следование указанных разделов строго соответствует названному порядку. Любой из указанных элементов блока, за исключением заголовка, может быть опущен. [19]
Выражения в АЛГОЛе бывают трех классов: арифметические, булевы и именующие. Арифметические и булевы выражения представляют собой правила для вычисления числовых и логических значений соответственно, а именующие - правила для определения метки оператора. [20]
В этом примере процесс определения метки значительно упростился за счет того, что переключательный список был составлен только из меток. Все может значительно усложниться, если именующим выражением в переключательном списке будет, например, опять указатель переключателя, но уже другой, в описании которого опять встречаются именующие выражения. Но такие случаи не часты. В конце концов этот рекурсивный процесс определения метки, каким бы сложным он ни был, выполняется по описанным правилам и всегда заканчивается выбором конкретной метки. На практике переключательный список чаще всего состоит из меток. [21]
В третьем примере оператор после THEN отсутствует. Такой оператор называется пустым. Он вызывает те же действия, что и предыдущий. Пустой оператор никаких действий не выполняет. Другим примером пустого оператора является оператор N: END; назначение которого - определение метки N, используемой управляющим оператором для ссылки. [22]