Содержание

Назад Вперед

4. Структура программы

program :
{ part }+
part :
main-part
simple-part
part-function
main-part :
MAIN PART name-part . declaration-of-part
simple-part :
PART name-simple-part . declaration-of-part
part-function :
FUNCTION name-function [type-function] . declaration-of-function
declaration-of-part :
formal-parameters-of-part BEGIN body-of-part END PART
formal-parameters-of-part :
[ list-name ] [RESULT list-name]
declaration-of-function :
formal-parameters-of-function BEGIN body-of-part END PART
formal-parameters-of-function :
list-name
body-of-part :
{ element-of-part }*
element-of-part :
declaration .
operator .
iteration .

Программа на Норме состоит из одного или нескольких разделов. Разделы могут быть трех видов - главный раздел, простой раздел и раздел-функция, вид раздела определяется ключевыми словами MAIN PART, PART, FUNCTION соответственно.

Разделы могут вызывать друг друга по имени и передавать данные при помощи механизма формальных и фактических параметров, или через внешние файлы при помощи описаний INPUT и OUTPUT.

Для каждого раздела справедливо правило локализации: имена, описанные в разделе, локализованы в этом разделе; понятие глобальных переменных в языке отсутствует.

Главный раздел обязательно должен присутствовать в программе на Норме и быть единственным; формальных параметров он не имеет. Вызовы главного раздела, а также рекурсивные вызовы разделов запрещены.

В заголовке раздела указывается имя раздела и список формальных параметров. Формальные параметры должны быть описаны в теле раздела при помощи declaration-of-scalar-variables, declaration-of-variables-on-domains или declaration-of-external

Параметры-величины, указанные до ключевого слова RESULT в списке формальных параметров, являются исходными данными для вычислений, описываемых в разделе; параметры, перечисленные после - являются результатами вычислений. Один и тот же параметр не может быть одновременно исходным и результатом: это приводит к переприсваиванию значений переменным (повторному присваиванию), что запрещено в Норме. В разделе-функции ключевое слово RESULT не используется: результат вычисления функции связывается с именем и типом функции.

В теле раздела могут быть заданы описания, операторы и итерации (порядок их расположения, вообще говоря, произвольный - возможные ограничения определяются при описании входного языка транслятора). Пример заголовка главного раздела:

MAIN PART Linear . ! Variant of May 25 1998 :
! ======= linear approximation ========
! the case of axial symmetry for M=1 ;
! computation is being done on Beta angle for the point I=0 ;
! further for I=1,2*N values
! are being extended on symmetry for V,FI,DAVL .
BEGIN
body of part
END PART

Пример заголовка простого раздела:

PART IntFKP .
! Computation of integral from FKP function
! with interpolation of integral function
BETA,ALPHA, ! - node points
ALL,ALC,ALR, ! - points for interpolation
STEP, ! - integration step
FKP ! - name of integral function ! - result IntResult
RESULT IntResult
BEGIN
EXTERNAL FUNCTION FKP DOUBLE .
VARIABLE ALPHA,BETA,ALL,ALK,ALR,STEP,IntResult DOUBLE .
body of part
END PART

Содержание

Назад Вперед